在JavaWeb应用中使用gmail作为SMTP服务器速度较慢

在JavaWeb应用中使用gmail作为SMTP服务器速度较慢,smtp,gmail,performance,jakarta-mail,Smtp,Gmail,Performance,Jakarta Mail,我想知道是否有人能向我解释为什么每次我的Java web应用程序使用Gmail的SMTP服务器发送电子邮件都要花费将近30秒的时间?请参阅以下时间戳: 2010年4月13日-22:24:27:281调试test.service.impl.SynchronousEmailService-发送邮件之前。 2010年4月13日-22:24:52:625调试test.service.impl.SynchronousEmailService-发送邮件后 我使用spring的JavaMailSender类进

我想知道是否有人能向我解释为什么每次我的Java web应用程序使用Gmail的SMTP服务器发送电子邮件都要花费将近30秒的时间?请参阅以下时间戳:

2010年4月13日-22:24:27:281调试test.service.impl.SynchronousEmailService-发送邮件之前。 2010年4月13日-22:24:52:625调试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=true

请注意,邮件正在被发送,我很好地接收到了邮件,只是延迟导致应用程序用户体验缓慢


如果你知道我如何自己诊断问题,那也很好:)

可能是gmail使用此延迟来阻止垃圾邮件发送者从“外部”使用其SMTP服务器:如果SMTP是从实际的webmail客户端调用的,则不会使用此延迟。 为了测试这一点,您可以打开到端口25的telnet会话并执行手动SMTP会话
(例如,在web上搜索SMTP HELO)

GMail使用SSL进行连接。要正确验证SSL证书,需要一定的时间。准确的时间取决于证书链的复杂性以及CRL和OCSP检查的使用和可访问性。Java很可能会检查OCSP中提供的证书,这可能很慢


尝试在不同的系统(最好在其他子网)上运行应用程序,以排除防火墙的影响。可能某些通信(SMTP本身、CRL检索或OCSP检查)被防火墙减慢

根据您的操作系统,您应该有一个适当的邮件系统,负责在网络之外实际发送邮件

例如,我可以很好地完成这项工作。Postfix的配置将在另一个线程上,但通常Postfix会接受来自LAN的邮件(接受作为LAN的中继),并将邮件传输到gmail

这是一个关于如何设置postfix将gmail作为中继的问题


让一个邮件服务负责Gmail邮件的转发,您的Java应用程序几乎可以立即被释放(Postfix接收邮件,将其存储在队列中并转发给Gmail本身)。

这个讨论可能与以下内容有关:为什么-1?拥有一个合适的邮件服务器是处理邮件流量的常用方法,可以解决发送操作的延迟问题。