Вот мой код:
<?php require_once 'Swift/lib/swift_required.php'; $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465) ->setUsername('me@ff.com') ->setPassword('pass'); $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance('Wonderful Subject') ->setFrom(array('me@ff.com' => 'MY NAME')) ->setTo(array('you@ss.com' => 'YOU')) ->setBody('This is the text of the mail send by Swift using SMTP transport.'); //$attachment = Swift_Attachment::newInstance(file_get_contents('path/logo.png'), 'logo.png'); //$message->attach($attachment); $numSent = $mailer->send($message); printf("Sent %d messages\n", $numSent); ?>
ПОСЛЕ ПОЛУЧЕНИЯ ЭТОЙ ОШИБКИ …
Неустранимая ошибка: исключить исключение «Swift_TransportException» с сообщением «Ожидаемый код ответа 220, но получил код», с сообщением «» в /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php:406
Stack trace: #0 /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php(299): Swift_Transport_AbstractSmtpTransport->_assertResponseCode('', Array) #1 /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php(107): Swift_Transport_AbstractSmtpTransport->_readGreeting() #2 /home/sitenyou/public_html/Swift/lib/classes/Swift/Mailer.php(74): Swift_Transport_AbstractSmtpTransport->start() #3 /home/sitenyou/public_html/sgmail.php(16): Swift_Mailer->send(Object(Swift_Message)) #4 {main} thrown in /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php on line 406
SMTP GMail требует шифрования. Использование:
Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl");
отсутствует параметр ssl, это должно быть что-то вроде этого
Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
Протестировано и отлично работает
Swift SmtpTransport – код (выслать электронное письмо)
SMTP GMAIL: smtp.googlemail.com
Полный код:
<?php $pEmailGmail = 'xxxx@gmail.com'; $pPasswordGmail = '********'; $pFromName = 'MundialSYS.com'; //display name $pTo = 'xxxxxx@xxxx.xxx'; //destination email $pSubjetc = "Hello MundialSYS"; //the subjetc $pBody = '<html><body><p>Hello MundialSYS</p></html></body>'; //body html $transport = Swift_SmtpTransport::newInstance('smtp.googlemail.com', 465, 'ssl') ->setUsername($pEmailGmail) ->setPassword($pPasswordGmail); $mMailer = Swift_Mailer::newInstance($transport); $mEmail = Swift_Message::newInstance(); $mEmail->setSubject($pSubjetc); $mEmail->setTo($pTo); $mEmail->setFrom(array($pEmailGmail => $pFromName)); $mEmail->setBody($pBody, 'text/html'); //body html if($mMailer->send($mEmail) == 1){ echo 'send ok'; } else { echo 'send error'; } ?>
Я не могу быть уверен, но я думаю, что порт Gmail – 587 с использованием TLS, который не является SSL, а более новой версией. Вы должны это проверить, потому что я думаю, что вы устанавливаете неправильный код строительства.
Удачи!
Мне удалось получить эту работу без SSL, вот как это сделать:
$transport = Swift_SmtpTransport::newInstance('tls://smtp.gmail.com', 465) ->setUsername('contact@columbussoft.com') ->setPassword('password'); $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance($subject) ->setFrom(array($emailTo=>$name)) ->setTo(array($emailTo=>'Neo Nosrati')) ->addPart($body,'text/plain') ->setReturnPath('other@columbussoft.com');
Я использую пакет Message Swift Mailer в Laravel 3 и имеет ту же проблему. После некоторых тестов в моем случае решение заключалось в том, чтобы установить тот же адрес электронной почты, который я использовал в аутентификации SMTP, в параметре «from».
Я пытался использовать другой адрес, и это вызывало ошибку «код ожидаемого ответа« swiftmailer 220, но получил код с сообщением » .
Надеюсь, это поможет.
Я получил ту же ошибку раньше, и я добавил параметр «ssl» в Swift_SmtpTransport :: newInstance («smtp.gmail.com», 465, «ssl»), как сказал osos.
ОНО РАБОТАЕТ!! Спасибо д
это мой код:
<?php require_once 'swift/lib/swift_required.php'; $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl") ->setUsername('XXXXXXX@gmail.com') ->setPassword('XXXXXXX'); $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance('THIS IS THE SUBJECT') ->setFrom(array('XXXXXXX@gmail.com' => 'YOUR NAME')) ->setTo(array('XXXXXXX@gmail.com' => 'YOU')) ->setBody('This is the text of the mail send by Swift using SMTP transport.'); //$attachment = Swift_Attachment::newInstance(file_get_contents('path/logo.png'), 'logo.png'); //$message->attach($attachment); $numSent = $mailer->send($message); printf("Sent %d messages\n", $numSent); ?>
Для приложений Google в дополнение к настройке на порт 465 и ssl, как рекомендовано в принятом ответе, вам может потребоваться разрешить установку менее безопасных приложений в соответствии с https://stackoverflow.com/a/25238515/947370