2013-09-22 71 views
0

我有一個商業系統,將發送電子郵件給客戶「從」添加他們的代理。發送電子郵件,從標題錯誤的郵件()

添加新代理時,自動創建[email protected]。所以我希望我的電子郵件來自CompanyName - Agent郵件。這是我想處理這個問題:

$headers = "From:".$companyname." ".$Agentmail."\r\n"; 
$headers = "Reply-To:".$Agentmail."\r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

不過,我得到的電子郵件從「用戶」(用戶@服務器),而reply-to是正確的,上面列出。如果我刪除reply-to,則它工作正常,收件箱中的電子郵件將顯示爲公司名稱,打開時將顯示公司名稱(Agentmail),但這些電子郵件不會發送到@hotmail地址,這是一個巨大的問題。

在您建議我完全按照PHPMailer的方式將我的郵件方法切換爲某種東西之前,請考慮下面用於發送電子郵件的方式,它可能不符合您的建議。謝謝!

完整的郵件代碼:

ob_start(); 
include("./email/mailtemplate.php"); 
$message = ob_get_clean(); 
$body = strtr($content, $replaceWord); 
$headers = "From:".$companyname." ".$Agentmail."\r\n"; 
$headers = "Reply-To:".$Agentmail."\r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
mail($email, $subject, $message, $headers); 

我贊同$body內mailtemplate.php,因爲它需要一些解析等Mailtemplate.php簡直是HTML電子郵件模板。

感謝

+0

我實現了PHPMailer,將在一秒內發佈解決方案。到達任何收件箱,包含所有信息。 =) –

+0

應該是'$ headers。=「回覆:」'(注意'。=') – Petah

+0

謝謝@Petah,我很高興知道我重拍了我的電子郵件,因爲我錯過了一個小點!:D無論如何,我想最好使用PHPMailer。 –

回答

0

好了,如許,這裏是用PHPMailer的,以避免錯誤的方法。如果你不知道PHPMAiler是否適合你,請相信我,我有同樣的問題,但它非常容易使用。

下面的代碼

$mail = new PHPMailer; 
    $mail->isSMTP(); 
    $mail->Host = "localhost"; 
    $mail->SMTPAuth = true;        
    $mail->Username = $Agentmail;       
    $mail->Password = $smptpass; 
    $mail->From = $Agentmail; 
    $mail->FromName = $companyname; 
    $mail->addAddress($email, $CustomerFullName); 
    $mail->addReplyTo($Agentmail, $fullname); 
    $mail->isHTML(true); 
    $mail->Subject = $subject; 
    $mail->Body = $body; 
    $mail->altBody = $altBody; 
    if(!$mail->send()) { 
    header("location:errorpage.php"); 
    } 

好了,這些都是變數。它工作完美。有一件事,如果你正在製作一個商業系統,而且你擔心以純文本的形式將密碼存儲在數據庫中,那麼你也應該這樣做!在存儲它們並對它們進行解密之前對它們進行加密,然後再將它們用於PHP Mailer。

對於上面的代碼,我先解密密碼:

$cipher = new Cipher('encrypt'); 
$smptpass = $cipher->decrypt($cipheredpass); 

對於這一點,PHPMailer的工作,你需要兩個文件:

require_once "./PHPMailer/class.phpmailer.php"; 
require_once "functions.php"; 

PHPMailer的存儲在文件夾中具有相同名稱對我而言,所以要改變你的路,無論你放在哪裏。至於functions.php中,這裏是如何處理加密/解密:

<?php 
class Cipher { 
    private $securekey; 
    function __construct($textkey) { 
     $this->securekey = md5($_SERVER['SERVER_ADDR']); 
    } 
    function encrypt($input) { 
     return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->securekey, $input, MCRYPT_MODE_ECB)); 
    } 
    function decrypt($input) { 
     return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->securekey, base64_decode($input), MCRYPT_MODE_ECB)); 
    } 
} 
?> 

正如你所看到的,我使用$_SERVER皮卡的環境變量,系統將在各種機器來主持,所以我需要總是存在的東西。之後呢,我只是爲了額外的安全。你可以把任何你想要的作爲你的鑰匙,這真的沒關係,我試圖避免在多個系統上擁有相同的鑰匙。您無需在任何地方存儲密鑰。如果你有這樣的functions.php文件,下面介紹如何進一步使用它:

$cipher = new Cipher('encrypt'); 
$variable = $cipher->encrypt($input); // For encrypting 

$cipher = new Cipher('decrypt'); 
$variable = $cipher->decrypt($input); // For decrypting