当我尝试通过javamail api发送邮件时,发往收件人的邮件被转为垃圾邮件。原因如下 BASE64_LENGTH_79_INF
和MIME_HTML_ONLY
public void sendEmail(String to, String subject, String body, File filename ) {
String Host = "ip";
java.util.Properties props = new java.util.Properties();
props.put("mail.smtp.host", Host);
javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(props, null);
mailSession.setDebug(true);
MimeMessage message = new MimeMessage(mailSession);
try {
message.setFrom(new InternetAddress("some@email"));
InternetAddress[] address = {new InternetAddress(to)};
message.setRecipients(Message.RecipientType.TO, address);
message.setSubject(subject);
BodyPart messageBodyPart = new MimeBodyPart();
// Now set the actual message
messageBodyPart.setContent(body, "text/html; charset=utf-8");
// Create a multipar message
Multipart multipart = new MimeMultipart();
// Set text message part
multipart.addBodyPart(messageBodyPart);
// Part two is attachment
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
System.out.println("-----------------------------------");
System.out.println(filename.getName());
messageBodyPart.setFileName(filename.getName());
multipart.addBodyPart(messageBodyPart);
// Send the complete message parts
message.setContent(multipart);
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (MessagingException ex) {
ex.printStackTrace();
}
有办法通过吗?
谢谢你了
MIME_HTML_ONLY里面有介绍。我想从我的站点发送HTML邮件,但Outlook将它们标记为垃圾邮件。
如果您对邮件正文部分进行base64编码,JavaMail使用的是一个 每行76字节的默认值. 尽量在附加信息主体部分之前对其进行base64编码。