(PHP + SMTP)发送数据需要10秒

时间:2016-07-14 16:59:06

标签: php email iis smtp swiftmailer

我正在尝试从我工作的公司网站发送简报。为此,我使用SwiftMailer SMTP传输。我正在构建发送机制和PHP中的所有内容,在IIS 7.5的Windows 2008服务器上运行(我认为)。

我们的服务器company.fac.university.com位于托管我们的大学教师网络fac.university.com内。大学SMTP服务器mail.fac.university.com是网络上唯一没有通过标准电子邮件端口发送防火墙的服务器;所以我的PHP脚本使用大学凭据连接到mail.fac.university.com进行身份验证。

到目前为止一切顺利。

问题是通过此脚本发送电子邮件的速度非常慢。每封邮件大约需要10秒钟才能发送。我已经调整了标准SwiftMailer Logger Plugin,不仅输出原始SMTP通信,还显示每条消息的时间戳。这向我展示了一切都非常快速且看起来很正常,除了将数据发送到SMTP服务器的实际行为。无论出于何种原因,这需要10秒钟(有点在10到11秒之间)。

SMTP输出如下所示:

16:08:26 ++ Starting Swift_SmtpTransport
16:08:26 << 220 mail.fac.university.com Servername Enterprise mailer (ver. 3.9) 
16:08:26 >> EHLO company.fac.university.com 
16:08:26 << 250-mail.fac.university.com 250-PIPELINING 250-SIZE 37748736 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN 
16:08:26 >> STARTTLS 
16:08:26 << 220 2.0.0 Ready to start TLS 
16:08:26 >> EHLO company.fac.university.com 
16:08:26 << 250-mail.fac.university.com 250-PIPELINING 250-SIZE 37748736 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN 
16:08:26 >> AUTH LOGIN 
16:08:26 << 334 VXNlcm5hbWU6 
16:08:26 >> bnB3NDM1QGt1LmRr 
16:08:26 << 334 UGFzc3dvcmQ6 
16:08:26 >> U2hhaGFiMTIz 
16:08:26 << 235 2.7.0 Authentication successful 
16:08:26 ++ Swift_SmtpTransport started
16:08:26 >> MAIL FROM: <mail@company.com> 
16:08:26 << 250 2.1.0 Ok 
16:08:26 >> RCPT TO: <my@email.address> 
16:08:26 << 250 2.1.5 Ok 
16:08:26 >> DATA 
16:08:26 << 354 End data with <CR><LF>.<CR><LF> 
16:08:37 >> . 
16:08:37 << 250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 6B11D200A0A0 
16:08:37 >> MAIL FROM: <mail@company.com>
16:08:37 << 250 2.1.0 Ok 
16:08:37 >> RCPT TO: <my.other@email.address> 
16:08:37 << 250 2.1.5 Ok 
16:08:37 >> DATA 
16:08:37 << 354 End data with <CR><LF>.<CR><LF> 
16:08:47 >> . 
16:08:47 << 250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as B4F9E200A0A0 
16:08:47 >> MAIL FROM: <mail@company.com>
16:08:47 << 250 2.1.0 Ok 
16:08:47 >> RCPT TO: <my.third@email.address
16:08:47 << 250 2.1.5 Ok 
16:08:47 >> DATA 
16:08:47 << 354 End data with <CR><LF>.<CR><LF> 
16:08:57 >> . 
16:08:57 << 250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as DA987200A0A0
16:08:57 ++ Stopping Swift_SmtpTransport
16:08:57 >> QUIT 
16:08:57 << 221 2.0.0 Bye 
16:08:57 ++ Swift_SmtpTransport stopped

<<表示“从SMTP服务器收到邮件”,>>表示“邮件发送到SMTP服务器”。)

我尝试过使用phpMailer甚至将PHP mail()作为后备,没有任何变化。我也试过在我连接的端口之间切换,有和没有TLS / SSL等等 - 没有变化。我发送的电子邮件是多部分(HTML +纯文本),大小约为5 KB。我已经尝试将它简化为一个小于100字节的简单纯文本邮件,这也没有任何区别。

作为邮件服务器世界中的一个相对n00b,我在这里完全是我的智慧。大学服务器是否会限制脚本? (为什么我自己发送的那个很慢,那么,而不是服务器的回复?)

有什么可以解释这种延迟?我可以修理它吗?若然,怎么样?

1 个答案:

答案 0 :(得分:1)

事实证明,大学服务器确实(有点)限制连接。它在发送之前对每个单独的电子邮件运行各种垃圾邮件和病毒测试,而不是立即将电子邮件接收到内部队列并在那里处理它,它等待处理完成后才返回SMTP回复。

因此,解决方案(在IT部门遭遇许多令人沮丧的事情之后得出)的是通过我们服务器上的脚本发送的邮件权利,以绕过垃圾邮件和病毒检查。

相关问题