我希望在我的网站上实施一个联系表格。 我按照symfony2文档:http://symfony.com/fr/doc/current/cookbook/email/email.html
我使用symfony 2.3.3。
这就是我的config_dev.yml:
swiftmailer:
transport: sendmail
我的contactAction控制器:
public function contactAction(Request $request)
{
$this->focus = "contact";
$form = $this->createFormBuilder()
->add('Sujet:', 'text')
->add('Service:', 'choice',
array(
'choices' =>
array(
'all' => 'Communication multi-canaux (plusieurs services liés)',
'web' => 'Développement Web',
'webMarketing' => 'Web Marketing',
'mobile' => 'Développement mobile / tablette',
'brand' => 'Brand design',
'event' => 'Evènementiel',
'print' => 'Campagne print',
),
'preferred_choices' => array('all'),
)
)
->add('Nom:', 'text')
->add('Societe:', 'text')
->add('Courriel:', 'email')
->add('message:', 'textarea')
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
// Les données sont un tableau avec les clés "name", "email", et "message"
$data = $form->getData();
$message = \Swift_Message::newInstance()
->setSubject($data['Sujet'] . $data['Société'])
->setFrom($data['Courriel'])
->setTo('contact@visual-immersion.com')
->setBody($this->renderView('text à placer par la suite'))
;
$this->get('mailer')->send($message);
}
$this->get('mailer')->send($message);
return $this->render('VisualImmersionSiteBundle:Site:contact.html.twig',
array(
'focus' => $this->focus,
'form' => $form->createView(),
));
}
我有这个错误:
可捕获的致命错误:参数2传递给 Swift_Transport_SendmailTransport :: __ construct()必须实现 接口Swift_Events_EventDispatcher,实例 给出的Swift_Transport_StreamBuffer,调用 /var/www/visual-immersion/app/cache/dev/appDevDebugProjectContainer.php 在2129行并定义于 /var/www/visual-immersion/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php 第42行
我绝对找不到问题所在。您有任何想法,或者您是否遇到过此错误?
感谢您的帮助
更新:
我将SwiftMailer软件包降级为作曲家的2.3.2版本。问题解决了,但现在,我有这个错误信息;
预期的响应代码220,但得到代码“”,带有消息“”
任何想法?
答案 0 :(得分:1)
原因是服务器中的sendmail功能不正确。
您可以使用命令进行测试:telnet localhost 25
如果您使用的是Linux服务器。你应该安装Postfix,因为SSMTP不支持telnet,而SwitfMailer总是在发送电子邮件之前检查telnet。
答案 1 :(得分:0)
这似乎是2.3.3的错误。这是GitHub issue讨论此事。
这里的解决方案似乎是将composer.json
中的swiftmailer-bundle依赖关系从2.3.3更改为2.3.2:
"symfony/swiftmailer-bundle": "2.3.2"