我们最近升级了我们的网络服务器,我们遇到的第一个问题是发送到同一个域时遇到问题,因为该网站托管在公司的交换服务器的不同服务器上。无论如何,我修复了一些简单的配置更改并禁用域的邮件服务。
无论如何,这不起作用,但当我在网站上测试一些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
其中一封电子邮件的后缀日志
3月27日13:48:41专用后缀/拾音器[12199]:652EFA106C5:uid = 48 from = 3月27日13:48:41专用后缀/清理[14376]:652EFA106C5:message-id =&lt; 20130327134841.652EFA106C5@dedicated.mydomain.com> 3月27日13:48:41专用postfix / qmgr [12198]:652EFA106C5:from =,size = 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,status =已发送(250 2.6.0&lt; 20130327134841.652EFA106C5@dedicated.mydomain.com> [InternalId = 11846]已排队的邮件) 3月27日13:48:42专用postfix / qmgr [12198]:652EFA106C5:已删除答案 0 :(得分:2)
以下代码可能存在一些字符串连接问题:
$headers = "From: noreply@********.com \n";
试
$headers = "From: noreply@********.com \r\n";
我建议使用phpmailer类发送广泛使用的电子邮件: https://github.com/Synchro/PHPMailer
答案 1 :(得分:0)
php.ini sendmail_from指令仅适用于Windows框
sendmail_from string应该在邮件中使用“From:”邮件地址 在Windows下从PHP发送。该指令还设置了 “Return-Path:”标题。
我认为这不是代码问题。哪个用户在Linux机器上运行webserver + php环境?如果你自己运行它,那么它可能会使用你的电子邮件地址提交到postfix。
如果您正在使用postfix,请不要忘记tail / var / log / maillog,这可以告诉您很多并帮助您解决问题的根源。
sudo tail -f /var/log/maillog
您可以尝试使用Sendgrid注册一个免费帐户,并与PHPMailer,Zend Mailer或Symfony Mailer库一起使用该帐户发送电子邮件,看看您是否遇到同样的问题。