请帮助我,我在使用php mail()
发送带有html格式的邮件时遇到问题
我认为问题在于标题。我已经包含了两个标题,只有单引号或双引号:
标题1:
$headers = 'From: webmaster@example.com\r\n Reply-To: webmaster@example.com';
$headers .= '\r\nContent-Type: multipart/alternative; boundary="'.$random_hash.'"';
当我使用上面的单引号时,我的所有html代码都在邮件中打印为简单文本而没有正确的html格式。此外,我的标题显示在\r\n
缺失后所有内容都搞砸了。
标题2:
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com";
$headers .= "\r\nContent-Type: multipart/alternative; boundary=\"".$random_hash."\"";
使用这个,我得到一个完美的标题,但现在我的邮件被发送为空的附件。我没有来自哪里,因为我没有附上任何东西到我的邮件。
请建议做什么
答案 0 :(得分:5)
如果在PHP字符串上使用单引号,\ r \ n之类的转义字符将停止工作。
我不确定如何在没有更多背景的情况下帮助您的依恋。
答案 1 :(得分:4)
我不喜欢php邮件。我建议使用XpertMailer:http://www.xpertmailer.com/做得很好。
答案 2 :(得分:3)
答案 3 :(得分:0)
这是我在切换到phpmailer之前使用的。如上所述使用库。
// Make email headers
$separator = '--==Multipart_Boundary_'.md5(time());
$eol = PHP_EOL;
$filepath = "filename.pdf";
// open pdf file
$handle = fopen($filepath, "r");
// read pdf file
$f_contents=fread($handle,filesize($filepath));
// encode read pdf file
$attachment = chunk_split(base64_encode($f_contents));
// close pdf file
fclose($handle);
$message = "Text goes here";
// main header (multipart mandatory)
$headers = "MIME-Version: 1.0".$eol;
$headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"".$eol;
$headers .= "Content-Transfer-Encoding: 7bit".$eol;
$headers .= "X-Priority: 1 (Highest)".$eol;
$headers .= "X-MSMail-Priority: High".$eol;
$headers .= "Importance: High".$eol;
// message
$headers .= "--".$separator.$eol;
$headers .= "Content-Type: text/plain; charset=utf-8".$eol;
$headers .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$headers .= $message.$eol;
// attachment
$headers .= "--".$separator.$eol;
$headers .= "Content-Type: application/pdf; name=".$filename.$eol;
$headers .= "Content-Transfer-Encoding: base64".$eol;
$headers .= "Content-Disposition: attachment; filename=".$filename.$eol.$eol;
$headers .= $attachment.$eol.$eol;
$headers .= "--".$separator."--";
答案 4 :(得分:0)
如果您实际上没有定义具有多部分边界的两个版本(纯文本/ HTML),那么您应该将内容类型:multipart / alternative更改为邮件正文的正确内容类型。
此外,像PHPMailer等文库通常比PHP的本地mail()
函数更受欢迎,因为它们提供了更大的灵活性,同时不需要您手动构建复杂的标题。