我正在使用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)