Intereting Posts
Как выполнить массовое удаление с использованием Laravel 4.1 на основе массива идентификаторов или объектов? переписать соединение и запрос из mysql в mysqli WordPress Загрузка дополнительных сообщений onclick с ajax request jquery php: сохранить всю переменную $ _POST в сеансе app.request.attributes.get ('_ route') пуст, когда я переопределяю страницу ошибок 404 создать определенную папку для загрузки на основе роли пользователя и ограничить доступ к другой папке в laravel elfinder Преобразовать комплекс и переменную xml Как установить PHP_AUTH_USER загрузить файл php $ _FILES undefined index error Как изменить имя Zend_Db_Table в модели для вставки в несколько таблиц Плагин gmap3 не может отображать маркер Можно ли безопасно использовать str_replace в кодированной кодировке UTF-8, если в качестве аргументов заданы только строки с кодировкой UTF-8? Doctrine entitymanager clear не полностью очищает Загружать session_start () только в том случае, если сеанс не существует? В последнее время метод Laravel 4 all () начал возвращать коллекцию Eloquent – почему?

Использование swiftmailer php с gmail

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

Я изменил скрипт из ссылки SwiftMailer, но я не получаю никаких результатов. Что не так?

Изменить: после дальнейшей отладки я обнаружил, что оператор

$result = $mailer->send($message); 

приводит к сбою кода (эхо под ним не печатается).

Почему это? Просто вызвать сообщение не отправлено сбой программы? : /

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php require_once '/var/www/swift/lib/swift_required.php'; echo 'Mail sent <br />'; /* //create the transport $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587); ->setUsername('softrain.evaluaciones@gmail.com') ->setPassword('softrain1234') ; */ $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587) ->setUsername('softrain.evaluaciones@gmail.com') ->setPassword('password') ; echo 'line 40 <br />'; $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance('Wonderful Subject') ->setFrom(array('softrain.evaluaciones@gmail.com' => 'Evaluaciones')) ->setTo(array('softrain.evaluaciones@gmail.com'=> 'A name')) ->setBody('Test Message Body') ; echo 'line 52 <br />'; $result = $mailer->send($message); echo $result; echo 'line 58 <br />'; ?> </body> </html> 

Форма испытания:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <title>Test Mail Script</title> </head> <body> <form action="scriptmail.php" method="post"> <input type="submit"/> </table> </form> </body> </html> 

Related of "Использование swiftmailer php с gmail"

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

При использовании PHP SwiftMailer для подключения к учетным записям Gmail или Google Apps вам необходимо использовать следующие

 $transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl') ->setUsername($this->username) ->setPassword($this->password); $this->mailer = Swift_Mailer::newInstance($transporter); 

Это отлично работает для меня. В исходном коде вы используете порт 587, а не 465, и вы не указываете протокол (ssl). Не знаю, имеет ли это значение, но для меня порт 587 не удалось, а 465 работал нормально.

Надеюсь, это поможет.

Я нашел этот вопрос, выполнив поиск в Google, и использовал код в ответе, предоставленном fullbaked. Это дошло до того, что я мог видеть в Исключениях, которые сервер smtp Google отвечал кодом ошибки, указывающим пароль и имя пользователя, которые не были приняты. После дальнейшего расследования я нашел следующие шаги. Теперь он отлично работает, и я могу продолжать использовать код для производства.

Не знаю, когда Google внес изменения, но помимо настройки кода с вашим именем пользователя, паролем и портом Google (465 / ssl или 587 / tls) вам необходимо выполнить следующие шаги, чтобы использовать smtp-сервер Google.

Чтобы использовать SMTP-сервер gmail с учетной записью gmail, вам необходимо:

1) В настройках Google «Настройки учетной записи» включите «Доступ для менее защищенных приложений», установив его «Разрешить».

2) В настройках gmail на вкладке «Пересылка и POP / IMAP» проверьте статус IMAP, его необходимо активировать. (Это позволит отправлять сообщения электронной почты в папку, отправленную).

3) Если после шагов 1 и 2 вы по-прежнему бросаете исключение Google smtp-сервер, он не принимает имя пользователя и пароль, необходимые для открытия браузера, перейдите в gmail и войдите в систему, затем откройте другую вкладку в том же браузере и откройте этот адрес :
https://accounts.google.com/DisplayUnlockCaptcha

 According to Google you may have to enter a captcha. 

4) Немедленно отправьте электронное письмо с вашего кода, так как это позволит ему получить разрешение на использование вашей учетной записи gmail.

Надеюсь это поможет.

Я обнаружил, что сказанное было правдой, но мне пришлось немного изменить его работу для текущей версии Swift Mailer. Теперь это:

 $transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl') ->setUsername('username@gmail.com') ->setPassword('password'); $mailer = Swift_Mailer::newInstance($transporter); 

Должен работать нормально.

Система SMTP GMail имеет свои проблемы, учитывая SSL и порты. Мне трудно заставить его работать с PHP красиво.

Лучшее, что я нашел, это работа phpGMailer . Вы можете пропустить этот код, чтобы посмотреть, как они его наняли, но это всегда безупречно работало для меня.

Я знаю, что это не касается проблемы SwiftMail, просто я решил указать на это 🙂

465 – это порт для ssl, 587 используется для шифрования tls (см. http://swiftmailer.org/docs/sending.html#encrypted-smtp )

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

Вы можете проследить электронное письмо с его полными заголовками внутри gmail, следуйте этому руководству.

https://support.google.com/mail/answer/29436?hl=en

@fullybaked имел правильный ответ для аутентификации вашей электронной почты через smtp, но вы все равно отправляли бы через ваш хост.

 $transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl') ->setUsername($this->username) ->setPassword($this->password); $this->mailer = Swift_Mailer::newInstance($transporter); 

@ducin был прав с разными портами и типами шифрования.

 $transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl') 

ИЛИ более современное и более безопасное, использование;

 $transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls') 

Если вы хотите отправить напрямую с сервера gmail, вам необходимо установить режим авторизации. Обычная по умолчанию.

 $transporter = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls') ->setAuthMode('login') ->setUsername('username@gmail.com') ->setPassword('password'); $mailer = Swift_Mailer::newInstance($transporter); 

@gene также верна, вам нужно аутентифицировать свое приложение, поэтому следуйте его инструкциям.

Кроме того, чтобы ваша почта не попадала в папку спама, вам также придется добавлять текстовые записи dns с помощью DKIM (ключей домена)

https://support.google.com/a/answer/174124?hl=en

Записи SPF

https://support.google.com/a/answer/33786?hl=en

и DMARC

https://support.google.com/a/answer/2466580?hl=en