我有一个网站,我发送确认邮件作为注册过程的一部分。
前段时间,由于我没有使用标题(php邮件功能),我发送的邮件有些麻烦。
一旦我放了一些标题,我就会收到更多来自用户的回复,但我怀疑并非所有邮件都到达目的地。
如何确定邮件到达目的地?
标题是否可以被视为“必须”?
这是我的SendMail功能的代码
mail($to,
$subject,
$message,
"MIME-Version: 1.0\n".
"Content-type: text/plain; charset=ISO-8859-1; format=flowder\n".
"Content-Transfer-Encoding: 8bit\n".
"Message-Id: <" . md5(uniqid(microtime())) . "@mysite.com>\n".
"Return-Path: <admin@mysite.com>\n".
"X-Mailer: PHP v".phpversion()."\n".
"From: admin@ mysite.com");
由于
答案 0 :(得分:4)
您应该使用外部库来处理PHP中的电子邮件,例如PhpMailer,SwiftMailer或Zend_Mail。你的所有问题都会消失。
答案 1 :(得分:3)
标题底部需要一个空白区域,以便将标题与主体分开。 像垃圾邮件刺客这样的工具会给你留下很大的印记。
此外,您应该使用\r\n
作为行终止符,而不仅仅是\n
应使用CRLF(\ r \ n)分隔多个额外标头。
答案 2 :(得分:1)
标题似乎对我很好。我看到的唯一故障是From头中有一个额外的空格。
我确定你已经检查过了,但以防万一......
"From: admin@ mysite.com");
should be (?)
"From: admin@mysite.com");
答案 3 :(得分:1)
这是我用于html邮件的工作邮件功能,并且变量$ return被定义为在邮件发送失败时从邮件服务器获取错误报告。
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= 'From: <'.$from.'>' . "\r\n";
$return = '-f'.$from;
@mail($to, $subject, $msg, $headers, $return);
您可以在此处查看更多详细信息sugunan.com
答案 4 :(得分:0)
标题看起来不错,除了@Eineki指出的细节。此外,如果您使用Windows,您需要以“user@mail.com”形式发送$ to param而不是“Username”,因为它可能会导致麻烦,因为在Windows平台上实现mail()函数的方式,“to”地址可能被错误解析。
答案 5 :(得分:0)
你应该添加一个Date:
标题(强制性为RFC5322),并且如果没有给出,则一些邮件客户端可能会将1970年1月1日视为电子邮件日期(并且它在所有标题之间丢失)其他旧消息。)