繁体   English   中英

Postfix / PHP Mail()以相同的电子邮件地址发送电子邮件,忽略标头$ from

[英]Postfix / PHP Mail() sends email as same email address, ignores header $from

我们最近升级了Web服务器,遇到的第一个问题是由于网站托管在与公司交换服务器不同的服务器上,因此无法发送到同一域。 无论如何,我修复了一些简单的配置更改并禁用了域的邮件服务。

无论如何,这是行不通的,但是当我在网站上测试某些PHP邮件表单时,我没有注意到的是,它们都是作为我的电子邮件地址发送给客户端的。

这是PHP(我认为这不是问题)

<?php
    ini_set("sendmail_from", "noreply@******.com"); 

    $name       = $_POST['name'];
    $email      = $_POST['email'];
    $phone      = $_POST['phone'];
    $comments   = $_POST['comments'];
    $ip=$_SERVER['REMOTE_ADDR'];

    $recipient  = '*****@******.com';
    $subject    = "Comments submitted from the Contact Us form on www.wavesfm.com from $name" ;

    $message   = "This is an email submitted from the Contact Us form on the website www.*****.com containing details from $name \n";
    $message  .= "    \n";
    $message  .= "Name: $name \n";
    $message  .= "Email: $email \n";
    $message  .= "Phone Number: $phone \n";
    $message  .= "Comments: $comments \n\n\n";
    $message  .= "IP Address: $ip ";

    $headers   = "From: noreply@********.com \n";
    $headers  .= "Reply-To: $email";

    mail($recipient,$subject,$message,$headers);
    header( 'Location: http://www.*****.com/thanks.php' ) ; 
?>

谁能看到该代码的任何问题? 我尝试添加-fnoreply @ * * .com作为发送参数,但是它不会更改我自己的电子邮件地址,而不会显示为发件人。

我认为这不是PHP问题,似乎更像是Postfix问题,但真正困扰我的是发件人似乎没有使用我的电子邮件地址。

以前有没有人有经验? 和2周前一样,我根本没有使用过Postfix,所以对我而言,这是相当新的。

Web服务器:Cent OS,Plesk 11.0.9

邮件服务器:MS Exchange邮件服务器/使用ORF

一封电子邮件的Postfix日志

Mar 27 13:48:41专用postfix / pickup [12199]:652EFA106C5:uid = 48 from = Mar 27 13:48:41专用postfix / pickup [14376]:652EFA106C5:message-id = <20130327134841.652EFA106C5@dedicated.mydomain .com> 3月27日13:48:41专用postfix / qmgr [12198]:652EFA106C5:从=,大小= 726,nrcpt = 1(队列处于活动状态)3月27日13:48:41专用postfix / smtp [14378]:证书mail.mydomain.com [82.888.888.51]:25的验证失败:不可信的发行者/ CN = clientdomain-WAV01-CA 3月27日13:48:42专用的postfix / smtp [14378]:652EFA106C5:to =,relay = mail。 client_website.com [82.888.888.51]:25,延迟= 0.89,延迟= 0.04 / 0.01 / 0.36 / 0.48,dsn = 2.6.0,状态=已发送(250 2.6.0 <20130327134841.652EFA106C5@dedicated.mydomain.com> [ InternalId = 11846]已排队等待送达的邮件)3月27日13:48:42专用postfix / qmgr [12198]:652EFA106C5:已删除

以下代码可能存在一些字符串连接问题:

$headers = "From: noreply@********.com \n";

尝试

$headers = "From: noreply@********.com \r\n";

我建议使用phpmailer类来发送被广泛使用的电子邮件: https : //github.com/Synchro/PHPMailer

php.ini sendmail_from指令仅真正适用于Windows盒

sendmail_from字符串在Windows下从PHP发送的邮件中应使用“发件人:”邮件地址。 该指令还设置“ Return-Path:”头。

我认为这不是代码问题。 您从Linux机器上运行哪个用户来运行webserver + php环境? 如果您以自己的身份运行它,则可能是使用您的电子邮件地址提交给后缀。

如果您使用的是后缀,别忘了在/ var / log / maillog后面加上尾号,这可以告诉您很多信息并帮助您深入了解问题的根源。

sudo tail -f /var/log/maillog

您可以尝试使用Sendgrid注册一个免费帐户,并与PHPMailer, Zend Mailer或Symfony Mailer库一起使用该帐户发送电子邮件,看看是否遇到相同的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM