javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp

摘要:
Sessionsession=Session.getDefaultInstance(props);MimeMessagemessage=newMimeMessage(会话);try{Stringshow_username=username;charset=UTF-8“);message.setSentDate(newDate());

公司新做了一个项目,需要用到邮件发送功能。因为以前同事在其他项目上做过邮件模块,所以直接移植过来了。

本以为很简单的功能,直接copy多好。然而命运多舛。 调用发送邮件的代码时候报错。

主要代码:

Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.starttls.enable", "true");// 使用 STARTTLS安全连接
props.put("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props);

session.setDebug(false);
MimeMessage message = new MimeMessage(session);

try {

String show_username = username;
if (show_username.indexOf("@") > -1) {
show_username = show_username.split("@")[0];
}
message.setFrom(new InternetAddress(username, show_username));

InternetAddress[] internetAddressTo = new InternetAddress().parse(toMail);
message.setRecipients(Message.RecipientType.TO, internetAddressTo);
//message.addRecipient(Message.RecipientType.TO, new InternetAddress(toMail));

message.setSubject(subject);
message.addHeader("charset", "UTF-8");
/* 添加正文内容 */
Multipart multipart = new MimeMultipart();

StringBuffer lineTxt = new StringBuffer();

BodyPart contentPart = new MimeBodyPart();
contentPart.setText(lineTxt.toString());
contentPart.setHeader("Content-Type", "text/html; charset=UTF-8");
multipart.addBodyPart(contentPart);

message.setContent(multipart);
message.setSentDate(new Date());
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host, port, username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();

} catch (Exception e) {

e.printStackTrace();
}

打断点看到是Transport transport = session.getTransport("smtp");  时报错

百度好久,三问度娘。最后发现是引用的jar包问题

原先系统用的jdk7 用的 mail-1.4.jar

现在系统是jdk8 重新在网上下载了 最新的 javax.mail.jar  搞定。

免责声明:文章转载自《javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unity 角色复活和重新开始游戏断点不能加载下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

session 详细解析(转)

  转自  https://www.cnblogs.com/blueskycc/p/5524709.html?tdsourcetag=s_pcqq_aiomsg http协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议。所谓无状态,指的是不会维护http请求数据,http请求是独立的,非持久的。而越来越复杂的WEB应用,需要保存一些用...

Tornado 【简述】

前言 python 旗下,群英荟萃,豪杰并起。单是用于 web 开发的,就有 webpy、web2py、bottle、pyramid、zope2、flask、tornado、django 等等,不一而足。最近几年较为流行的,大概也就是flask、tornado 和 django 了。 关于以上各个 web 开发框架的性能比较,上网一搜,铺天盖地——这不是...

Java中设置Session过期时间(Spring Boot)

1、Spring Boot: server.session.cookie.comment = #注释会话cookie。 server.session.cookie.domain = #会话cookie的域。 server.session.cookie.http-only =#“HttpOnly”标志为会话cookie。 server.session....

JS字符编码----ASCII,Unicode 和 UTF-8

转:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 1.ASCII 码 八个二进制位就可以组合出256种状态,这被称为一个字节(byte) 使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符...

Tomcat7基于Redis的Session共享实战一

本文主要介绍如何使用redis对tomcat7的session进行托管。 1、安装Redisredis安装比较简单,此处略过。 2、配置两个Tomcat在本机上配置两个Tomcat,分别为tomcat7-8081、tomcat7-8082。 编制两个index.jsp页面,分别放入tomcat7-8081webappsROOT、tomcat7-8082we...

服务器端Session和客户端Session(和Cookie区别)

Session其实分为客户端Session和服务器端Session。 当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在 HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户...