2014-12-19 100 views
0

所以我試圖發送電子郵件使用當前版本的PHPMailer(https://github.com/PHPMailer/PHPMailer)。 SMTP連接和郵件發送工作正常,除了腳本沒有使用發件人郵件的「SetFrom」$ email變量,而是使用「用戶名」電子郵件。PHPMailer使用SMTP用戶名作爲發件人電子郵件地址

我試過使用多種形式的設置「從」郵件,似乎沒有任何工作,雖然重要的是要注意「SetForm」中的「名稱」設置得很好,但「電子郵件」不是。

下面的代碼:

$mail = new PHPMailer; 

    $mail->isSMTP();         
    $mail->Host = 'smtp.gmail.com';      
    $mail->SMTPAuth = true;        
    $mail->Username = 'USERNAME(MY EMAIL)';  
    $mail->Password = 'PASSWORD';      
    $mail->SMTPSecure = 'tls';       
    $mail->Port = 587; 

    $mail->isHTML(true); 

    $mail->SetFrom($email,$name); 
    $mail->addAddress($email_received);     

    $mail->Subject = $subject; 
    $mail->Body = $user_msg; 
+0

我就從它被創建時,它在'$ MAIL-> SetFrom被稱爲($電子郵件,$名)'的時候檢查'$ email'變量。基本上,'$ email'的值是否改變了腳本中的任何地方? –

+0

僅在調用SetFrom之前發出它,保持不變。 – WarSensation

+0

'$ email'是否遵循[email protected]格式? –

回答

0

這是一個常見的問題,問了很多次就在這裏。 gmail不允許你設置任意的發件人 - 如果你通過gmail發送郵件,你必須使用你的gmail地址或者預先配置的選項。有關此問題的Google文檔,請參閱here。通常,嘗試執行此操作是個壞主意,因爲它可能導致郵件無法通過地址所有者可能配置的SPF測試。

0

如果您檢查收到郵件的標題,您會發現您的SetFrom電子郵件ID定義爲X-Google-Original-From

這是因爲Gmail會自動重寫您的Gmail或谷歌Apps的電子郵件帳戶設置中的從你通過它的SMTP服務器默認發送的電子郵件的線「發送郵件as`電子郵件地址。

如果你真的想使用Gmail作爲電子郵件服務提供者,那麼你需要打開一個谷歌Apps帳戶,並確認您擁有您所使用的電子郵件ID域。

還有(建議但不是)針對此問題的解決方法:

在Gmail設置,進入「帳戶」選項卡,然後在Send mail as部分添加您擁有的其他電子郵件地址。這將導致Google的SMTP服務器將您所啓用的任何地址作爲默認地址Send mail as地址重新寫入發件人字段。在這裏,你需要輸入你域名的smtp設置。 因此,當您使用此設置發送電子郵件時,PHPMailer將連接到Gmail,Gmail將在發送任何電子郵件之前連接到您的SMTP服務器。

相關問題