我将标题传递给mail()函数时无法发送电子邮件

时间:2016-09-29 12:06:15

标签: php email

我正在尝试发送带有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));

2 个答案:

答案 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