【发布时间】:2017-03-08 11:58:50
【问题描述】:
public static void sendEmail(String msgHeader, String msg, String emailId, String emailFrom) {
Properties props = new Properties();
props.put("mail.smtp.auth", "false");
props.put("mail.debug", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", mailServer);
props.put("mail.smtp.port", port#);
props.put("mail.smtp.auth.mechanisms", "NTLM");
props.put("mail.smtp.auth.ntlm.domain", domainName);
Session session = Session.getDefaultInstance(props, null);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(emailFrom));
to = emailId;
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
message.setSubject(msgHeader);
message.setText(msg, "utf-8", "html");
message.saveChanges();
session.getDebug();
Transport.send(message);
// Copy message to "Sent Items" folder as read
Store store = session.getStore("ntlm");
store.connect(mailServer, emailFrom, pwd);
Folder folder = store.getFolder("Sent Items");
folder.open(Folder.READ_WRITE);
message.setFlag(Flag.SEEN, true);
folder.appendMessages(new Message[] {message});
store.close();
} catch (Exception ex) {
logger.error("Error occured while sending Email !", ex);
}
}
当我尝试执行上面的代码时,我能够发送电子邮件。问题在于保存电子邮件。我在该行收到错误 (NoSuchProviderException) Store store = session.getStore("ntlm");
对此我有几个问题:-
- 电子邮件发送部分无需使用 ntlm 验证密码即可工作。是否可以在不验证密码的情况下将已发送的电子邮件保存到已发送邮件文件夹中。如果是,那怎么办?
- session.getStore 在我使用时不起作用 一个。 smtp - 异常(无效的提供者) 湾。 ntlm - 异常 (NoSuchProviderException) 我应该在这里使用什么。
提前感谢您的帮助。
【问题讨论】:
-
你的 javax.mail jar 的版本是多少?
-
包 javax.mail;类版本{公共静态最终字符串版本=“1.4.6”; }
-
我的 jar 被命名为 mailapi.jar,在 meta-inf 下的 LICENSE.txt 文件中,列出的版本是 1.0
标签: java jakarta-mail