Swiftmailer работает над Localhost, но не в производстве

StackOverflow https://stackoverflow.com/questions/4752476

  •  13-10-2019
  •  | 
  •  

Вопрос

На моем локальном хосте (Linux Mint OS) Swiftmailer работает нормально со следующим кодом, но всякий раз, когда я перемещаю его на свой сервер, просто висит на функции отправки, а затем дает мне внутреннюю ошибку сервера.

В настоящее время у меня есть настройка электронной почты через приложения Google, так что, возможно, SMTP не будет работать в этой ситуации? Если это так, как вы предлагаете мне изменить это с SMTP.

Кроме того, всякий раз, когда я отправляю такое электронное письмо, оно отображается с адресом в области имени пользователя. Я хочу, чтобы он отображался с адресом от адреса в функции «SetFrom».

//Include the swiftmailer class
require_once 'comm/swiftmailer/swift_required.php';

//Create a message
//Pass it as a parameter when you create the message
$message = Swift_Message::newInstance();
$message->setSubject('My Subject');
$message->setFrom(array('noreply@domain.com' => 'No Reply'));
$message->setTo(array('me@domain.com' => 'Me'));
$message->setBody($emailContent, 'text/html');

//Create transport class and email the message
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')->setUsername('useracctname')->setPassword('password');
$mailer = Swift_Mailer::newInstance($transport);
$result = $mailer->send($message);

Большое спасибо за помощь!

Это было полезно?

Решение

Это может быть проблемой порта на сервере. Порт 465 может быть закрыт, чтобы предотвратить спам. Также может случиться так, что версия PHP сервера не имеет поддержки SSL.

Интересно, хотя, может ли я не использовать локальный почтовый сервер, поэтому он не разрешает SMTP?

Если вы обращаетесь к Gmail так же явно, как и вы, вряд ли вы используете другой транспортный тип или другой сервер.

Кроме того, как насчет использования одного из других транспортных типов?

Я думаю, что SMTP - ваш единственный вариант, чтобы получить его с Gmail. Однако может быть, что ваш сервер предоставляет mail() Основанный на основе сервиса (очевидно, с другим адресом отправителя, чем Gmail). В этом случае вы можете использовать Swiftmailer's mail транспорт.

Другие советы

У меня была та же проблема: я смог отправить электронную почту Gmail в Local (после обновления этой конфигурации: https://www.google.com/settings/security/lesssecureapps ) но не в производстве.

Чтобы решить мою проблему, я Зарегистрировано в моей учетной записи Gmail с помощью IP -ip Production / с моего производственного сервера и ответьте на вопрос о безопасности Gmail.

Одним из решений, чтобы войти в свою учетную запись Gmail с помощью IP -адреса производства, является

  1. Откройте туннель SSH (ssh -2nfct -d 5000 yoursshuser@yourdomain.org)
  2. Настройте свой браузер для использования этого прокси (например, Firefox: к предпочтениям> Advanced> Network> Настройки> Ручная конфигурация прокси> Носки Хост: Localhost / post: 5000 / Socks v5)
  3. Как обычно, войти в вам учетную запись Gmail

Ошибка, выведенная Symfony, была:

app.ERROR: Exception occurred while flushing email queue: Failed to authenticate on SMTP server with username "joe.doe" using 1 possible authenticators [] []

Ну, вот решение.

Если вы отправляете SMTP Mail, вы должны создать учетную запись электронной почты на сервере, затем используйте эту информацию электронной почты в вашем коде. Сервер не отправит электронное письмо, если у вас нет действительной учетной записи электронной почты для отправки его использования при использовании «из». Это должно быть настоящей правильной учетной записью электронной почты поддельной.

Единственной возможной причиной отправки с использованием поддельной учетной записи является использование функции mail ().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top