【问题标题】:Sending to multiple Recipients using Sendgrid使用 Sendgrid 发送给多个收件人
【发布时间】:2015-03-19 12:33:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: java google-app-engine sendgrid


    【解决方案1】:

    实现中一定有一些变化,我正在使用 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" 设置在新的 Mail 对象上。
    【解决方案2】:

    如果您希望用户可以看到所有收件人列表,您可以为所有用户列表创建一个个性化设置:

    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);
    

    【讨论】:

      【解决方案3】:

      使用 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);
      

      【讨论】:

        【解决方案4】:

        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);
        

        【讨论】:

          【解决方案5】:

          我建议改为添加addCc() 方法。这样,您的所有收件人都将能够看到彼此的电子邮件地址。

          【讨论】:

          • appengine 文档链接到的库中没有 addCc() 方法。您是否建议我使用其他库。
          • 感谢您指出这一点。我将努力获得 PR 以实现该功能。
          猜你喜欢
          • 1970-01-01
          • 2012-01-12
          • 2017-03-04
          • 2012-10-23
          • 2018-11-09
          • 1970-01-01
          • 1970-01-01
          • 2014-02-06
          • 2016-12-08
          相关资源
          最近更新 更多