【问题标题】:Connection Error in SMTP host :smtp.outlook.com, port: 25SMTP 主机中的连接错误:smtp.outlook.com,端口:25
【发布时间】:2017-11-21 05:00:26
【问题描述】:

我尝试了一个带有 gmail 的示例程序,它成功运行`并尝试通过主要更改服务器和端口名称来修改 Outlook 的相同程序。得到如下错误:

javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.outlook.com,端口:25;嵌套异常是: javax.net.ssl.SSLException:无法识别的 SSL 消息,明文连接?

我的代码如下:

package mailsend;

import javax.mail.Authenticator;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;



public class Outlook {
    final String senderEmailID = "xxx";
    final String senderPassword = "xxx";
    final String emailSMTPserver = "smtp.outlook.com";
    //final String emailSMTPserver = "Smtp.live.com";
    final String emailServerPort = "25";
    String receiverEmailID = null;
    static String emailSubject = "Test Mail";
    static String emailBody = ":)";

    //mail.smtp.ssl.enable = "true";
    public Outlook(String receiverEmailID, String Subject, String Body) {
        this.receiverEmailID = receiverEmailID;
        this.emailSubject = Subject;
        this.emailBody = Body;
        Properties props = new Properties();
        //System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
        props.put("mail.smtp.user", senderEmailID);
        props.put("mail.smtp.host", emailSMTPserver);
        props.put("mail.smtp.port", emailServerPort);
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.socketFactory.port", emailServerPort);
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.put("mail.smtp.ssl.enable", "true");
        /*prop key="mail.smtp.starttls.enable"   */
        SecurityManager security = System.getSecurityManager();
        //mail.smtp.ssl.enable "true"

        try {
            // SMTPAuthenticator auth = new SMTPAuthenticator();
            Session session = Session.getInstance(props, new SMTPAuthenticator("xxx", xxx"));
            MimeMessage msg = new MimeMessage(session);
            msg.setText(emailBody);
            msg.setSubject(emailSubject);
            msg.setFrom(new InternetAddress(senderEmailID));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(receiverEmailID));
            Transport.send(msg);
            //sendMessage(msg, msg.getAllRecipients());
            System.out.println("Message send Successfully:)");
        }

        catch (Exception mex) {
            mex.printStackTrace();
        }
    }

    public class SMTPAuthenticator extends Authenticator {
        String user;
        String pwd;

        SMTPAuthenticator(String senderEmailID, String senderPassword) {

            super();
            this.user = senderEmailID;
            this.pwd = senderPassword;

        }

        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(user, pwd);
        }
    }

    public static void main(String[] args) {

        Outlook obj1 = new Outlook("xxx", "hi", "test");

    }
}

【问题讨论】:

标签: java email outlook


【解决方案1】:

您必须使用端口 587 上的 TLS 连接到 smtp-mail.outlook.com。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-21
    • 2016-07-29
    • 2014-10-23
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    相关资源
    最近更新 更多