使用适用于Android的Gmail客户端API发送电子邮件会因错误而退回

时间:2016-02-27 21:11:42

标签: android email gmail gmail-api mime-message

客户端库提供了在Gmail.Users.Messages.Send

下创建电子邮件请求的构造函数
protected Gmail.Users.Messages.Send(java.lang.String userId, Message content)
protected Gmail.Users.Messages.Send(java.lang.String userId,
                     Message content, com.google.api.client.http.AbstractInputStreamContent mediaContent)

当我使用第一个时,我使用以下代码将MimeMessage翻译为gmail.model.Message类型:

Message createMessage(MimeMessage mimeMessage) throws MessagingException, IOException {
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    mimeMessage.writeTo(bytes);
    String encodedEmail = Base64.encodeBase64URLSafeString(bytes.toByteArray());
    Message message = new Message();
    message.setRaw(encodedEmail);
    return message;
}

并成功发送电子邮件。

另一方面,当我有一个大附件时,我使用第二个(可恢复上传)构造函数并将MimeMessage转换为InputStreamContent并使用null作为第二个参数但是消息反弹并显示错误:

An error occured. Your message was not sent.
------=_Part_0_987504577.1456605774444
Content-Type: text/html; charset="UTF-8"
Content-

(当我使用没有附件的第二个构造函数时,结果是相同的)

以下是MimeMessage(没有附件以简化):

From: mail@mail.com
Reply-To: mail@mail.com
To: mail@mail.com
Message-ID: <235235322.1.1456605773066@localhost>
Subject: subject
MIME-Version: 1.0
Content-Type: multipart/mixed; 
    boundary="----=_Part_0_987504577.1456605774444"

------=_Part_0_987504577.1456605774444
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 7bit

body
------=_Part_0_987504577.1456605774444--

由于在使用第一个构造函数时它已成功发送,我假设以下之一:

  1. 第一个构造函数添加了缺少的属性,第二个构造函数不是
  2. 当我使用秒构造函数(但是......什么?发送数据)时,我想念一些东西

0 个答案:

没有答案