我们有一个使用邮件插件代码的 Grails 1.2.1 应用程序。我们必须修改代码,因为我们需要连接到各种 SMTP 主机,而不仅仅是当时允许的插件。
无论如何,它多年来一直运行良好,直到我们需要连接到配置为没有 smtp 身份验证的 Exchange 服务器。
通常,此配置设置适用于 Exchange:
mail.smtp.auth=true;mail.smtp.socketFactory.port=2525;mail.smtp.socketFactory.fallback=true;mail.smtp.starttls.enable=true
对于这种情况,我正在使用:
mail.smtp.auth=false;mail.smtp.socketFactory.port=2525;mail.smtp.debug=true;mail.debug.auth=true
使用这个特定的 smtp 服务器,我们得到:
org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException
at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:415)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:341)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:337)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
第一关,如何显示调试消息,我似乎无法打开任何详细的日志记录。
我在 config.groovy 中为这些模式启用了调试级别跟踪:
,"org.springframework.mail"
,"javax.mail"
第二,我可以尝试解决身份验证问题的任何选项吗?我已经看到一个使用 javaMail 的 connect() 没有 uid/密码的答案,但是我们的应用程序调用
org.springframework.mail.MailSender.send(org.springframework.mail.SimpleMailMessage simpleMailMessage)