代码之家  ›  专栏  ›  技术社区  ›  jrharshath

php邮件“from”头有问题

  •  28
  • jrharshath  · 技术社区  · 15 年前

    我正在建立一个网站,当用户注册时,它会发送电子邮件给他。

    我的代码(要点):

    <?php
    $to = "helloworld@gmail.com";
    $subject = "Test mail";
    $message = "Hello! \nThis is a simple email message.";
    
    $headers = "From: munged@gmail.com";
    $headers .= "\r\nReply-To: munged@gmail.com";
    $headers .= "\r\nX-Mailer: PHP/".phpversion();
    
    mail($to,$subject,$message,$headers);
    
    echo "Mail Sent.";
    ?> 
    

    问题是,当邮件传递时,发件人头仍保留 munged@box123.bluehost.com ,而reply-to将更改为指定的值。

    box123.bluehost.com 是承载网站的服务器的主机名。

    我做错了什么?我该怎么做才能使“发件人”地址与“答复收件人”地址相同?

    是我做错了什么,还是网络主机犯规了?

    8 回复  |  直到 7 年前
        1
  •  54
  •   Pekka    15 年前

    编辑:我刚注意到,您正试图使用gmail地址作为“发件人”值。 这个不行 而ISP正在重写它。如果要将答复重定向到传出邮件,请使用 reply-to .

    与许多ISP一起工作的有效地址的解决方法:

    尝试将第五个参数添加到 mail() 命令:

    mail($to,$subject,$message,$headers,"-f your@email.here");
    
        2
  •  20
  •   Machavity Labib Hussain    10 年前

    原来海报的服务器(Bluehost)有 a FAQ concerning this very question .

    第206条。


    这是因为我们的服务器要求您(或您的脚本)使用电子邮件头中格式正确、有效的“发件人:”字段。如果“发件人:”字段格式不正确、为空或CPanel中不存在电子邮件地址,则“发件人:”地址将更改为 username@box###.bluehost.com .

    必须更改正在使用的脚本才能正确使用有效的 From: header.

    应起作用的头的示例如下:

    发件人:user@domain.com
    发件人:“user”<user@domain.com>

    不起作用的标题示例:

    发件人:“user@domain.com”
    发件人:user@domain.com
    发件人:user@domain.com<user@domain.com>

    我们的服务器不会接受电子邮件地址和电子邮件地址相同的名称。它不会接受电子邮件地址的双重声明。

    对于joomla和wordpress这样的脚本,您需要按照它们的文档来正确格式化from字段。WordPress需要从插件发送邮件。

    注意:您使用的电子邮件地址必须是 cPAND。

        3
  •  13
  •   Eugine Joseph    7 年前

    我也有同样的问题,我查看了php.net网站。找到了正确的格式。
    这是我更新的代码。

    $headers = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= 'From:  ' . $fromName . ' <' . $fromEmail .'>' . " \r\n" .
                'Reply-To: '.  $fromEmail . "\r\n" .
                'X-Mailer: PHP/' . phpversion();
    

    这个 \rn 应该在 双引号(“) 本身 单引号(') 不起作用。

        4
  •  4
  •   Luís Guilherme    15 年前

    为了防止网络钓鱼,一些邮件服务器阻止重写。

        5
  •  1
  •   Rvenca    13 年前

    我意识到这是一条老路,但自从我昨天搬到Bluehost后,我也遇到了同样的问题。它可能不是选定的答案,但我支持Bluehost文章206回复。

    我在控制面板中创建了一个有效的电子邮件,并将其用作我的“发件人”地址,它工作正常。

        6
  •  1
  •   Ana DEV    10 年前

    我通过在CPanel中添加电子邮件帐户以及在类似这样的字段的头中添加相同的电子邮件来解决这个问题。

    $header = 'From: XXXXXXXX <test@test.org>' . "\r\n";
    
        7
  •  0
  •   symcbean    15 年前

    网络主机并不是真的在犯规。这并不是严格按照规则——但与一些旨在防止垃圾邮件的惊人发明相比,这并不是一个特别糟糕的发明。

    如果你真的想从“@gmail.com”发送邮件,为什么不使用gmail smtp服务呢?如果您不能重新配置运行PHP的服务器,那么有很多电子邮件包装工具可以让您指定一个自定义的smtp中继phpmailer。

    C.

        8
  •  0
  •   Stefan    7 年前

    邮件头在我的共享主机上不起作用,原因是我在邮件头中使用了我的hotmail电子邮件地址。 我在我的CPanel上创建了一封电子邮件,我在邮件头上设置了相同的电子邮件,是的,它就像一个魅力!

     $header = 'From: ShopFive <site@mysite.org>' . "\r\n";
    
    推荐文章