【问题标题】:PHP mail() function not using "from" address [duplicate]PHP mail()函数不使用“发件人”地址[重复]
【发布时间】:2010-10-26 19:40:32
【问题描述】:
$to = "me@mydomain.com";
$subject = "Auction Registration Confirmation";
$from = "From: donot-reply@mydomain.com";
$body = "Test Message";
if (mail($to, $subject, $body, $from)) {
    echo("<b>Message sent</b>");
    header( "Location: http://www.mydomain.com/thankyou.html" );
}  else {
    echo("<b>Message failed</b>");
}

现在的问题是,当发送电子邮件时,发件人地址不是我需要的,而是服务器登录名。

关于将服务器登录名替换为发件人电子邮件 ID 的任何想法。

【问题讨论】:

    标签: php email


    【解决方案1】:

    您的 PHP 代码看起来没有任何问题 - 我有非常相似的代码在做同样的工作,而且运行良好。

    您的电子邮件设置可能有错误配置?

    【讨论】:

    • 假设所有管理都完成的服务器,登录名是“admin”。代码很好,但问题是发送电子邮件时,它会将发件人地址显示为“admin”,而不是 do-not-reply@mydomain.com
    • 是的,我明白这个问题。 8-) 当我说“我的类似代码工作正常”时,我的意思是我正在将“发件人:”行传递给 PHP mail() 命令,就像您正在做的那样,并且电子邮件到达时带有正确的发件人标头.
    • 你能给我一个解决方案吗
    【解决方案2】:

    PHP 邮件功能依赖于在您的服务器上运行的 MTA。我敢打赌,您的 MTA 已设置为将 $from 变量强制设置为您的登录名。

    【讨论】:

    • @pete 解决方案是使用不同的 MTA,或编辑您的 MTA 设置。
    • @unknown,我知道我已经编辑了 MTA 设置,但是是什么以及如何编辑?
    【解决方案3】:

    你试过了吗?它对我很好

    <?php
    $to = "email@to.com";
    $subject = "subject";
    $message = "message";
    $from = "email@from.com";
    $headers = "From: $from";
    mail($to,$subject,$message,$headers);
    echo "Mail Sent.";
    ?> 
    

    【讨论】:

      【解决方案4】:

      你可以试试

      mail($to, $subject, $body, $from, "-f $from");
      

      这适用于某些配置,具体取决于服务器设置。 否则,按照上面的建议编辑您的 MTA 设置,或者完全跳过 mail() 并使用直接连接到 SMTP 服务器的 PHPmailer 类。

      【讨论】:

        猜你喜欢
        • 2014-09-22
        • 2012-05-31
        • 1970-01-01
        • 1970-01-01
        • 2015-11-20
        • 1970-01-01
        • 1970-01-01
        • 2017-11-05
        • 2014-03-24
        相关资源
        最近更新 更多