以下是我的环境描述,因为它有点特别: 我使用Windows 8.1 PC结合使用Vagrant运行的虚拟机。它基本上是一台Debian 64位机器。 这个虚拟机实际上是我的服务器。尝试使用SwiftMailer发送带有Symfony 2的电子邮件:无法与主机smtp.gmail.com建立连接[#0]
然后,我为我的项目使用Symfony 2,我试图使用SwiftMailer和gmail(使用我自己的gmail地址)来发送电子邮件,这要归功于联系表单(用户的电子邮件地址,用户和邮件内容)。
我的行为将填写表单中给出的电子邮件数据并发送邮件。 顺便说一下,它通过使用 - > isValid()方法来检查数据是否有效。
我的问题来了,我提交表单后,我收到来自SwiftMailer一个例外:连接无法与主机smtp.gmail.com建立[#0]
这里是我的config_dev.yml:
swiftmailer:
transport: gmail
username: "%gmail_user%"
password: "%gmail_password%"
delivery_address: "%gmail_user%"
encryption: ssl
host: smtp.gmail.com
port: 465
auth_mode: login
“%gmail_user%”和stuff是在一个parameters.yml文件中定义的。这里的内容:
parameters:
mailer_transport: gmail
mailer_user: null
mailer_password: null
gmail_user: [email protected]
gmail_password: my_gmail_passwd
很多在整个互联网搜索之后,我尝试了很多东西从这里或从其他地方,并没有什么做的工作:使用TLS,试图端口587,随着IP尝试smtp.gmail.com服务器给了我同样的错误。
的SSL扩展似乎也启用:
php --info | grep openssl
OpenSSL support => enabled
,并告诉OpenSSL版本一些其他的东西。
我检查了我的IMAP设置以及启用或禁用应用程序访问我的Gmail的一般设置。
我也试过telnet smtp.google.com 465
,并且自从我达到连接后它工作正常。
我只是不知道该怎么做。我希望你们中的一些人有同样的问题,可以帮助我。
祝您有美好的一天!
编辑:问题解决,一个新出现
经过进一步调查,我随机试图改变config_dev.yml文件方式:
transport: mail
这解决了我的问题与SwiftMailerException ,尽管邮件没有到达delivery_address电子邮件地址,即使我将其更改为另一个我拥有的地址(一个hotmail邮件地址)。 我会努力工作,但我希望我的解决方案能够提供帮助。
编辑#2:试图解决发送问题,但没有任何工作。
这将是一本书.. 我试图在config.yml加入这个补充卷轴系统:
spool: {type: memory }
邮件似乎因为探查告诉我,他把它交给发送。 我将此添加到我的控制器发送所有可能被缠绕的邮件:
$spool = $transport->getSpool();
$sent = $spool->flushQueue($this->container->get('swiftmailer.transport.real'));
我还添加了这个检查,如果它真的发:
if ($this->mailer->send($message)) {
echo '[SWIFTMAILER] sent email to ' . $toEmail;
} else {
echo '[SWIFTMAILER] not sending email: ' . $mailLogger->dump();
}
我真的迷路了,不知道该怎么做..
这里是一个发送邮件在控制器代码:
$message = \Swift_Message::newInstance()
->setSubject("The subject from the form")
->setFrom("The address from the form")
->setTo("The address which comes from an entity")
->setBody("The body from the form made with a twig template");
$mailer = $this->container->get('mailer');
$mailLogger = new \Swift_Plugins_Loggers_ArrayLogger();
$mailer->registerPlugin(new \Swift_Plugins_LoggerPlugin($mailLogger));
if ($mailer->send($message)) {
echo 'sent email';
} else {
echo 'not sending email: ' . $mailLogger->dump();
}
这总是告诉我'发送邮件',但我从来没有收到它。
你是说用'运输:mail'允许您发送电子邮件?这有点奇怪。你可以发布创建和发送消息的控制器吗? – George
使用'transport:mail'而不是'transport:gmail'解决了SwiftMailer异常。但是我仍然没有收到邮件,但我认为它来自线轴。 – AndoniLarz
你需要在你的配置'spool:{type:memory}'中手动添加spool。尝试添加,看看它是否工作 – George