无法通过gmail api向多个发件人发送电子邮件

时间:2014-08-20 22:49:18

标签: ios gmail-api google-schemas

我们在iOS上使用新的gmail api发送电子邮件,一切都适用于单个收件人的邮件。当我们在" to"中指定多个字段,我们收到以下错误:

Error Domain=com.google.GTLJSONRPCErrorDomain Code=400 "The operation couldn’t be completed. (Invalid to header)

我已经验证了我们发送的内容实际上是有效的rfc822消息。

5 个答案:

答案 0 :(得分:0)

您应该在字段中使用列表。

E.g。 :

[ "liz6beigle@hotmail.com",
  "another.one@email.com" ]

Gmail可以同时发送退款限额和收件人。

您无法在单个字符串下存储多个电子邮件。 在每一行放置一个电子邮件地址将提供更好的可读性并防止解析错误。

以下是Google提供的Java代码示例。我希望它能帮助其他人理解:

 /**
   * Create a MimeMessage using the parameters provided.
   *
   * @param to Email address of the receiver.
   * @param from Email address of the sender, the mailbox account.
   * @param subject Subject of the email.
   * @param bodyText Body text of the email.
   * @return MimeMessage to be used to send email.
   * @throws MessagingException
   */
  public static MimeMessage createEmail(String to, String from, String subject,
      String bodyText) throws MessagingException {
    Properties props = new Properties();
    Session session = Session.getDefaultInstance(props, null);

    MimeMessage email = new MimeMessage(session);
    InternetAddress tAddress = new InternetAddress(to);
    InternetAddress fAddress = new InternetAddress(from);

    email.setFrom(new InternetAddress(from));
    email.addRecipient(javax.mail.Message.RecipientType.TO,
                       new InternetAddress(to));
    email.setSubject(subject);
    email.setText(bodyText);
    return email;
  }

Gmail API : Sending Messages

检查第一个代码示例。

答案 1 :(得分:0)

这是一个回归,但我们在2014-08-25星期一完成了部署修复。

答案 2 :(得分:0)

我认为您可以执行以下操作

获取'To'字段   “test1 @ example.com,test2 @ example.com”

然后用','

拆分它
String mail1 = "test1@example.com";
String mail2 = "test2@example.com";

然后这样做

email.addRecipient(javax.mail.Message.RecipientType.TO,
                   new InternetAddress(mail1));
email.addRecipient(javax.mail.Message.RecipientType.TO,
                   new InternetAddress(mail2));

我查了一下 它起作用了

答案 3 :(得分:0)

您可以使用逗号分隔的电子邮件并遍历这些电子邮件

    Properties props = new Properties();
    Session session = Session.getDefaultInstance(props, null);

    MimeMessage email = new MimeMessage(session);
    Multipart multiPart = new MimeMultipart("alternative");
    email.setFrom(new InternetAddress(from));


    String to = "xyz@gmail.com,sjaksks@gmail.cm,hysrtt@gmail.com";
    String[] split = to.split(",");
    for(int i=0;i<split.length;i++) {
        email.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(split[i]));
    }


    email.setSubject(subject);

    MimeBodyPart textPart = new MimeBodyPart();
    textPart.setText(text, "utf-8");

    MimeBodyPart htmlPart = new MimeBodyPart();
    htmlPart.setContent(html, "text/html; charset=utf-8");

    multiPart.addBodyPart(textPart);
    multiPart.addBodyPart(htmlPart);
    email.setContent(multiPart);
    return email;

答案 4 :(得分:-1)

我与gmail团队进行了交流,他们确实确认这实际上是他们的api的错误。不知道什么时候会被修复,因为他们没有提供任何更多的细节,但它们在他们的雷达上。