2016-06-21 100 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

这对我们有效...有点古怪,但它的工作!谢谢! –

相关问题