我最近遇到问题,我无法使用带有Swiftmailer的Symfony 3中的本地主机发送任何邮件
这是我在parameters.yml中的设置
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: xxxx@gmail.com
mailer_password: xxxxx
mailer_encryption: tls
mailer_port: 587
以下是config_dev.yml设置
swiftmailer:
transport: gmail
username: '%mailer_user%'
password: '%mailer_password%'
和示例代码
/**
* @Route("/mail/{name}")
*/
public function mailAction($name)
{
echo 'tete';
$message = \Swift_Message::newInstance()
->setSubject('Hello Email')
->setFrom('konrad@mydomain.de')
->setTo('info@mydomain.de')
->setBody(
$this->renderView(
// app/Resources/views/Emails/registration.html.twig
'email/registration.html.twig',
array('name' => $name)
),
'text/html'
)
/*
* If you also want to include a plaintext version of the message
->addPart(
$this->renderView(
'Emails/registration.txt.twig',
array('name' => $name)
),
'text/plain'
)
*/
;
$this->get('mailer')->send($message);
return $this->render('main/homepage.html.twig');
}
在我尝试发送一些测试邮件之后,邮件只会被假脱机,而且我没有看到任何错误或类似信息。
此外,我已经使用PHPMailer在本地测试了上面的设置,并且在该库中,发送按预期工作。
当我在本地工作时,是否需要设置更多内容?
答案 0 :(得分:1)
Gmail传输只是一种使用SMTP传输的快捷方式 并设置这些选项:
Option Value
encryption ssl
auth_mode login
host smtp.gmail.com
您已经理解了错误的方法,因为您定义传输SMTP参数但实际上并未使用它,因为配置会查找Symfony自动使用Gmail SMTP默认值配置的Gmail传输,并且您只需要提供用户名和密码在参数中。
# app/config/config_dev.yml
swiftmailer:
transport: gmail
username: '%mailer_user%'
password: '%mailer_password%'
%mailer_user%
和%mailer_password%
预计将在
# app/config/parameters.yml
parameters:
# ...
mailer_user: your_gmail_username
mailer_password: your_gmail_password
我认为您没有正确配置,因为parameters.yml
没有mailer_user
,mailer_password
,如果它确实覆盖了Symfony使用的Gmail默认设置,或者不对。
无论哪种方式,请查看配置并仅填写适当的值。
另外phpmailer也无关紧要,Symfony使用Swift邮件程序。它与phpmailer一起工作,因为你可能正确设置了参数,但是如果配置错误,则Swift邮件程序会读取配置.yml
以生成传输对象,传输对象值将是错误的。
答案 1 :(得分:0)
(代表OP发布)。
上面的代码按预期工作。即使没有指定加密或端口甚至主机。邮件到达我的邮箱,但是被我的SpamAssassin设置过滤了。问题解决了。很抱歉从无到有问题:)