添加$ header时,不会发送使用php的电子邮件

时间:2013-06-19 03:02:07

标签: php

我尝试发送电子邮件目前工作正常。但是一旦我添加了这一行就不再发送电子邮件了。

$headers = "Content-Type: text/html; charset=ISO-8859-1\r\n";
mail("anton@sci5.com", $subject, $message, $from, $headers )

基本上,当我向$headers添加mail();时,它无法正常工作,但如果我删除了$header,它会发送我的邮件但是html没有呈现。

我做错了什么?

这是我的代码。

$subject = "E-newsletter Signup";

$message = "$todayis [EST] \n
            From: $firstname $lastname ($email)\n
            $firstname $lastname has subscribe for the ff. e-newsletters:\n
           " ;

if (!empty($ivpump1)) { $message .= "$ivpump1\n"; }
if (!empty($fetal1)) { $message .= "$fetal1\n"; }
if (!empty($biomed1)) { $message .= "$biomed1\n"; }

$message.= "<br /><br /><br />
            <p><b>From Webpage :</b> $fromWebpage </p>
            <p><b>From Google Keyword :</b> $refKeyword</p>
            <p><b>Referring Page :</b> $refPage</p>
            <p><b>From IP Address :</b> $endUserIP</p>";

$from = "From: $email\r\n";
$headers = "Content-Type: text/html; charset=ISO-8859-1\r\n";

mail("anton@gmail.com", $subject, $message, $from, $headers );
header("Location: http://www.site.com/thank-you-settings.html");

4 个答案:

答案 0 :(得分:0)

您需要查看邮件功能http://www.php.net/manual/en/function.mail.php

的签名

mail($to,$subject,$message, $headers)。你正在调用它。

$headers需要:

$headers = "From: me@me.com\r\n";
$headers .= "Content-Type: text/html; charset=utf-8\r\n";

答案 1 :(得分:0)

'header'和'from'必须是同一个变量的一部分,试试这个:

<?php
$mime_boundary=md5(time());
$headers .= 'From: My Email <me@company.com>' . "\n";
$headers .= 'MIME-Version: 1.0'. "\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"".$mime_boundary."\"". "\n"; 

$msg .= "--".$mime_boundary. "\n";
$msg .= "Content-Type: text/plain; charset=iso-8859-1". "\n";
$msg .= "Content-Transfer-Encoding: 7bit". "\n\n";
$msg .= $textmessage . "\n\n";

$msg .= "--".$mime_boundary. "\n";
$msg .= "Content-Type: application/pdf; name=\"".$filename."\"". "\n";
$msg .= "Content-Transfer-Encoding: base64". "\n";
$msg .= "Content-Disposition: attachment; filename=\"".$filename."\"". "\n\n";
$msg .= chunk_split(base64_encode($doc)) . "\n\n";
$msg .= "--".$mime_boundary."--". "\n\n";

mail("anton@sci5.com", $subject, $msg ,$headers );

?>

在您发送PDF的示例中,您可以发送图片或任何其他文件,只需发送正确的"Content-Type:类似申请/ pdf for pdf

更多信息:http://rob.sun3.org/archives/107

答案 2 :(得分:0)

尝试在引号中From: $from\r\n之前的标题中添加Content-Type,并在调用mail函数时删除from参数。除非你在php.ini中设置默认的from,或者使用additional_parameters参数(第五个),如果要设置'from'值,该函数有四个必需参数,最后一个其中headers。您的from似乎满足headers参数的要求,但是一旦添加第五个参数,您就错误地使用了该函数。

答案 3 :(得分:0)

  1. 更正邮件的签名功能。

    mail($to,$subject,$message, $headers)
    
  2. $ header需要:

    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    
  3. 使用php的Html电子邮件的一个很好的例子:       http://css-tricks.com/sending-nice-html-email-with-php/

  4. 如果html渲染现在不起作用,那么原因是:

    很遗憾,许多电子邮件客户端都不尊重标头中的html或css文件。 一切都需要内联。 gmail和outlook也会出现此问题。