swiftmailer отклонил письмо в Silex

1

Я пытаюсь использовать swiftmailer с Silex, и после прочтения полной документации, рассматривая темы здесь и делая некоторые тесты, я не знаю, почему письмо не хочет отправляться. Чтобы найти ответ, я использовал плагин ArrayLogger, который дал мне подсказку: << 521 Mail rejected - not allowed to receive mail from this sender Отправлено << 521 Mail rejected - not allowed to receive mail from this sender.

Вот объявление службы из моего app.php:

$app->register(new Silex\Provider\SwiftmailerServiceProvider());

Вот мой контроллер:

/**
     * Contact page controller.
     *
     * @param Application $app Silex application
     */
    public function contactAction(Request $request, Application $app) {
        $contact = new Contact();
        $contactForm = $app['form.factory']->create(new ContactType(), $contact);
        $contactForm->handleRequest($request);
        if ($contactForm->isSubmitted() && $contactForm->isValid()) {
            $contact->notify($app);
            $app['session']->getFlashBag()->add('success', 'Your message was successfully sent.');
        }
        return $app['twig']->render('contact.html.twig', array(
            'contactForm' => $contactForm->createView()));
    }

И вот метод уведомляет из класса Contact:

/**
     * Sends an email to the administrator using this object parameters
     * 
     * @param Application $app
     */
    public function notify($app) {
        $transport = \Swift_SmtpTransport::newInstance('smtp.numericable.fr', 25);

        $mailer = \Swift_Mailer::newInstance($transport);

        // To use the ArrayLogger
        $logger = new \Swift_Plugins_Loggers_ArrayLogger();
        $mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($logger));

        $message = \Swift_Message::newInstance($this->getEmitter().' wants to help')
        ->setFrom(array($this->getEmail()))
        ->setTo(array('[email protected]'))
        ->setBody($this->getMessage());

        $app['swiftmailer.use_spool'] = false;
        if (!$mailer->send($message, $failures)) {
            var_dump($logger->dump());
        }
    }

Конфигурация (адрес электронной почты и порт) - это информация, которую я нашел в своем файле php.ini, но поскольку у меня мало знаний во всем этом, я, возможно, ошибся там.

Теги:
email
swiftmailer
silex

1 ответ

0

Ваша проблема, похоже, связана с проблемой сервера ретрансляции почты, а не с проблемой SwiftMailer. Убедитесь, что вам разрешено отправлять электронные письма с использованием этого сервера с помощью telnet. Посмотрите здесь, если вы не знаете, как это сделать: http://ubuntuwiki.net/index.php/SMTP,_testing_via_Telnet

  • 0
    Соединение с локальным хостом ... Невозможно открыть соединение для хоста, на порту 25: сбой соединения, я пробовал также с портами 587 и 8080, но я получаю ту же ошибку.
  • 0
    @Cachwir Вам не нужно теленеть localhost, localhost - ваша собственная машина. С сервера, на котором выполняется этот PHP, вы должны telnet SMTP-сервер в вашем случае smtp.numericable.fr, поэтому ваша команда должна быть telnet smtp.numericable.fr 25 а затем следуйте инструкциям ссылки. Я повторяю, что вы должны делать это с сервера, на котором выполняется код PHP, а не с вашего собственного компьютера разработчика.
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню