当前位置: 首页 > 知识库问答 >
问题:

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

柳英豪
2023-03-14

我在使用我的公司交换服务器通过Javamail发送电子邮件时遇到了一些问题。我们有一个应用程序通过gmail服务器发送电子邮件没有任何问题,但对于Google策略的一些更改,我们希望使用公司服务器来完成这项工作。我确信会话属性中的问题,但我无法找到使其工作的方法

    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.MessagingException:无法连接到SMTP主机:mail.company.com,端口:443;嵌套html" target="_blank">异常是:avax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:未找到证书路径的信任锚。

共有1个答案

傅玮
2023-03-14

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

下面的代码片段适用于我

        //1) get the session object     
        Properties properties = new Properties();
        properties.put("mail.smtp.auth", "true");
        // You have missed this line.
        properties.put("mail.smtp.starttls.enable", "true");
        // This SMTP server works with me for all Microsoft email providers, like: -
        // Outlook, Hotmail, Live, MSN, Office 365 and Exchange.
        properties.put("mail.smtp.host", "smtp.live.com");
        properties.put("mail.smtp.port", "587");
        properties.put("mail.smtp.user", user);
        properties.put("mail.smtp.pwd", password);

        Session session = Session.getInstance(properties, null);
        session.setDebug(true); // To trace the code implementation.

        Transport transport = session.getTransport("smtp");
        transport.connect("smtp.live.com", 587, user, password);
        transport.close();

而不是

    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设置信息方面非常有用。

 类似资料:
  • 我有一个Outlook.com的电子邮件帐户。我希望我的Java应用程序能够使用JavaMail从该电子邮件帐户发送电子邮件。为此,我通过OAuth授予了我的应用程序访问权限。 我已经能够使用msgshow中提供的精彩示例应用程序通过IMAP成功连接.java。但是,我正在尝试通过SMTP通过我的 Outlook.com 电子邮件帐户发送电子邮件,但我没有任何运气。我尝试过同时使用msgsend.

  • 我需要通过我的应用程序发送一封电子邮件,比如使用带有OAuth的javamail API,但我需要如何使用我在下面添加的代码。 我的代码:

  • 我在ASP. Net Core中工作,并尝试从gmail使用smtp客户端发送电子邮件。有以下代码,但不起作用也看过以下帖子,但不起作用http://dotnetthoughts.net/how-to-send-emails-from-aspnet-core/ 它会跟踪错误 系统NotSupportedException:SMTP服务器不支持身份验证

  • 问题内容: 我正在尝试使用公司的邮件服务器发送电子邮件。但是我收到以下异常 这是我的示例代码, 哪段代码是错误的?作为用户名和密码,我正在使用公司的电子邮件地址和密码。 问题答案: 5.7.1可能是由于交换而不是您的代码引起的。您可能只需要在服务器上启用中继。对于匿名用户或从某个IP地址。我不是Exchange方面的专家,但我之前已经做过这项工作。这是我测试过的最后一个有效的解决方案: 如果在通过

  • 我正在使用发送电子邮件,但得到的错误是 我正在做的是,我有一个类作为。 上面的类有一个静态方法,-它将SMTP服务器设置和消息详细信息作为参数。 我把SMTP服务器设置放在我的web.xml文件中,但不知道出了什么问题 我的类 } 这是我的网站。xml文件 这是我的servlet类 我在做正确的事情,但不知道问题是什么 如果我在gmail中启用较少的安全应用程序设置,那么它的工作正常,我不认为这是

  • 问题内容: 我正在使用。 使用发送电子邮件(通过)的最佳方法是什么? 问题答案: 有关使用Outlook的解决方案,请参见下面的TheoretiCAL答案。 否则,请使用python随附的smtplib。请注意,这将要求您的电子邮件帐户允许smtp,默认情况下不一定启用此功能。 编辑: 此示例使用保留域,如RFC2606中所述 为了使它真正与gmail配合使用,Doe先生需要进入gmail中的选项