2010-03-22 3 views
4

я скачал Swift Mailer с их сайта и попытаться отправить простую электронную почту с помощью следующего кода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); 

?>

раз я запустить страницу дает ошибку

 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); 

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

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

Благодаря

+1

Нам нужна дополнительная информация. Взгляните на ваш php.ini и посмотрите, позволяет ли «error_reporting» сообщить об ошибках E_ALL и установить «display_errors» в On (или использовать файлы журнала), а затем отправить нам более подробные ошибки ... –

+0

Можете ли вы получить более конкретный сообщение об ошибке? Либо включите error_reporting и display_errors, либо проверите журнал ошибок PHP (если настроено) – timdev

ответ

4

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

+0

, если я изменил почтовый сервер, я получил следующее waring Warning: date() [function.date]: Небезопасно полагаться на часовой пояс системы настройки. Вы * обязательны для использования параметра date.timezone или функции date_default_timezone_set(). Если вы использовали какой-либо из этих методов, и вы все еще получаете это предупреждение, скорее всего, вы ошиблись с идентификатором часового пояса. Мы выбрали «Азия/Дубай» для «4.0/no DST» вместо E: \ web_sites \ swift_mail \ lib \ classes \ Swift \ Mime \ Headers \ DateHeader.php в строке 112 – air

+1

вам нужно установить часовой пояс в сценарии, используя метод date_default_timezone_set («Азия/Дубай») или в php.ini, установив date.timezone = «Азия/Дубай». Это приведет к подавлению ошибки – Mark

+0

Я прокомментировал строку, которая генерирует исключение: throw new Swift_TransportException (и почта отправляется в настоящее время под windows server 2003 –

3

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

getaddrinfo failed: No such host is known. 

заданный SM Сервер TP (smtp.domain.org) не существует, поэтому сценарий почтовой программы не может подключиться к нему для отправки электронной почты. По крайней мере, domain.org домен существует, поэтому, возможно, у них есть SMTP-сервер с именем что-то другое:

[email protected]:~$ host -t soa domain.org 
domain.org has SOA record ns.domain.org. sales.domain.org. 1267596439 10800 3600 604800 3600 
[email protected]:~$ host -t mx domain.org 
domain.org mail is handled by 10 mail.domain.org. 
[email protected]:~$ host domain.org 
domain.org has address 208.109.97.130 
domain.org mail is handled by 10 mail.domain.org. 

задать другой SMTP хост, который существует и попробовать еще раз.

+0

Полезно знать. –

0

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

Смежные вопросы