Java Mail:没有smtp的提供者
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java Mail:没有smtp的提供者,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2865字,纯文字阅读大概需要5分钟。
内容图文
我正在使用JavaMail来做一个简单的应用程序,当它在目录中找到一些文件时发送一封电子邮件.我设法让它在Eclipse中运行.我运行应用程序,它发送的电子邮件没有错误.
但是,当我创建jar并执行它时,它在电子邮件发送部分失败了.
它给出了这个例外:
javax.mail.NoSuchProviderException: No provider for smtp
at javax.mail.Session.getProvider(Session.java:460)
at javax.mail.Session.getTransport(Session.java:655)
at javax.mail.Session.getTransport(Session.java:636)
at main.java.util.MailManager.sendMail(MailManager.java:69)
at main.java.DownloadsMail.composeAndSendMail(DownloadsMail.java:16)
at main.java.DownloadsController.checkDownloads(DownloadsController.java:51)
at main.java.MainDownloadsController.run(MainDownloadsController.java:26)
at java.lang.Thread.run(Unknown Source)
我在这个方法中使用库:
public static boolean sendMail(String subject, String text) {
noExceptionsThrown = true;
try {
loadProperties();
} catch (IOException e1) {
System.out.println("Problem encountered while loading properties");
e1.printStackTrace();
noExceptionsThrown = false;
}
Properties mailProps = new Properties();
String host = "mail.smtp.host";
mailProps.setProperty(host, connectionProps.getProperty(host));
String tls = "mail.smtp.starttls.enable";
mailProps.setProperty(tls, connectionProps.getProperty(tls));
String port = "mail.smtp.port";
mailProps.setProperty(port, connectionProps.getProperty(port));
String user = "mail.smtp.user";
mailProps.setProperty(user, connectionProps.getProperty(user));
String auth = "mail.smtp.auth";
mailProps.setProperty(auth, connectionProps.getProperty(auth));
Session session = Session.getDefaultInstance(mailProps);
//session.setDebug(true);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(messageProps.getProperty("from")));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(
messageProps.getProperty("to")));
message.setSubject(subject);
message.setText(text);
Transport t = session.getTransport("smtp");
try {
t.connect(connectionProps.getProperty("user"), passwordProps
.getProperty("password"));
t.sendMessage(message, message.getAllRecipients());
} catch (Exception e) {
System.out.println("Error encountered while sending the email");
e.printStackTrace();
noExceptionsThrown = false;
} finally {
t.close();
}
} catch (Exception e) {
System.out.println("Error encountered while creating the message");
e.printStackTrace();
noExceptionsThrown = false;
}
return noExceptionsThrown;
}
我从属性文件加载这些值.
mail.smtp.host=smtp.gmail.com
mail.smtp.starttls.enable=true
mail.smtp.port=587
mail.smtp.auth=true
我试图通过ssl://smtp.gmail.com更改主机,端口由465(仅用于尝试不同的东西),但它也不起作用.无论如何,如果它使用原始参数从Eclipse工作正常,我想这些值是正确的,但问题是创建jar.我不太了解创建jar时可能的结果或变化.
创建jar时,JavaMail库是否会出错?
你有什么想法?
解决方法:
支持jar:mail.jar和activation.jar不在您的类路径中.构建jar时,需要在类路径中包含这些jar.
内容总结
以上是互联网集市为您收集整理的Java Mail:没有smtp的提供者全部内容,希望文章能够帮你解决Java Mail:没有smtp的提供者所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。