Проблема отправки электронной почты Swift Mailer - PullRequest
4 голосов
/ 22 марта 2010

Я скачал 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);

затем страница выполняется и сообщение об ошибке не отображается, как только я добавляю строку выше для отправки электронной почты, я получаю сообщение об ошибке.

мой исходящий сервер, порт и идентификатор пользователя и пароли верны в моем файле.

Спасибо

Ответы [ 3 ]

4 голосов
/ 22 марта 2010

Он ищет сервер 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, чтобы перехватить исключение и либо зарегистрировать его где-нибудь, либо игнорировать

3 голосов
/ 22 марта 2010

Ошибки сообщают вам все, что вам нужно знать:

getaddrinfo failed: No such host is known.

Указанный 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.

Укажите другой SMTP-хост, который ДЕЙСТВУЕТ, и повторите попытку.

0 голосов
/ 12 марта 2014

Пожалуйста, проверьте, действительно ли используемый вами порт является портом, используемым вашим почтовым сервером.Я столкнулся с подобной проблемой и, наконец, увидел, что я использую порт 25 с Yahoo вместо 465.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...