PHP将X-Msg附加到链接

时间:2012-10-25 22:53:36

标签: php html forms email hyperlink

我正在努力建立一个在线系统,人们可以在系统内发送潜在客户的HTML电子邮件......

除了当我使用富文本编辑器输入链接时,我已经完成了所有工作,并且源代码中的所有内容都很好,但是当我查看收件箱中的电子邮件时,该链接无效并且已更改为:

  

X-MSG:// 30 /%22http://example.com/%22

我不明白...

我认为这是html post函数的问题,因为我通过html表单和$_POST方法提交它...当我在下一页回应语句时,链接是 http://workwithmandy.co/%22http://phobes.com/%22 ,这很奇怪,因为系统所在网站的根目录是 http://workwithmandy.co/

关于为什么会这样做的任何想法?

以下是表单:

<form action="<?php echo $editFormAction; ?>" method="POST" name="form" id="sendemailform">
          <fieldset>
          <div class="emailtablecontainer">
          <table width="525" border="0" cellspacing="10">
  <tr>
    <td><label>To:</label></td>
    <td><select data-placeholder="Select Lead(s) To Email..." multiple="true" class="chzn-container-multi" name="selectleads"style="width:500px;">
            <?php
do {  
?>
            <option value="<?php echo $row_rsAllLeads['Email']?>"><?php echo $row_rsAllLeads['FullName']?></option>
            <?php
} while ($row_rsAllLeads = mysql_fetch_assoc($rsAllLeads));
  $rows = mysql_num_rows($rsAllLeads);
  if($rows > 0) {
      mysql_data_seek($rsAllLeads, 0);
      $row_rsAllLeads = mysql_fetch_assoc($rsAllLeads);
  }
?>
          </select></td>
  </tr>
  <tr>
    <td><label>Subject:</label></td>
    <td><input class="inputs" name="subjectfield" type="text"></td>
  </tr>
  <tr>
    <td><label>Message:</label></td>
    <td><textarea id="sendemailtextarea" name="messagefield"></textarea></td>
    <script>
    CKEDITOR.replace( 'sendemailtextarea',
    {
        toolbar : 'SendEmailToolbar'
    });
    </script>
  </tr>
</table>
</div>
<input class="submitemailbuttonsprite submitemailbutton1" name="submitemail" type="submit" value="Send Email(s)">
          </fieldset>
          <input type="hidden" name="MM_insert" value="form">
          </form>

以下是实际的Php代码:

<?php
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
    echo $_POST['messagefield'];
 $to = $_POST['selectleads'];
 $subject = $_POST['subjectfield'];
 $body = $_POST['messagefield'];
 $headers = "MIME-Version: 1.0\r\n"; 
 $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
 $headers .= "From: " . $row_rs_CurrentUser['FirstName'] . " " . $row_rs_CurrentUser['LastName'] . " <" . $row_rs_CurrentUser['Email'] . ">";
 if (mail($to, $subject, $body, $headers)) {
  } else {
   echo("<p>Message delivery failed...</p>");
  }
}
?>

1 个答案:

答案 0 :(得分:0)

我知道回答这个问题为时已晚。但它可能会帮助其他有需要的人。

这与电子邮件链接的PHP Prepends x-msg://不同。

实际上,电子邮件客户端会在x-msg://前加上该链接。因为他们将没有http://https://的链接作为无效URI。为了使其有效,他们将x-msg://添加到链接中。

请检查您的href链接中是否遗漏了http://https://

实施例: 第一个例子可能无法正常工作:

<a href="www.example.com">www.example.com</a> // x:msg:// may be prepended by some of the email clients

这肯定会正常工作:

<a href="http://www.example.com">www.example.com</a> // x:msg:// will not be prepended by any email client