php Swift Mailer 电子邮件发送问题
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2495118/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Swift Mailer email sending issue
提问by air
i have downloaded Swift Mailer from their website and try to send simple email with following code
我已经从他们的网站下载了 Swift Mailer 并尝试使用以下代码发送简单的电子邮件
<?php
require_once 'lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
->setUsername('your username')
->setPassword('your password')
;
$mailer = Swift_Mailer::newInstance($transport);
//Create a message
$message = Swift_Message::newInstance('Wonderful Subject')
->setFrom(array('[email protected]' => 'John Doe'))
->setTo(array('[email protected]', '[email protected]' => 'A name'))
->setBody('Here is the message itself')
;
//Send the message
$result = $mailer->send($message);
?>
?>
once i run the page it gives error
一旦我运行页面它就会出错
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in E:\web_sites\swift_mail\lib\classes\Swift\Transport\StreamBuffer.php on line 233
Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.anyhost.com:25 (php_network_getaddresses: getaddrinfo failed: No such host is known. ) in E:\web_sites\swift_mail\lib\classes\Swift\Transport\StreamBuffer.php on line 233
Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host smtp.domain.com [php_network_getaddresses: getaddrinfo failed: No such host is known. #0]' in E:\web_sites\swift_mail\lib\classes\Swift\Transport\StreamBuffer.php:235 Stack trace: #0 E:\web_sites\swift_mail\lib\classes\Swift\Transport\StreamBuffer.php(70): Swift_Transport_StreamBuffer->_establishSocketConnection() #1 E:\web_sites\swift_mail\lib\classes\Swift\Transport\AbstractSmtpTransport.php(101): Swift_Transport_StreamBuffer->initialize(Array) #2 E:\web_sites\swift_mail\lib\classes\Swift\Mailer.php(74): Swift_Transport_AbstractSmtpTransport->start() #3 E:\web_sites\swift_mail\test.php(33): Swift_Mailer->send(Object(Swift_Message)) #4 {main} thrown in E:\web_sites\swift_mail\lib\classes\Swift\Transport\StreamBuffer.php on line 235
if i remove the line
如果我删除该行
$result = $mailer->send($message);
then page execute and no error message display, as soon as i add above line to send email, i got error.
然后页面执行并且没有错误消息显示,只要我添加上面的行来发送电子邮件,我就会收到错误消息。
my outgoing server, port and user id & passwords are correct in my file.
我的传出服务器、端口和用户 ID 和密码在我的文件中是正确的。
Thanks
谢谢
采纳答案by Mark
It's looking for the server smtp.domain.org but isn't able to resolve it.
它正在寻找服务器 smtp.domain.org 但无法解析它。
If you look at the line the last step in the stack trade is calling, you can see it throwing an exception:
如果您查看堆栈交易的最后一步调用的行,您会看到它抛出异常:
if (!$this->_stream = fsockopen($host, $this->_params['port'], $errno, $errstr, $timeout))
{
throw new Swift_TransportException(
'Connection could not be established with host ' . $this->_params['host'] .
' [' . $errstr . ' #' . $errno . ']'
);
}
So you either need to input a valid smtp server or wrap the send() line in a try/catch to catch the exception and either log it somewhere or ignore it
因此,您需要输入有效的 smtp 服务器或将 send() 行包装在 try/catch 中以捕获异常并将其记录在某处或忽略它
回答by Marc B
The errors tell you everything you need to know:
错误告诉您需要知道的一切:
getaddrinfo failed: No such host is known.
The specified SMTP server (smtp.domain.org) does not exist, so the mailer script can't connec to it to send the email. At least the domain.org domain DOES exist, so perhaps they've got the SMTP server named something else:
指定的 SMTP 服务器 (smtp.domain.org) 不存在,因此邮件程序脚本无法连接到它来发送电子邮件。至少 domain.org 域确实存在,所以也许他们已经将 SMTP 服务器命名为其他名称:
marc@panic:~$ host -t soa domain.org
domain.org has SOA record ns.domain.org. sales.domain.org. 1267596439 10800 3600 604800 3600
marc@panic:~$ host -t mx domain.org
domain.org mail is handled by 10 mail.domain.org.
marc@panic:~$ host domain.org
domain.org has address 208.109.97.130
domain.org mail is handled by 10 mail.domain.org.
Specify some other SMTP host that DOES exist and try again.
指定其他一些确实存在的 SMTP 主机,然后重试。
回答by Williams
Please control if the port you use is really the port used by your mail server. I have dealt with a similar problem and finally saw that I was using port 25 with yahoo instead of 465.
请控制您使用的端口是否真的是您的邮件服务器使用的端口。我处理过类似的问题,终于看到我在雅虎上使用了端口 25 而不是 465。

