【问题标题】:Unable to send email using JavaMail API无法使用 JavaMail API 发送电子邮件
【发布时间】:2014-04-26 18:38:12
【问题描述】:

我正在尝试使用 Java Mail API 发送一封简单的电子邮件,但它的抛出错误如下

Exception in thread "main" javax.mail.AuthenticationFailedException: No authentication mechansims supported by both server and client
        at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:765)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685)
        at javax.mail.Service.connect(Service.java:295)
        at javax.mail.Service.connect(Service.java:176)
        at JavaMail.main(JavaMail.java:50)

下面是我的代码

        Properties props = new Properties();
        //props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth.plain.disable", true);
        props.put("mail.smtp.host", "127.0.0.1");
        props.put("mail.smtp.port", "25");


        Transport transport = null;
//      Session session = Session.getInstance(props,
//        new javax.mail.Authenticator() {
//          protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
//              return new PasswordAuthentication(username, password);
//          }
//        });
// 

        Session session = Session.getDefaultInstance(props,null);
        session.setDebug(true);
        System.out.println(" session was created "+session.toString());
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("me@example.com"));
        message.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("you@example.com"));
        message.setSubject("Testing Java EMail  Subject");
        message.setText("Dear Mail Crawler,"
            + "\n\n Test Email....!!! please!");


        transport = session.getTransport("smtp");
        transport.connect("127.0.0.1", "user", "pass");
        transport.sendMessage(message, message.getAllRecipients());

        System.out.println("email was SEnt sUcessfully ");

【问题讨论】:

    标签: java jakarta-mail


    【解决方案1】:

    您需要取消注释并将此代码放在Session session = Session.getDefaultInstance(props,null);...之后。

      session = Session.getInstance(props,
      new javax.mail.Authenticator() {
         protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
          return new PasswordAuthentication(username, password);
          }
       });
    

    【讨论】:

    • 即使我取消注释它们也会给出相同的错误
    • 你是不是把它放在Session session = Session.getDefaultInstance(props,null); ?
    • 没问题,我很高兴能帮上忙。如果您能如此友善并接受这个问题,我将非常感激。顺便说一句,祝 javamail 好运;)
    猜你喜欢
    • 1970-01-01
    • 2019-08-10
    • 2015-01-09
    • 2018-12-18
    • 2020-01-21
    • 2012-03-16
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多