我正在尝试发送带有HTML内容的电子邮件,每当我传递任何类型的标头时,方法mail()
都会返回false但没有标题我会得到真的..任何线索?
$to = $user->email;
$name = $user->first_name.' '.$user->last_name;
$from = $this->config->item('admin_email', 'ion_auth');
$subject = $this->config->item('site_title', 'ion_auth') . ' - ' . $this->lang->line('email_forgotten_password_subject');
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: ' . $name . ' <' . $from .'>' . " \r\n" .
'Reply-To: '. $from . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$retval = mail ($to,$subject,$message,$headers);
die(var_dump($retval));
答案 0 :(得分:0)
确保变量$name
,$from
,$to
,$subject
具有正确的数据且不为空/ null。您的代码正常运行,应该发送电子邮件。
如果仍然无效,请检查后缀上的配置或您正在使用的其他邮件服务器。
我建议使用PhpMailer或SwiftMailer而不是简单的邮件功能。
答案 1 :(得分:0)
尝试在最后一个标题后添加CRLF
。曾经在过去为我工作过。
即,
...
$headers .= 'From: ' . $name . ' <' . $from .'>' . " \r\n" .
'Reply-To: '. $from . "\r\n" .
'X-Mailer: PHP/' . phpversion() . "\r\n";
...
此外,标题Content-Type
的首字母为T
。有时,这些微不足道的事情也可能会破坏它。这就是为什么每个人都建议远离它。
应该这样做。
建议:切换到PHPMailer。