【问题标题】:Disable javamail email address validation禁用 javamail 电子邮件地址验证
【发布时间】:2018-05-06 02:41:41
【问题描述】:

我希望我的应用程序具有最低限度的“收件人”电子邮件地址验证,即只有空字符串被认为是无效的。从我的应用程序的角度来看,以下所有字符串都将被视为有效的电子邮件地址:

  • adas.assa.com
  • sdaassa.com
  • 萨达

我使用 spring-boot-mail starter 来开发我的应用程序,并使用 MimeMessageHelper 来构造邮件消息。当我尝试向这些地址发送电子邮件时,java mail api 会发出 sendFailedException Invalid Address。从我的挖掘来看,似乎已经内置了电子邮件地址验证。有什么方法可以禁用电子邮件地址验证,以便我的应用程序仍然向这些地址发送电子邮件?


@Bill Shannon 之后的更新:-
我已经更新了我的属性文件:
spring.mail.properties.mail.mime.address.strict=false

我仍然收到错误:

org.springframework.mail.MailSendException:消息失败: javax.mail.SendFailedException:无效地址; 嵌套异常是: com.sun.mail.smtp.SMTPAddressFailedException: 501 5.1.3 无效地址

我不确定这是否与您@Bill 提到的我如何传递会话属性有关,或者来自交换服务器地址验证(我们可以从错误中分辨出来吗?)。


在与交换服务器管理员核实后更新。

它有效。收到的错误实际上是由电子邮件服务器发出的。您必须让您的电子邮件服务器禁用电子邮件地址验证才能使其正常工作。

【问题讨论】:

  • 不管你多么希望,这些都不是完全合格的电子邮件地址,不可能向他们发送邮件。
  • @duskwuff 是的,我知道。但是我们的领导设计应用程序以这种方式运行。他的理由是提供电子邮件地址的源应用程序负责电子邮件地址格式验证,而我们的应用程序关心的只是确保电子邮件地址字段不为空。
  • 他的推理是不合理的。目标邮件服务器也将验证它们,并且没有理由不允许 JavaMail 这样做。具体来说,您在您调用它时将域名接受为电子邮件地址的“要求”是荒谬的。

标签: email spring-boot jakarta-mail


【解决方案1】:

尝试将 Session 属性 mail.mime.address.strict 设置为“false”。不过,是否接受这些地址取决于您的邮件服务器。

【讨论】:

  • 我已经更新了我的属性文件:spring.mail.properties.mail.mime.address.strict=false 并且仍然得到同样的错误:org.springframework.mail.MailSendException: Failed messages :javax.mail.SendFailedException:无效地址;我不确定它是否与交换服务器设置有关(我们可以从错误中分辨出来吗?),或者我设置属性的方式。
  • JavaMail debug output 显示什么?
  • 在与交换服务器管理员核实后,我们已经确认错误实际上来自交换服务器。感谢您的帮助。
猜你喜欢
  • 2014-06-12
  • 1970-01-01
  • 2018-03-13
  • 2011-09-02
  • 2013-02-20
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
相关资源
最近更新 更多