javax.mail 和附件的问题
Issue with javax.mail and attached file
我想用 javax.mail 发送电子邮件。
它适用于 ubuntu 14.04 和 java 1.8。0_121 和 tomcat7
使用 ubuntu 18.04 和 java 1.8.0_181 和 tomcat8 我收到此错误:
Caused by: java.io.IOException: "text/html" DataContentHandler
requires String object, was given object of type class
javax.mail.internet.MimeMultipart
这是代码:
MimeMessage mex = new MimeMessage(session);
mex.setFrom(new InternetAddress(from));
mex.addRecipient(RecipientType.TO, new InternetAddress((String)((List)ccList).get(0)));
mex.setRecipients(RecipientType.BCC, from);
mex.setSubject(subject);
MimeMultipart var26 = new MimeMultipart();
MimeBodyPart attachBodyPart = new MimeBodyPart();
attachBodyPart.setText(messageBody);
var26.addBodyPart(attachBodyPart);
attachBodyPart = new MimeBodyPart();
byte[] data = baos.toByteArray();
new FileDataSource(fileName);
attachBodyPart.setDisposition("attachment");
attachBodyPart.setContent(data, "application/pdf");
attachBodyPart.setFileName(fileName);
var26.addBodyPart(attachBodyPart);
mex.setContent(var26, "text/html");
Transport transport = session.getTransport("smtp");
transport.connect(param.getSmtpHost(), from, pass);
transport.sendMessage(mex, mex.getAllRecipients());
transport.close();
你有什么想法吗?
很难相信同样的代码在任何地方都有效。
改变
attachBodyPart.setText(messageBody);
到
attachBodyPart.setText(messageBody, "html");
改变
mex.setContent(var26, "text/html");
到
mex.setContent(var26);
我想用 javax.mail 发送电子邮件。
它适用于 ubuntu 14.04 和 java 1.8。0_121 和 tomcat7
使用 ubuntu 18.04 和 java 1.8.0_181 和 tomcat8 我收到此错误:
Caused by: java.io.IOException: "text/html" DataContentHandler requires String object, was given object of type class javax.mail.internet.MimeMultipart
这是代码:
MimeMessage mex = new MimeMessage(session);
mex.setFrom(new InternetAddress(from));
mex.addRecipient(RecipientType.TO, new InternetAddress((String)((List)ccList).get(0)));
mex.setRecipients(RecipientType.BCC, from);
mex.setSubject(subject);
MimeMultipart var26 = new MimeMultipart();
MimeBodyPart attachBodyPart = new MimeBodyPart();
attachBodyPart.setText(messageBody);
var26.addBodyPart(attachBodyPart);
attachBodyPart = new MimeBodyPart();
byte[] data = baos.toByteArray();
new FileDataSource(fileName);
attachBodyPart.setDisposition("attachment");
attachBodyPart.setContent(data, "application/pdf");
attachBodyPart.setFileName(fileName);
var26.addBodyPart(attachBodyPart);
mex.setContent(var26, "text/html");
Transport transport = session.getTransport("smtp");
transport.connect(param.getSmtpHost(), from, pass);
transport.sendMessage(mex, mex.getAllRecipients());
transport.close();
你有什么想法吗?
很难相信同样的代码在任何地方都有效。
改变
attachBodyPart.setText(messageBody);
到
attachBodyPart.setText(messageBody, "html");
改变
mex.setContent(var26, "text/html");
到
mex.setContent(var26);