我正在尝试使用mail()
PHP
功能发送电子邮件。我一直工作,直到我试图给它一个“用户注册”的主题,然后邮件没有发送!
继承代码(大大简化了代码)
$to = $this->post_data['register-email'];
$message = 'Hello etc';
$headers = 'From: noreply@example.com' . "\r\n" ;
$headers .= 'Content-type: text/html; chareset=iso-8859-1\r\n';
$headers .= 'From: Website <admin@example.com>';
mail($to, 'User Registration', $message, $headers);
我还尝试使用包含文本字符串但不起作用的变量。
为什么在添加主题例外时不发送邮件?
由于
编辑:更新的代码仍无法正常工作
$to = $this->post_data['register-email'];
$message = 'Hello etc';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= 'From: Website <admin@example.com>';
mail($to, 'User Registration', $message, $headers);
答案 0 :(得分:8)
在你的第4行,你正在使用'
来处理它里面的所有内容,所以更改
$headers .= 'Content-type: text/html; chareset=iso-8859-1\r\n';
要强>
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
并在评论中提及将chareset
更改为charset
修改强>
如果您根据documentation发送txt / html邮件,则在标题中设置mime,请尝试此操作
$to = $this->post_data['register-email'];
$message = 'Hello etc';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= 'From: Website <admin@example.com>' . "\r\n";
mail($to, 'User Registration', $message, $headers);
如果它仍然无效,您可以尝试调试代码,只需添加
即可error_reporting(E_ALL);
ini_set('display_errors', '1');
在页面顶部,然后从那里拿走,如果你仍然无法自己解决它,请在这里发布,我会尽力帮助你。
答案 1 :(得分:5)
我在大多数项目中使用此代码
$subject = 'subject';
$message = 'message';
$to = 'user@gmail.com';
$type = 'plain'; // or HTML
$charset = 'utf-8';
$mail = 'no-reply@'.str_replace('www.', '', $_SERVER['SERVER_NAME']);
$uniqid = md5(uniqid(time()));
$headers = 'From: '.$mail."\n";
$headers .= 'Reply-to: '.$mail."\n";
$headers .= 'Return-Path: '.$mail."\n";
$headers .= 'Message-ID: <'.$uniqid.'@'.$_SERVER['SERVER_NAME'].">\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Date: '.gmdate('D, d M Y H:i:s', time())."\n";
$headers .= 'X-Priority: 3'."\n";
$headers .= 'X-MSMail-Priority: Normal'."\n";
$headers .= 'Content-Type: multipart/mixed;boundary="----------'.$uniqid.'"'."\n\n";
$headers .= '------------'.$uniqid."\n";
$headers .= 'Content-type: text/'.$type.';charset='.$charset.''."\n";
$headers .= 'Content-transfer-encoding: 7bit';
mail($to, $subject, $message, $headers);
答案 2 :(得分:-1)
我建议使用PHP_EOL而不是\ r \ n或\ n,因为换行符将由您的环境确定......
$headers = 'MIME-Version: 1.0' . PHP_EOL;
等等......希望这可能最终解决你的问题!