Java SMTP接受格式错误的电子邮件

时间:2017-03-22 15:21:05

标签: java email smtp

我正在使用SubethaSMTP来代理smtp电子邮件。我有一个应用程序向此代理发送电子邮件。

有时,应用程序会发送格式错误的电子邮件(由于历史原因)。 这个我无法改变。这是一个有缺陷的外部解决方案。 我正在处理收到的电子邮件并根据电子邮件值进行路由。

我的问题是当我在收到的电子邮件上调用以下方法时:

Address[] tos = message.getRecipients(RecipientType.TO);

当收件人列表中存在格式错误的电子邮件时,我无法获取该列表,因为我收到了例外。

我的目标是获取所有电子邮件并更正格式错误的电子邮件。 但由于例外,我无法得到它们。

即使存在一些不良邮件,有没有办法获取所有收件人电子邮件?只是阅读它们没有任何问题?是否可以绕过控件?

堆栈跟踪是:电子邮件地址是@TEST(值)。这是由外部应用程序生成的。我希望能够获取它,并将其从列表中删除,并更正它以重新发送

javax.mail.internet.AddressException: Missing local name in string ``@TEST''
    at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java:1216)
    at javax.mail.internet.InternetAddress.parse(InternetAddress.java:1096)
    at javax.mail.internet.InternetAddress.parseHeader(InternetAddress.java:663)
    at javax.mail.internet.MimeMessage.getAddressHeader(MimeMessage.java:733)
    at javax.mail.internet.MimeMessage.getRecipients(MimeMessage.java:565)
    at MessageHandler.done(TestMessageHandler.java:128)
    at org.subethamail.smtp.server.Session.endMessageHandler(Session.java:513)
    at org.subethamail.smtp.server.Session.resetMessageState(Session.java:490)
    at org.subethamail.smtp.command.DataCommand.execute(DataCommand.java:84)
    at org.subethamail.smtp.server.RequireTLSCommandWrapper.execute(RequireTLSCommandWrapper.java:30)
    at org.subethamail.smtp.server.CommandHandler.handleCommand(CommandHandler.java:99)
    at org.subethamail.smtp.server.Session.runCommandLoop(Session.java:244)
    at org.subethamail.smtp.server.Session.run(Session.java:145)

0 个答案:

没有答案