第一次使用Java邮件。我正在关注this tutorial,但是我已经无法发送基本消息,并且收到了一个非常奇怪的错误:
java.util.ServiceConfigurationError: javax.mail.Provider: Provider com.sun.mail.imap.IMAPProvider not a subtype
很奇怪,因为我在代码中的任何地方都没有使用IMAP:
Properties mailProps = new Properties();
mailProps.put("mail.transport.protocol", "smtp");
mailProps.put("mail.host", "smtp.mydomain.com");
mailProps.put("mail.from", "[email protected]");
mailProps.put("mail.smtp.port", "25");
Session session = Session.getDefaultInstance(mailProps);
SMTPMessage m = new SMTPMessage(session);
MimeMultipart content = new MimeMultipart();
MimeBodyPart mainPart = new MimeBodyPart();
mainPart.setText("test");
content.addBodyPart(mainPart);
m.setContent(content);
m.setSubject("Demo message");
m.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"));
Transport.send(m);
错误发生在最后一行(发送)。我知道smtp服务器正确且可以正常工作。
任何建议为何会发生这种情况以及如何解决?
编辑:显然,地址/主机在这里已更改,我使用的是在实际代码中有效的真实地址/主机。
这是发送带有附件的多部分消息的示例:
String from = "[email protected]";
String to = "[email protected]";
File file = new File("/file/to/attach");
Properties mailProps = new Properties();
// put your properties here
Session session = Session.getInstance(mailProps, null);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from) );
InternetAddress[] toAddress = { new InternetAddress(to) };
message.setRecipients(Message.RecipientType.TO, toAddress);
message.setSubject("Demo Message");
message.setSentDate(new Date());
MimeBodyPart part1 = new MimeBodyPart();
part1.setText("Test");
MimeBodyPart part2 = new MimeBodyPart();
part2.attachFile(file);
Multipart multiPart = new MimeMultipart();
multiPart.addBodyPart(part1);
multiPart.addBodyPart(part2);
message.setContent(multiPart);
Transport.send(message);
} catch( MessagingException e ) {
// handle the exception properly
e.printStackTrace();
}
希望有帮助。