【问题标题】:Is my email header correct?我的电子邮件标题是否正确?
【发布时间】:2010-10-23 12:44:05
【问题描述】:

以下“发件人”标头是否不正确?

    // To send HTML mail, the Content-type header must be set
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    // Additional headers
    $headers .= 'From: Mail Master <mail@mailmaster.com>' . "\r\n";
if(sendEmailNow($email, $subject, $body, $headers)){

我从我的邮件服务器收到错误消息。它说“来自错误的邮件:语法错误”。

感谢大家的帮助。

更新

我已将 SendEmailNow 函数简化为以下内容,但我得到了同样的错误:

//send an email
function sendEmailNow($email, $subject, $body, $headers){

    if (mail($email, $subject, $body, $headers)) {
      ##check email
      ##code to say email sent - compare with the number registered
      return true;
     }

     else {
      ##code to report an error 
      return false;
     }

 }

更新 2

问题解决了。我正在使用 PHP 5 的 Windows 机器上运行它。就像选择的正确答案和 cmets 所说的一样。一些邮件服务器无法理解我之前的内容。但对我有用的是:

$headers .= 'From: mail@mailmaster.com' . "\r\n";

【问题讨论】:

    标签: php mime


    【解决方案1】:

    Google 搜索错误消息表明某些 SMTP 服务器无法解析 From 标头的语法。可以试试下面的语法排除这种可能性吗?

    From: mail@mailmaster.com
    

    【讨论】:

    • 这很可能是罪魁祸首,特别是如果 PHP 在 Windows 下运行;数量惊人的 SMTP 服务器无法处理(完全有效的)First Last &lt;email&gt; 语法。
    • 我已经看到了“First Last” 形式的语法。尝试在名称周围加上双引号。
    【解决方案2】:

    除非正文为空,否则您可能需要额外的 CRLF 来终止标头。在不知道 API 的情况下,我不能说更多。

    【讨论】:

    • 我尝试了额外的 CRLF,我仍然得到相同的语法错误。 API 是什么意思?
    • 可能是 sendEmailNow 函数。那是什么代码?
    • 啊,我明白了。它与 mail() 函数完全相同 - 它只是首先检查电子邮件的格式是否正确。
    【解决方案3】:

    不确定这是否有帮助,但这是我的 Python 应用程序中纯文本的输出标头:

    内容类型:多部分/替代; 边界="10.254.26.130.1.1364.1241389770.060.1" 发件人:用户 1 收件人:User2 ,User3 主题:实际主题 MIME 版本:1.0 --10.254.26.130.1.1364.1241389770.060.1 内容类型:文本/纯文本; charset="us-ascii" 内容传输编码:quoted-printable 从这里开始的实际文本内容...

    同样,在不知道所有内容/标题的情况下很难说,但我猜要么 a) 您在内容之前遗漏了尾随 CRLF,或者 b) 较早的标题之一缺少其 CRLF。

    如果这将您带入了一个非常错误的方向,我们深表歉意。 :)

    【讨论】:

      【解决方案4】:
      From: "User1" <user1@domain1.com>
      

      From 标头的名称部分需要引号。

      【讨论】:

        【解决方案5】:

        如果您在表单中设置“$userEmail”变量,您可以从他们那里得到它并回复。 $email_id 是您的电子邮件地址。

                $to=$email_id;
                $headers = "From: " . strip_tags($userEmail) . "\r\n";
                $headers .= "Reply-To: ". strip_tags($userEmail) . "\r\n";
        

        【讨论】:

          猜你喜欢
          • 2011-09-16
          • 2011-04-10
          • 1970-01-01
          • 2012-03-24
          • 1970-01-01
          • 1970-01-01
          • 2017-05-16
          • 2013-09-10
          • 1970-01-01
          相关资源
          最近更新 更多