2016-06-21 49 views
1

我試圖讓批量發送工作通過SMTP,但即使我發送給多個收件人,並且我已指定用戶變量(並且變量是在發送的電子郵件中成功替換),每個收件人都顯示在收件人的結果郵件的收件人:欄中。MailGun與收件人變量的SMTP批處理髮送顯示收件人字段中的所有收件人

每MailGun對Batch Sending文檔...

警告:它採用批量發送也使用收件人變量時是非常重要的。這告訴Mailgun向每個收件人發送單個電子郵件,其中只有他們的電子郵件在收件人字段中。如果不使用,所有收件人的電子郵件地址將顯示在每個收件人的收件人字段中。

這裏是我的SMTP頭的一個例子...

To: [email protected], [email protected] 
X-Mailgun-Recipient-Variables: { 
    "[email protected]": 
    { 
     "id":"12345", 
     "email":"[email protected]", 
     "first_name":"Foo" 
    }, 
    "[email protected]": 
    { 
     "id":"45678", 
     "email":"[email protected]", 
     "first_name":"Bar" 
    } 
} 

得到的電子郵件應該只顯示在每封郵件一個收件人欄。我錯過了什麼嗎?

+0

林好奇,你有沒有找到解決這個? – nilsi

+0

@nilsi,還沒有。 MailGun聲稱你必須把'%recipient%'放到「收件人」字段中,但一直沒能通過PHP的'mail()'函數使它成功工作,因爲它讓人感到脾氣暴躁,認爲它不是電子郵件並附加了東西在將它傳遞給MailGun之前。 –

+0

有沒有更新?我在這裏與mailgun交談:https://wordpress.org/support/topic/sending-multiple-emails-2/#post-8614364但迄今爲止還沒有運氣。 – raison

回答

0

我也沒有成功實現此功能。我放了一封郵件麻煩票。以下是他們迴應的精髓:

我們文檔中的「警告」實際上只針對API,而不是SMTP。原因在於,在使用API​​時,我們會創建/創建電子郵件,並允許我們的服務爲「收件人:」字段中的每個收件人分隔並創建一封新電子郵件。當使用SMTP時,我們只是將消息與提交給我們服務的內容中繼,但我們實際上並沒有從頭開始創建消息MIME。

要解決此問題,您可以在收件人:字段中輸入%收件人%。這將在與我們的服務器進行SMTP會話期間爲「RCPT TO」中指定的每個地址創建單獨的消息。現在,這是事情有點棘手,因爲我不熟悉ASP SMTP連接器開始顯示在這裏。在我的研究中,我還沒有找到使用ASP SMTP連接器指定RCPT TO的方法。它似乎依賴於您在「輸入」中輸入的內容,而不提供指定「收件人:」字段和「RCPT收件箱」字段的方法。

當我嘗試使用收件人%作爲%的變量,其內置的方法引發錯誤,"CDO.Message.1 error '8004020c' At least one recipient is required, but none were found."我不熟悉的其他郵件程序,但我會感到驚訝,如果任何將允許這個結構。

+0

謝謝。我從MailGun得到了類似的響應,就像你在'%recipient%''在PHP的To域中工作仍然不成功。唉... –

1

我昨天開始搞這個,我想我找到了一個解決方案。

訣竅是將To:地址留空並將收件人添加到BCC行。之後,添加一個自定義標題 - 收件人:%收件人%。 $ mail-> send()不會投訴,並且收到的電子郵件中的收件人:字段只顯示個人收件人的電子郵件。

代碼示例:

$mail = new PHPMailer(); 

$mail->isSMTP(); 
$mail->Host = 'smtp.host'; 
$mail->SMTPAuth = true; 
$mail->Username = 'yourUserName'; 
$mail->Password = 'yourPassword'; 
$mail->SMTPSecure = 'tls'; 

$mail->From = '[email protected]'; 
$mail->FromName = 'John Doe'; 

$mail->addBCC('[email protected]'); 
$mail->addBCC('[email protected]'); 

$headerLine = $mail->headerLine('X-Mailgun-Recipient-Variables', '{"[email protected]": {"first":"FooBar1", "id":1}, "[email protected]": {"first":"FooBar2", "id": 2}}'); 
$mail->addCustomHeader($headerLine); 

$headerLine = $mail->headerLine('To','%recipient%'); 
$mail->addCustomHeader($headerLine); 

$mail->Subject = 'Hello, %recipient.first%!'; 
$mail->Body = 'Hello %recipient.first%, Your ID is %recipient.id%.'; 

if(!$mail->send()) 
{ 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} 
else 
{ 
    echo 'Message has been sent'; 
} 
+1

這對我們有效...有點古怪,但它的工作!謝謝! –

相關問題