使用Sendgrid发送邮件给多个收件人

7

我正在尝试使用SendGrid给多个收件人发送测试邮件。我使用以下内容作为起点:https://github.com/sendgrid/sendgrid-google-java

我希望所有接收邮件的用户在收到邮件时都能看到TO字段上的所有其他用户。使用mail.addTo API将邮件发送给所有用户,但是邮件会单独发送给每个用户(他们看不到消息发送给了谁)。

我的基本用例是向几个用户发送电子邮件,并且他们应该能够“回复所有”并开始相互交流。我如何在appengine/sendgrid/java中实现这一点?

5个回答

7

实现方面一定有所改变,我使用的是sendgrid-java-3.1.0.jar。

我的代码:

Mail mail = new Mail();
...
Personalization p1 = new Personalization();
p1.addTo(new Email("someone@gmail.com"));
p1.addBcc(new Email("someone.else@gmail.com"));
mail.addPersonalization(p1);

这似乎按照预期工作。


如何使用个性化方式添加“from”? - Swapnil B.
"from" 被设置在新的邮件对象上。 - Neill

3
如果您希望用户能够看到所有收件人列表,您可以为所有用户列表创建一个个性化设置:
var mail = new Mail();
var personalization = new Personalization();
personalization.addTo(new Email(email1@example.com), name1));
personalization.addTo(new Email(email2@example.com), name2));
mail.addPersonalization(personalization);

如果您想让用户只能看到自己的信息 - 您可以为每个收件人指定个性化设置:

var mail = new Mail();
var personalization1 = new Personalization();
personalization1.addTo(new Email(email1@example.com), name1));
var personalization2 = new Personalization();
personalization2.addTo(new Email(email2@example.com), name2));
mail.addPersonalization(personalization);

2

使用 Sendgrid v3 API。

为了实现这一点-将多个 to_email 地址添加到 Personalization 对象中,然后将 Personalization 添加到 Mail 对象中。

 Mail mail = new Mail();
 ....
 String[] toEmails = {"test1@gmail.com","test2@gmail.com","test3@yopmail.com"};      
 Personalization personalization = new Personalization();

 for (int i = 0, size = toEmails.length; i < size; i++) {
    personalization.addTo(new Email(toEmails[i]));             
 }
 mail.addPersonalization(personalization);

1

Sendgrid允许您通过创建不同的个性化对象,向多个用户同时发送邮件。 您只需要为每个用户创建一个个性化对象,并设置所需的字段。 然后将个性化添加到邮件中并发送该邮件。 您可以参考以下代码:

    DynamicTemplatePersonalization personalization = null;
    Email from = new Email("from-email");

    Mail mail = new Mail();
    for (UserModel admin : admins) {
        personalization = new DynamicTemplatePersonalization();
        personalization.addTo(new Email(admin.getEmail()));
        personalization.addDynamicTemplateData("admin_first_name", admin.getFirstName());
        personalization.addDynamicTemplateData("admin_last_name", admin.getLastName());
        mail.addPersonalization(personalization);
    }
    mail.setFrom(from);

0
我建议您使用addCc()方法来代替。这样,所有收件人都能够看到彼此的电子邮件地址。

从appengine文档链接的库中没有addCc()方法。您建议我使用其他库吗? - user3670859
谢谢指出。我会努力提交 PR 来实现那个函数。 - Andrei Stangacianu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接