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

如何用java mail解决“该域需要进行TLS”

丁高峯
2023-03-14

我有一个非常简单的任务。从Spring启动应用程序发送一封电子邮件。配置很简单。

spring:
  mail:
    host: <our host>
    username: <our user name>
    password: <the password>
    port: 587
    properties:
      mail:
        debug: true
        smtp:
          auth: true
          ssl:
            protocols: TLSv1.2
          starttls:
            enabled: true

我针对Hetzner和Gmail测试了Java Mail的标准实现,它可以正常工作。

使用T-Systems SMTP服务器,我们看到一个错误。

DEBUG: Jakarta Mail version 1.6.7
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle]}
DEBUG: Providers Listed By Protocol: {imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "the-smtp-server", port 587, isSSL false
220 the-smtp-server ESMTP
DEBUG SMTP: connected to host "the-smtp-server", port: 587
EHLO comstar-backend-deployment-584b9b68d8-crb7p
250-the-smtp-server Hello comstar-backend-deployment-584b9b68d8-crb7p [10.55.238.32]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-PIPE_CONNECT
250-AUTH LOGIN
250-CHUNKING
250-STARTTLS
250 HELP
DEBUG SMTP: Found extension "SIZE", arg "52428800"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "PIPE_CONNECT", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN"
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "HELP", arg ""
DEBUG SMTP: protocolConnect login, host=the-smtp-server, user=<username>, password=<non-null>
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2 
DEBUG SMTP: Using mechanism LOGIN
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN succeeded
DEBUG SMTP: use8bit false
MAIL FROM:<...>
250 OK
RCPT TO:<...>
550 TLS required to proceed for this domain
RCPT TO:<...>
550 TLS required to proceed for this domain
DEBUG SMTP: Invalid Addresses
DEBUG SMTP:   ...
DEBUG SMTP:   ...
DEBUG SMTP: Sending failed because of invalid destination addresses
RSET
250 Reset OK
DEBUG SMTP: MessagingException while sending, THROW: 
javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
    com.sun.mail.smtp.SMTPAddressFailedException: 550 TLS required to proceed for this domain

知道我能做些什么来找出这个问题吗?

如何查看使用的密码?

共有1个答案

濮彬
2023-03-14

这个配置解决了这个问题

spring:
  mail:
    host: <our host>
    port: 587
    properties:
      mail:
        debug: true
        smtp:
          starttls:
            enabled: true
            required: true

我不明白为什么服务器和客户机之间不协商这个问题,因为他们似乎都知道TLS<相反,您必须将starttls设置为required
不需要调试配置,在我们的情况下也不需要身份验证,因为流量是内部路由的。。。

 类似资料:
  • 我写了一个从java(javamail/jaf)发送简单邮件的代码。运行该程序后,我收到一封来自google的电子邮件,表明我的帐户正被不安全的设备/应用程序访问。然后我不得不更改我的gmail帐户的设置以允许登录“不太安全的应用程序”选项。然后我收到了来自程序的电子邮件。 我需要在不更改选项的情况下发送电子邮件,允许在我的帐户中使用“不太安全的应用程序”选项。请帮忙。 我的代码是:

  • 代码: 产出:4 1 [代码连结][1] 前缀运算符的优先级高于逻辑运算符。2.逻辑<代码> 怀疑: > 为什么这里不遵循第一条规则?这不应该是正确的吗? 因此,在printf语句中,的值变为5。 为什么这里违反了一般的优先规则?当两个运算符的优先级相同时,关联性开始起作用。编译器不应该首先查看是计算还是

  • 我是Springboot的新手,我通过Sping的教程和“https://spring.io/guides”指南来学习。 现在我试图理解并重做教程:“使用MySQL访问数据” 不幸的是,我在Mavenbuild期间出错: 启动ApplicationContext时出错。要显示自动配置报告,请在启用“调试”的情况下重新运行应用程序。2017-12-07 10:26:42.708错误8100---[m

  • 问题内容: 我正在Netbeans中开发一个小型桌面应用程序。这是我的第一个程序,我正面临一种非常奇怪的错误类型。我知道我做错了什么,但无法追踪我做错了什么:( 请帮助我解决此错误。 说明:我有一个默认软件包,并根据需要在此软件包中创建新的Java类。与其他课程一起,我做了一个这样的课程: 现在,我需要在同一包中存在的其他某个类中创建内部类之一的实例,如下所示: 但我收到以下错误: 需要包含XY的

  • 本文向大家介绍koa是如何解决跨域的?相关面试题,主要包含被问及koa是如何解决跨域的?时的应答技巧和注意事项,需要的朋友参考一下 cors设置跨域头,通过中间件的方式调用。 httpCors.js app.js

  • 我使用javamail通过IMAP协议从exchage帐户读取邮件。这些邮件是纯格式的,内容是XML。 几乎所有这些邮件的大小都很短(通常小于100Kb)。然而,有时我不得不处理大型邮件(大约10Mb-15Mb)。例如,昨天我收到一封13Mb大小的电子邮件。仅仅读它就花了50多分钟。这正常吗?有没有办法提高它的性能?代码是: 花费如此长时间的方法是。我做错了什么?有什么提示吗? 非常感谢,我的英语