邮件标题

时间:2009-03-04 08:55:38

标签: php email

我有一个网站,我发送确认邮件作为注册过程的一部分。

前段时间,由于我没有使用标题(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");

由于

6 个答案:

答案 0 :(得分:4)

您应该使用外部库来处理PHP中的电子邮件,例如PhpMailerSwiftMailerZend_Mail。你的所有问题都会消失。

答案 1 :(得分:3)

标题底部需要一个空白区域,以便将标题与主体分开。 像垃圾邮件刺客这样的工具会给你留下很大的印记。

此外,您应该使用\r\n作为行终止符,而不仅仅是\n

From PHP.net

  

应使用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日视为电子邮件日期(并且它在所有标题之间丢失)其他旧消息。)