我想知道是否有人能够向我解释为什么每次我的Java Web应用程序使用Gmail的SMTP服务器发送电子邮件时,它需要花费近30秒的时间?请参阅以下时间戳:
13/04 / 2010-22:24:27:281 DEBUG test.service.impl.SynchronousEmailService - 发送邮件之前。 13/04 / 2010-22:24:52:625 DEBUG test.service.impl.SynchronousEmailService - 发送邮件后。
我正在使用spring的JavaMailSender类,其中包含以下设置:
email.host = smtp.gmail.com
email.username=myaccount@gmail.com email.password =输入mypassword email.port = 465 mail.smtp.auth.required =真
请注意,邮件已经发送,我收到的很好,只是这种延迟导致应用程序用户体验缓慢。
如果你知道我如何能够自己诊断问题,那也很好。)
答案 0 :(得分:4)
可能是gmail使用此延迟来阻止垃圾邮件发送者从“外部”使用他们的SMTP服务器:如果从实际的Webmail客户端调用SMTP,则不会使用此延迟。 为了测试这一点,您可以打开到端口25的telnet会话并执行手动SMTP会话 (在网上搜索SMTP HELO的例子)
答案 1 :(得分:2)
GMail使用SSL进行连接。要正确验证SSL证书,需要一定的时间。确切的时间取决于证书链的复杂性以及CRL和OCSP检查的使用和可访问性。 Java很可能会检查OCSP以获取所提供的证书,而这可能很慢。
尝试在不同系统(最好是在其他子网中)运行您的应用程序,以排除防火墙的影响。也许防火墙会减慢通信的某些部分(SMTP本身,或CRL检索或OCSP检查)。
答案 2 :(得分:0)