用Swift Mailer发送邮件时出现501错误

4
<?php

  require_once '../plugin/swift/lib/swift_required.php';

  // Create the Transport
  $transport = Swift_SmtpTransport::newInstance('pod51003.outlook.com',587,'tls')
    ->setUsername('user@connect.polyu.hk')
    ->setPassword('pw')
    ;

  // Create the Mailer using your created Transport
  $mailer = Swift_Mailer::newInstance($transport);

  // Create a message
  $message = Swift_Message::newInstance('Wonderful Subject')
    ->setFrom(array('john@doe.com' => 'John Doe'))
    ->setTo(array('foodil@hotmail.com', 'foodil@yahoo.com.hk' => 'A name'))
    ->setBody('Here is the message itself')
    ;

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

  printf("Sent %d messages\n", $result);

?>
事实证明:
在C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\AbstractSmtpTransport.php的第422行,抛出了未捕获的异常'Swift_TransportException',并显示消息:'期望响应代码为250,但得到代码"501",消息为"501 5.5.4 Invalid domain name "'。
堆栈跟踪: #0 C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\AbstractSmtpTransport.php(306):Swift_Transport_AbstractSmtpTransport->_assertResponseCode('501 5.5.4 Inval...', Array) #1 C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\EsmtpTransport.php(224):Swift_Transport_AbstractSmtpTransport->executeCommand('HELO [::1]??', Array, Array) #2 C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\AbstractSmtpTransport.php(323):Swift_Transport_EsmtpTransport->executeCommand('HELO [::1]??', Array) #3 C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\EsmtpTransport.php(272):Swift_Transport_AbstractSmtpTransport->_doHeloCommand() #4 C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\AbstractSmtpTransport.php(124) 在C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\AbstractSmtpTransport.php的第422行发生致命错误。
实际上,我直接按照教程操作,那么我的代码是否有遗漏的地方呢?SMTP服务器信息是有效的。
外部SMTP设置: 服务器名称:pod51003.outlook.com - 您还可以查看下面的注释以了解如何确定服务器名称 端口:587 加密方法:TLS 添加这行代码后,出现了另一个错误:
警告:stream_socket_enable_crypto() [streams.crypto]:此流不支持SSL / crypto,位于C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\StreamBuffer.php的第102行。
致命错误:Uncaught exception 'Swift_TransportException' with message '无法使用TLS加密连接',位于C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\EsmtpTransport.php的第283行。
堆栈跟踪: #0 C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\AbstractSmtpTransport.php(124):Swift_Transport_EsmtpTransport->_doHeloCommand() #1 C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Mailer.php(79):Swift_Transport_AbstractSmtpTransport->start() #2 C:\xampp\htdocs\fyp\mail\send.php(26):Swift_Mailer->send(Object(Swift_Message)) #3 {main} thrown in C:\xampp\htdocs\fyp\plugin\swift\lib\classes\Swift\Transport\EsmtpTransport.php on line 283
1个回答

10

请尝试按照以下示例在此处添加此行:

// Create the Transport
$transport = Swift_SmtpTransport::newInstance('pod51003.outlook.com',587,'tls')
->setUsername('user@connect.polyu.hk')
->setPassword('pw')
;

// ADD THIS LINE
$transport->setLocalDomain('[127.0.0.1]');

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

根据你收到的HELO命令的响应,我猜测你的SMTP服务器不支持或不理解IPv6。


添加了这行代码后仍然出现错误,请看看,非常感谢。 - user782104
仍然存在550 5.7.1客户端没有权限以此发送者身份发送的问题。 - user782104
我猜测这是因为您使用的“发件人:”电子邮件地址与您用于对SMTP服务器进行身份验证的用户名/密码关联的电子邮件地址不匹配。尝试设置一个“回复:”地址并使用您自己的帐户发送。 - DaveRandom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接