我正在尝试使用 Gmail API 在 Java 中创建带有附件的草稿。
创建一个基本的草稿是有效的,所以我已经消除了任何权限问题。我在这里使用代码作为灵感,但无法让它发挥作用。
这是我到目前为止所做的:
public String generateGmailDraft(EmailRequestDto emailRequestDto, String quoteId)
throws MessagingException, IOException, GeneralSecurityException {
// The attachment is a PDF file
AttachmentDto lastQuoteData = getLastQuotePdfData(quoteId);
MimeMessage email = createMimeMessage(emailRequestDto, lastQuoteData);
Message messageWithEmail = createMessageWithEmail(email);
Draft draft = new Draft();
draft.setMessage(messageWithEmail);
// this works
Gmail gmail = gmail(googleGmailCredentialProperties);
log.debug("attempting to send mail");
draft = gmail.users().drafts().create(emailRequestDto.getFrom(), draft).execute();
log.debug("Draft id: {}", draft.getMessage().getId());
log.debug(draft.toPrettyString());
return draft.getMessage().getId();
}
从 Google 示例中,我创建了一个 MIME 消息,但这可能是问题所在:
/**
* Create a MimeMessage using the parameters provided
* @return the MimeMessage to be used to send email
* @throws MessagingException
*/
private MimeMessage createMimeMessage(EmailRequestDto requestDto, AttachmentDto attachment)
throws MessagingException, IOException {
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
MimeMessage email = new MimeMessage(session);
email.setFrom(new InternetAddress(requestDto.getFrom()));
email.addRecipient(javax.mail.Message.RecipientType.TO, ew InternetAddress(requestDto.getTo()));
email.setSubject(requestDto.getSubject());
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setHeader("Content-Type", "multipart/alternative");
}
慕工程0101907
相关分类