Swift Mailer Ошибка - PullRequest
       3

Swift Mailer Ошибка

2 голосов
/ 07 апреля 2010

Я использую следующий код для отправки сообщения:

try
{   
    require_once "lib/Swift.php";
    require_once "lib/Swift/Connection/SMTP.php";
    $smtp =& new Swift_Connection_SMTP("mail.somedomain.net", 587);
    $smtp->setUsername("username");
    $smtp->setpassword("password");
    $swift =& new Swift($smtp);

    //Create the sender from the details we've been given
    $sender =& new Swift_Address($email, $name);
    $message =& new Swift_Message("message title");

    $message->attach(new Swift_Message_Part("Hello"));

    //Try sending the email
    $sent = $swift->send($message, "$myEmail", $sender);
    //Disconnect from SMTP, we're done
    $swift->disconnect();

    if($sent)
    {
        print 'sent';

    }
    else 
    {
        print 'not sent';
    }

}

catch (Exception $e) 
{
    echo"$e";
}

Проблема в том, что он работает нормально на моем локальном сервере (который является моим сервером xampp), но не работает, когда файл загружен на настоящий сервер.

Выкидывает эту ошибку:

'The SMTP connection failed to start [mail.somedomain.net:587]: fsockopen returned Error Number 110 and Error String 'Connection timed out''

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

Ответы [ 2 ]

1 голос
/ 08 апреля 2010
$smtp =& new Swift_Connection_SMTP("mail.somedomain.net", 587);

это 587 номер порта для подключения? По какой-то причине вы пытаетесь это сделать вместо обычного порта 25? Порт 587 (отправка) обычно используется для отправки почты местными пользователями. После запуска этого сценария на удаленном веб-сервере он больше не является «локальным» и, скорее всего, отключен (или почтовый сервер не прослушивает этот порт на внешних интерфейсах).

Попробуйте переключиться на порт 25 и посмотрите, поможет ли это.

Обновление:

Отказ в соединении лучше, чем «тайм-аут соединения». Это означает, что хотя бы исходный пакет данных куда-то попал и получил активный отказ. Тайм-аут означает, что вещи просто упали где-то в пути.

max_execution_time вступит в игру только в том случае, если сам скрипт php превысит максимальное время. Если бы это было так, вы бы не получили ошибку swiftmailer, потому что скрипт просто завершился бы.

Работает ли на вашем веб-сервере sendmail? Измените хост соединения на localhost и посмотрите, поможет ли это. Если вы просто хотите отправить электронное письмо, это должно сработать. Единственная причина, по которой вам может потребоваться подключиться к удаленному SMTP-серверу, заключается в том, что заголовки From: установлены правильно и не могут быть помечены как СПАМ на принимающей стороне.

1 голос
/ 08 апреля 2010

Убедитесь, что домен сервера smtp действителен.Попытка пинговать его, чтобы подтвердить ответ.Вы также можете попробовать выполнить трассировку маршрута, чтобы узнать, возвращают ли какие-либо коммутаторы медленные ответы.

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