Java Mail:发送电子邮件时发生异常

问题描述 投票:0回答:1

第一次使用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服务器正确且可以正常工作。

任何建议为何会发生这种情况以及如何解决?

编辑:显然,地址/主机在这里已更改,我使用的是在实际代码中有效的真实地址/主机。

java javamail
1个回答
0
投票

这是发送带有附件的多部分消息的示例:

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();
}

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.