通过Exchange使用Javamail发送电子邮件

通过Exchange使用Javamail发送电子邮件,java,android,email,jakarta-mail,Java,Android,Email,Jakarta Mail,我在使用公司的exchange服务器通过Javamail发送电子邮件时遇到一些问题。我们有一个通过gmail服务器发送电子邮件的应用程序,没有任何问题,但对于谷歌政策的一些变化,我们希望使用公司服务器来完成这项工作。 我确定会话属性中存在问题,但我找不到使其正常工作的方法 Properties props = new Properties(); props.put("mail.smtp.port", 465); props.put("mail.smtp.socketFac

我在使用公司的exchange服务器通过Javamail发送电子邮件时遇到一些问题。我们有一个通过gmail服务器发送电子邮件的应用程序,没有任何问题,但对于谷歌政策的一些变化,我们希望使用公司服务器来完成这项工作。 我确定会话属性中存在问题,但我找不到使其正常工作的方法

    Properties props = new Properties();
    props.put("mail.smtp.port", 465);
    props.put("mail.smtp.socketFactory.port", 465);
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");
    props.put("mail.smtp.auth", "true");
    props.put("mail.debug", "true");
    props.put("mail.smtp.host", _server);

    session = Session.getInstance(props, this);
    try {
        transport = session.getTransport("smtp");
        transport.connect("mail.company.com",_user,_pass);
        transport.close();
这是显示日志时出现的错误

javax.mail.MessaginException:无法连接到SMTP主机:mail.company.com,端口:443; 嵌套异常是: avax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚点


您必须检查您的电子邮件提供商及其SMTP设置;服务器、端口和加密方法

下面的代码片段适用于我

而不是

    props.put("mail.smtp.port", 465);
    props.put("mail.smtp.socketFactory.port", 465);
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");
    props.put("mail.smtp.auth", "true");
    props.put("mail.debug", "true");
    props.put("mail.smtp.host", _server);

    session = Session.getInstance(props, this);
    try {
        transport = session.getTransport("smtp");
        transport.connect("mail.company.com",_user,_pass);
        transport.close();

我发现在获取其他电子邮件提供商的SMTP设置信息方面非常有用。

443是HTTPS标准端口。似乎您的端口465未使用。我使用的端口不正确,在与服务器管理员交谈后,他说正确的端口是25。我现在正在努力进行身份验证。这就好比如果服务器没有读取用户/传递数据,您可以使用上面的代码修复问题,然后检查是否仍然存在,您必须确保输入了正确的用户您的电子邮件地址和密码您的电子邮件密码;如果不是,通常会发生异常。如果它仍然存在,您必须确保您的电子邮件SMTP服务器设置。顺便问一下,你的电子邮件提供商是什么?微软交易所?如果你不知道,给我你公司电子邮件的登录页面链接,我会查找它的SMTP服务器设置,然后我会编辑答案。
    props.put("mail.smtp.port", 465);
    props.put("mail.smtp.socketFactory.port", 465);
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");
    props.put("mail.smtp.auth", "true");
    props.put("mail.debug", "true");
    props.put("mail.smtp.host", _server);

    session = Session.getInstance(props, this);
    try {
        transport = session.getTransport("smtp");
        transport.connect("mail.company.com",_user,_pass);
        transport.close();