zoukankan      html  css  js  c++  java
  • javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp

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

    本以为很简单的功能,直接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  搞定。

  • 相关阅读:
    package相关知识
    【算法设计与分析】5个数7次比较排序的算法
    Android下的应用编程——用HTTP协议实现文件上传功能
    5个数通过7次比较排序的方法
    数据库范式(1NF、2NF、3NF、BCNF)
    HttpDownloader2011年09月20日 写好用于下载的类 并且封装好
    POJ 1692 DP
    POJ 1682 多重DP
    TYVJ 1744 逆序对数(加强版)
    POJ 2151 概率DP
  • 原文地址:https://www.cnblogs.com/zjf6666/p/12616862.html
Copyright © 2011-2022 走看看