保存使用javax邮件发送邮件发送邮件文件夹
问题描述:
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”);保存使用javax邮件发送邮件发送邮件文件夹
我有这几个问题: - 无需使用NTLM验证密码
- 发送部分电子邮件的作品。是否可以将发送的电子邮件保存到发送的邮件文件夹中而无需密码验证。如果是,那么如何?
- session.getStore不起作用,当我使用 a。 smtp - 异常(无效提供者) b。 ntlm - 异常(NoSuchProviderException) 我应该在这里使用什么。
在此先感谢您的帮助。
答
“ntlm”不是Store的一种类型,它是一种认证机制。 The store types supported by JavaMail are "imap" and "pop3".你几乎肯定想要“imap”。就像发送一样,当连接到您的imap服务器时,您将需要提供您的用户名和密码。
另外,如果可能,请升级到。
javax.mail jar的版本是什么? – Maverick
package javax.mail; class版本{ public static final String version =“1.4.6”; } – hnsanadhya
我的jar被命名为mailapi.jar,并且在meta-inf下的LICENSE.txt文件中,列出的版本是1.0 – hnsanadhya