2013-03-27 59 views
1

頭$我們最近升級了網絡服務器和我們遇到了第一個問題有,因爲該網站是在不同的主機發送到同一個域的問題服務器到公司的交換服務器。無論如何,我修復了這是一些簡單的配置更改,並禁用該域的郵件服務。後綴/ 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:除去

回答

2

可能有一些字符串連接問題,用下面的代碼:

$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

0

在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的郵件程序庫,用它來發送郵件,看看你是否得到了同樣的問題。

相關問題