【问题标题】:swiftmailer mail_send.php error 500-Internal-Server-Error (Log: Timed Out)swiftmailer mail_send.php 错误 500-Internal-Server-Error(日志:超时)
【发布时间】:2017-05-07 07:53:16
【问题描述】:

我的系统:

  • 操作系统:Linux VServer
  • 网络服务器:apache2 邮件服务器(使用 IMAP):Dovecot
  • MTA (MailTransportAgent): Postfix + postfix.admin(webapp) 来管理
  • 我的域名:acegames.de (137.74.140.78)
  • 通过端口 465 的 TLS 邮件加密正在运行

我想做什么:

执行(网站上的按钮->javascript->ajax->php)php 脚本 mail_send.php(+ 查询)以使用 swiftmail 功能发送邮件。 Swiftmail 应该使用我的后缀 SMTP-Server 来发送邮件。 swiftmail 文件位于 /var/www/html/ts/swiftmailer/

这是http://ts.acegames.de/mail_send.php 或 /var/www/html/ts/mail_send.php:

<?php 
require_once 'swiftmailer/lib/swift_required.php';

$error = $_GET['err']; $time = $_GET['time']; $user = $_GET['user'];

$transport = Swift_SmtpTransport::newInstance('acegames.de', 465);
$transport->setUsername("USER@acegames.de");
$transport->setPassword("PASS");


$mailer = Swift_Mailer::newInstance($transport);


$message = Swift_Message::newInstance('Teamspeak Error Report');
$message->setFrom(array('USER@acegames.de' => 'USER'));
$message->setTo(array('report@acegames.de' => 'ts3 report'));
$message->setBody(
'<html>' . 
' <head></head>' . 
' <body>' . 
' <p>Reported Error: ' . $error . '</p>' . 
'  <p>Time: ' . $time . '</p>' . 
'  <p>User: ' . $user . '</p>' . 
' </body>' . 
'</html>', 'text/html' );




// Send the email 
$result = $mailer->send($message); 
?>

但我得到的是 500-INTERNAL_SERVER_ERROR 和以下日志: /var/log/apache2/error.log:

[:error] [pid 23732] [client 188.174.41.220:49670] PHP Fatal error:   Uncaught exception 'Swift_TransportException' with message 'Connection
to acegames.de:465 Timed Out'  in
/var/www/html/ts/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:404\nStack
trace:\n#0 
/var/www/html/ts/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(289):
Swift_Transport_AbstractSmtpTransport->_getFullResponse(0)\n#1 
/var/www/html/ts/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(117):
Swift_Transport_AbstractSmtpTransport->_readGreeting()\n#2 
/var/www/html/ts/swiftmailer/lib/classes/Swift/Mailer.php(79):
Swift_Transport_AbstractSmtpTransport->start()\n#3 
/var/www/html/ts/mail_send.php(36):
Swift_Mailer->send(Object(Swift_Message))\n#4 {main}\n  thrown in 
/var/www/html/ts/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php
on line 404, referer: https://ts.acegames.de/

我不知道问题是什么。我搜索了每个日志文件(mail.log、syslog、apache2 日志,...),但我没有找到与此错误相关的任何内容。

【问题讨论】:

    标签: php external swiftmailer postfix-mta dovecot


    【解决方案1】:

    错误消息是说它无法连接到您指定的邮件服务器。您需要像这样指定 TLS:

    $transport = Swift_SmtpTransport::newInstance('acegames.de', 465, 'tls');
    

    在此处阅读更多信息:Swiftmailer Manual

    【讨论】:

    • 好主意,但这并没有解决任何问题...我读到如果设置了端口 465,则不需要指定 tls,因为它是该端口的默认值。不知道我在哪里读到它,但即使使用“tls”,它仍然给我一个 500-INTERNAL_SERVER_ERROR 和完全相同的日志。
    【解决方案2】:

    你有超时错误,我怀疑是端口问题,检查输出端口是否可用或阻塞。

    我的意思是您的客户端和服务器之间的某些端口可能被防火墙或安全策略、垃圾邮件策略等阻止了。

    【讨论】:

    • 所以你真的是说女巫端口。抱歉,我不知道“输出端口”。我找不到任何关于你描述的港口的纪录片。
    • 所以我的托管人说他们不会阻止服务器的端口,我也不会。
    • 只有当我输入“telnet acegames.de smtp”时,它才会发送消息“220 pph-server.de Postfix ESMTP (Debian/GNU)”并实际对输入做出反应。
    • 看起来 postfix 实际上并没有在这个端口(465)上监听......这很令人困惑
    【解决方案3】:

    @hokusai 要求的更多信息:

    telnet acegames.de 465 正在尝试 137.74.140.78... 连接到 acegames.de。 转义字符是'^]'。 ... 连接被外国主机关闭。

    telnet acegames.de 443 正在尝试 137.74.140.78... 连接到 acegames.de。 转义字符是'^]'。 ... 连接被外国主机关闭。

    telnet acegames.de 80 正在尝试 137.74.140.78... 连接到 acegames.de。 转义字符是'^]'。 301 永久移动

    永久移动

    文档已移至此处。

    Apache/2.4.10 (Debian) 服务器位于 acegames.de 端口 80 ... 连接被外国主机关闭。

    【讨论】:

      【解决方案4】:

      所以,如果您在 acegames.de 上控制邮件服务器,请显示 mail.log (/var/log/mail.log) 的内容。 465 端口有东西,但正在立即关闭连接。

      【讨论】:

        猜你喜欢
        • 2015-08-16
        • 2020-09-11
        • 2023-03-30
        • 2020-06-18
        • 2011-09-22
        • 2022-01-07
        • 1970-01-01
        • 1970-01-01
        • 2022-12-08
        相关资源
        最近更新 更多