Я пытаюсь использовать 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, но поскольку у меня мало знаний во всем этом, я, возможно, ошибся там.
Ваша проблема, похоже, связана с проблемой сервера ретрансляции почты, а не с проблемой SwiftMailer. Убедитесь, что вам разрешено отправлять электронные письма с использованием этого сервера с помощью telnet. Посмотрите здесь, если вы не знаете, как это сделать: http://ubuntuwiki.net/index.php/SMTP,_testing_via_Telnet
telnet smtp.numericable.fr 25
а затем следуйте инструкциям ссылки. Я повторяю, что вы должны делать это с сервера, на котором выполняется код PHP, а не с вашего собственного компьютера разработчика.