2012-11-20 70 views
1

我知道我在這裏做了一些愚蠢的事情,但我無法弄清楚。我使用以下發送郵件:PHP sendmail地址顯示不正確

$headers = "MIME-Version: 1.0 
    From: ".$from_email." 
    Bcc: ".$bcc_email." 
    "; 
    mail($email, $message['subject'], $message['content'], $headers); 

其中$from_email = '[email protected]'

消息從地址來通過與錯。下面的完整標題:

Return-path: <[email protected]> 
Envelope-to: [email protected] 
Delivery-date: Tue, 20 Nov 2012 11:01:34 -0500 
Received: from cli by [email protected] with local (Exim 4.69) 
    (envelope-from <[email protected]>) 
    id 1TaqGI-000232-IJ 
    for [email protected]; Tue, 20 Nov 2012 11:01:26 -0500 
To: [email protected] 
Subject: Fairway Solutions - Your new password 
MIME-Version: 1.0 
     From: [email protected] 
     Bcc: [email protected] 
Message-Id: <[email protected]> 
From: [email protected] 
Date: Tue, 20 Nov 2012 11:01:22 -0500 

煩人,我可以看到從通過正確的到來,但它就像收到與主機的信息覆蓋。我在服務器級別丟失了什麼?

我也嘗試在php.ini文件(ini_set(sendmail_from,[email protected]);)中設置它,它沒有區別。

TA

+0

相關:http://stackoverflow.com/questions/179014/how-to-change-envelope-從地址使用PHP的郵件http://stackoverflow.com/questions/2229435/how-do-i-set-the-from-address-in-a-php-contact-form – twodayslate

+0

我通常使用PHPMailer來從PHP腳本發送電子郵件,使用^^ – Naryl

回答

2

你可以嘗試加入除了報頭,如X-發件人:

$headers = 'Content-type: text/html; charset=iso-8859-1' . "\n"; 
$headers .= 'MIME-Version: 1.0' . "\n"; 
$headers .= "From: $sender<" . $sender . ">" . "\r\n"; 
$headers .= "X-Sender: $sender<" . $sender . ">" . "\n"; 
$headers .= "X-Mailer: PHP " . phpversion() . "\n"; 
$headers .= "X-Priority: 3" . "\n"; 
$headers .= "X-Sender-IP: " . $_SERVER['REMOTE_ADDR'] . "\n"; 
$headers .= "Return-Path: $sender<" . $sender . ">" . "\r\n"; 
$headers .= "Reply-To: $sender<" . $sender . ">" . "\r\n"; 
+0

立即嘗試。愚蠢的問題:是否有將$ $頭分爲不同行的原因?我問,因爲我在郵件客戶端讀取'\ r \ n'的郵件客戶端的成功率爲50/50 – TH1981

+0

我認爲郵件客戶端解析郵件的方式確實有所不同,但我並不真誠地知道。這是php.net如何顯示他們的示例代碼。 –

+0

謝謝。添加額外的頭文件已經工作了,儘管它仍然在頭文件中的收到信息中顯示了主機名,但它不會覆蓋該頭文件。 ta – TH1981