Swift Mailer по электронной почте отправка выпуска
-
21-09-2019 - |
Вопрос
Я скачал 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('john@doe.com' => 'John Doe'))
->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
->setBody('Here is the message itself')
;
//Send the message
$result = $mailer->send($message);
?>
Как только я запускаю страницу, это дает ошибку
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
Если я удалю линию
$result = $mailer->send($message);
Затем Page выполните и без отображения сообщения об ошибке, как только я добавлю выше строку, чтобы отправить электронную почту, я получил ошибку.
Мой исходящий сервер, порт и идентификатор пользователя и пароли верны в моем файле.
Спасибо
Решение
Он ищет сервер smtp.domain.org, но не может его разрешить.
Если вы посмотрите на строку, вызовет последний шаг в торговле стека, вы увидите, что она бросает исключение:
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 . ']'
);
}
Таким образом, вам нужно либо ввести действительный SMTP -сервер, либо обернуть строку Send () в Try/Catch, чтобы поймать исключение, и либо зарегистрируйте его где -то, либо игнорируйте ее
Другие советы
Ошибки говорят вам все, что вам нужно знать:
getaddrinfo failed: No such host is known.
Указанный SMTP -сервер (smtp.domain.org) не существует, поэтому сценарий Mailer не может Connec, чтобы отправить электронное письмо. По крайней мере, домен 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.
Укажите какой -то другой хост SMTP, который существует, и попробуйте еще раз.
Пожалуйста, контролируйте, если используемый вами порт действительно является портом, используемым вашим почтовым сервером. Я столкнулся с аналогичной проблемой и, наконец, увидел, что я использовал порт 25 с Yahoo вместо 465.