我们最近升级了我们的网络服务器,我们遇到的第一个问题是发送到同一个域有问题,因为网站托管在公司的交换服务器不同的服务器上。无论如何,我确定这是一些简单的配置更改和禁用邮件服务的域。
无论如何,这是不工作,但我没有注意到的是,当我在网站上测试一些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的问题,它似乎更像是一个后缀的问题,但真正困扰我的是我的电子邮件地址,没有使用任何地方出现作为发件人。
有人有过这样的经历吗?就像2周前一样,我根本没有使用后缀,所以它对我来说很新。
Web Server: Cent OS, Plesk 11.0.9
邮件服务器:MS Exchange邮件服务器/Using ORF
邮件的后缀日志
Mar 27 13:48:41 dedicated postfix/pickup[12199]: 652EFA106C5: uid=48 from=Mar 27 13:48:41 dedicated postfix/cleanup[14376]: 652EFA106C5: message-id=<20130327134841.652EFA106C5@dedicated.mydomain.com>Mar 27 13:48:41 dedicated postfix/qmgr[12198]: 652EFA106C5: from=, size=726, nrcpt=1 (queue active)Mar 27 13:48:41 dedicated postfix/smtp[14378]: certificate verification failed for mail.mydomain.com[82.888.888.51]:25: untrusted issuer/CN=clientdomain-WAV01-CAMar 27 13:48:42 dedicated postfix/smtp[14378]: 652EFA106C5: to=, relay=mail.client_website.com[82.888.888.51]:25, delay=0.89, delayed =0.04/0.01/0.36/0.48, dsn=2.6.0, status=sent (250 2.6.0 <20130327134841.652EFA106C5@dedicated.mydomain.com> [InternalId=11846]等待发送的排队邮件)Mar 27 13:48:42 dedicated postfix/qmgr[12198]: 652EFA106C5: removed
以下代码可能存在一些字符串连接问题:
$headers = "From: noreply@********.com 'n";
试
$headers = "From: noreply@********.com 'r'n";
我推荐使用phpmailer类来发送电子邮件,它被广泛使用:https://github.com/Synchro/PHPMailer
php.ini sendmail_from指令实际上只适用于windows box
sendmail_from string哪个"From:"邮件地址应该在邮件中使用在Windows下从PHP发送。该指令还设置网络:"头。
我不认为这是代码问题。哪个用户在你的Linux机器上运行webserver+php环境?如果你以自己的身份运行它,那么它可能会使用你的电子邮件地址提交后缀。
如果你使用后缀,不要忘记跟踪/var/log/maillog,这可以告诉你很多,并帮助你找到问题的根源。
sudo tail -f /var/log/maillog
你可以尝试注册一个免费帐户Sendgrid和PHPMailer, Zend Mailer或Symfony Mailer库使用它来发送电子邮件,看看你是否得到同样的问题