从 Throlle 为上述答案添加更新。
上面有一些差异,可能与更高版本的gmail api不同
发送消息并遵循他们默认提供的标准发送标准电子邮件:
这是在 grails 中,但您可以轻松更改为 java,此 html 内容之前的控制器内容可以是 found here。也许当我完成我正在做的事情并有机会使用所有这些示例更新 github 站点时:
在控制器sendHTMLEmail:
def sendHTMLEmail() {
String emailBox='me@gmail.com'
String to ='someuser@domain.com'
String html="<html><body><table><tr><td><b>aa</b></td><td>bb</td></tr></table><h1>html content</h1></body></html>"
MimeMessage content = gmailService.createHTMLEmail(to,emailBox,'gmail test','testing gmail via app',html)
def message = gmailService.sendMessage(gmail,'me',content)
render "=== ${message.id}"
}
服务中createHTMLEmail
public static MimeMessage createHTMLEmail(String to, String from, String subject, String text, String html) {
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))
email.addRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(to))
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
}
然后他们的标准提供sendMessage(以下位可以在github链接上找到):
public static Message sendMessage(Gmail service,String userId,MimeMessage emailContent) throws MessagingException, IOException {
try {
Message message = createMessageWithEmail(emailContent)
message = service.users().messages().send(userId, message).execute()
return message
} catch (Exception e) {
//log.error "${e}"
}
}
和 createMessageWithEmail
public static Message createMessageWithEmail(MimeMessage emailContent) throws MessagingException, IOException {
ByteArrayOutputStream buffer = new ByteArrayOutputStream()
emailContent.writeTo(buffer)
byte[] bytes = buffer.toByteArray()
String encodedEmail = Base64.encodeBase64URLSafeString(bytes)
Message message = new Message()
message.setRaw(encodedEmail)
return message
}