2013-06-13 40 views
5

我正在使用gmail SMTP發送郵件的幫助下,phpmailer庫。它正在發送郵件,但它不是從我在SetFrom地址中設置的郵件地址發送的。這裏是我的代碼:SetFrom PHPMailer不能正常工作

<?php 
require 'phpmailer/class.phpmailer.php'; 
$mail = new PHPMailer; 

$mail->IsSMTP(); 
$mail->SMTPAuth = true; 
$mail->Host = "smtp.gmail.com"; 
$mail->Port = 587; 
$mail->Username = "[email protected]"; 
$mail->Password = "gmail_password"; 

$mail->From   = '[email protected]'; 
$mail->FromName  = 'Admin'; 
$mail->AddAddress('[email protected]', 'Receiver'); // Add a recipient 
$mail->IsHTML(true); 

$mail->Subject = 'Here is the Subject'; 
$mail->WordWrap = 50; 
$mail->Body = "This is in <b>Blod Text</b>"; 
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

if(!$mail->Send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
    exit; 
} 

echo 'Message has been sent'; 
?> 

它是由[email protected]發送郵件,但我想它與「[email protected]」發送的設置$ MAIL->從。任何幫助將不勝感激。

+1

你讀過谷歌有關[發送來自不同地址的電子郵件]的說法(https://support.google.com/mail/answer/22370?hl=zh-CN) – Anigel

+0

@Anigel:假設你正在聯繫形式和發送郵件與phpmailer。發件人地址將是用戶填寫電子郵件地址字段的內容,並且地址將是您的電子郵件ID。在這種情況下,每次從不同的用戶,從電子郵件將永遠是不同的。所以,我們需要在$ mail-> From中設置它。那就是我正在做的。我不認爲它有任何來自您鏈接文章的內容。 – prembaranwal

+5

我不認爲你已經閱讀過這篇文章,Google表示你只能從在你的谷歌帳戶中配置的地址發送。你不能以jo.bloggs登錄,並從jane.doe發送電子郵件如果你想做你剛纔描述的內容,那麼你不能使用Gmail SMTP,你將不得不使用一個不同的服務器,允許你發送任何人的電子郵件並且您將在許多郵件服務器上過濾或阻止垃圾郵件,因爲您的郵件服務器將無法匹配來自地址IE的用戶的正確郵件服務器,它將無法通過SPF檢查 – Anigel

回答

-2

升級到最新版本的PHPMailler。您還應該確保在oder中打開調試以查看錯誤消息。

$mail->SMTPDebug = 2; 

您將識別錯誤。另外請確保您的SMTP服務器憑據是正確的。像主機,用戶名和密碼。 礦井正常工作

4

是的,這是一個Google Mail限制。 「發件人」電子郵件地址必須與Google SMTP匹配或自動設置。

我的解決辦法是添加

$mail->AddReplyTo($FromEmail, $FromName); 

這樣,至少,如果你回覆的郵件將被傳遞描述

3

還有另一種方式,從在PHPMailer的地址集,這是更好支持的。我發現我使用phpmailer的服務器沒有將電子郵件從同一主機傳遞到另一臺服務器。但是,然後我改變了我如何設置地址,並解決了問題。

用途:

$mail->SetFrom('[email protected]', 'Admin'); 

,而不是$ MAIL->從和$ MAIL-> FROMNAME。

+0

100%工作謝謝! –

1

,如果你想使用不同的電子郵件地址作爲sentFrom,那麼你就可以從Gmail設置中設置電子郵件:

設置>帳戶和導入>發送郵件: 設置要爲從使用其他電子郵件:

如果您使用的是zoho,那麼您可以按照以下方式設置:>郵件標籤>發送郵件爲>從地址 添加,然後驗證該電子郵件。