后缀/ PHP邮件()发送电子邮件作为相同的电子邮件地址,忽略来自

问题描述:

头$我们最近升级了网络服务器和我们遇到了第一个问题有,因为该网站是在不同的主机发送到同一个域的问题服务器到公司的交换服务器。无论如何,我修复了这是一些简单的配置更改,并禁用该域的邮件服务。后缀/ PHP邮件()发送电子邮件作为相同的电子邮件地址,忽略来自

无论如何,这是不工作,但什么,当我在测试网站上的一些PHP邮件形式我没有在当时注意到的是,他们都面临被作为我的电子邮件地址给客户端。

这是在PHP(我不认为这是一个问题)

<?php 
    ini_set("sendmail_from", "[email protected]******.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: [email protected]********.com \n"; 
    $headers .= "Reply-To: $email"; 

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

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

我不认为这是一个PHP的问题,这似乎更像是一个Postfix的问题,而是什么真正困扰我的是如何未在任何地方使用我的电子邮件地址显示为发送方。

有没有人有此之前的经验吗?和前两周一样,我还没有使用过Postfix,所以它对我来说都很新颖。

Web服务器:美分OS之外,Plesk 11.0.9

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

Postfix的日志中的电子邮件的

03月27日13点48分41秒的一个专用后缀/拾取[12199]:652EFA106C5:uid = 48 from = Mar 27 13:48:41专用后缀/清除[14376]:652EFA106C5:message-id = < [email protected]> Mar 27 13:48:41专用postfix/qmgr [12198]:652EFA106C5:from =,size = 726,nrcpt = 1(队列有效) 03月27日13时48分41秒专用后缀/ SMTP [14378]:证书验证失败mail.mydomain.com [82.888.888.51]:25:不可信发行者/ CN = clientdomain-WAV01-CA 03月27日13时48分: 42专用后缀/ SMTP [14378]:652EFA106C5:为=,中继= 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 < [email protected]> [InternalId = 11846]排队等待传递邮件) 03月27日13时48分42秒专用后缀/ QMGR [12198]:652EFA106C5:除去

可能有一些字符串连接问题,用下面的代码:

$headers = "From: [email protected]********.com \n"; 

尝试

$headers = "From: [email protected]********.com \r\n"; 

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

+0

+1用于指出正确的行分割序列。在这里定义:http://www.ietf.org/rfc/rfc2821.txt – scones 2013-03-27 13:40:24

+0

+1推荐phpMailer。我真的不明白为什么有这么多人在PHPMailer等替代品存在并使生活变得如此简单时继续使用PHP内置的可怕内置'mail()'函数。 – Spudley 2013-03-27 13:41:33

+0

这并没有改变任何东西,我应该提到的一件重要的事情是它不仅仅是作为我的电子邮件出现的“发件人”字段,也是它的答复,这很奇怪。但也不知道它从哪里得到我的电子邮件地址,因为我没有设置Web服务器,我以root身份登录,并且我的电子邮件没有输入到服务器的任何地方,就像它以某种方式记住它,而没有我告诉服务器我的电子邮件我完全难住。我们还没有实现PHP邮件类,因为该网站是古老的,他们不想为工作付费。 – Sam 2013-03-27 13:53:11

在php.ini sendmail_from指令才真正适用于窗户框

sendmail_from串在Windows下从PHP发送的邮件 中应该使用哪个“From:”邮件地址。该指令还设置 “返回路径:”标题。

我不认为这是一个代码问题。你在Linux机器上运行哪个用户的webserver + php环境?如果你正在运行它,那么它可能会使用你的电子邮件地址提交给postfix。

如果您使用的是postfix,请不要忘记尾部/ var/log/maillog,它可以告诉您很多信息并帮助您了解问题的底部。

sudo tail -f /var/log/maillog

你可以尝试注册一个免费账户Sendgrid并配上PHPMailer的,Zend Mailer或Symfony的邮件程序库,用它来发送邮件,看看你是否得到了同样的问题。