[英]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.