本文概述
- 1. gethostbyname也许是你的敌人还是盟友
- 2.更改Gmail的SMTP
- 3.如果你使用Symfony
许多开发人员在使用Swift Mailer和Gmail发送电子邮件时都遇到了这个问题, 可惜每种可能的解决方案可能并不适用于所有人。在本文中, 我们将分享一些可能的解决方案, 它们可能有助于解决你项目中的这个问题。
1. gethostbyname也许是你的敌人还是盟友 PHP的gethostbyname函数获取与给定Internet主机名相对应的IPv4地址。在某些情况下, 此功能有助于使代码正常工作, 但对于另一些将smtp地址作为字符串提供的方法则可以解决问题(我们建议你同时测试一下, 看看会发生什么情况):
<
?php // For some users works using the gethostbyname function $smtp_host_ip = gethostbyname('smtp.gmail.com');
// But for others only the smtp address $smtp_host_ip = 'smtp.gmail.com';
$transport = \Swift_SmtpTransport::newInstance($smtp_host_ip, 465, 'ssl')->
setUsername('qweqwe@qweqweqew.com')->
setPassword('qweqwe+');
$mailer = \Swift_Mailer::newInstance($transport);
$message = \Swift_Message::newInstance()->
setFrom(array("john@doe.com" =>
'John Doe'))->
setTo(array("john@doe.com" =>
'John Doe'));
$message->
setBody('<
h3>
Contact message<
/h3>
', 'text/html');
$mailer->
send($message);
2.更改Gmail的SMTP 你可以使用SMTP, SSL / TLS连接到Gmail邮件服务器。要使用Swift Mailer做到这一点, 你需要在端口465上连接到smtp.gmail.com, 但是, 如果你在尝试发送电子邮件时收到上述异常, 请更改gmail的smtp地址, 而不要使用smtp.gmail.com以下任何IP或地址:
- 173.194.65.108
- 173.194.205.108
- 74.125.133.108
- gmail-smtp-msa.l.google.com
文章图片
如前所述, 这在某些情况下可能有效。
3.如果你使用Symfony 如果你在symfony项目中工作, 使用SwiftMailer发送电子邮件的代码可能类似于:
public function indexAction($name){$message = \Swift_Message::newInstance()->
setSubject('Hello Email')->
setFrom('send@example.com')->
setTo('recipient@example.com')->
setBody($this->
renderView(// app/Resources/views/Emails/registration.html.twig'Emails/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(...);
}
无论通过哪种方式, 你的代码都无法直接处理凭据, 因为它们是通过parameters.yml文件或config.yml检索的, 这可能会帮助你解决问题。首先修改你的parameter.yml(或根据你的工作流配置config.yml)中的传输选项:
# Swiftmailer Configurationswiftmailer:transport: mail
然后将假脱机类型设置为内存:
# app/config/config.ymlswiftmailer:# ...spool: { type: memory }
或在parameters.yml中(根据你的工作流程):
# app/config/parameters.ymlparameters:spool: { type: memory }
当你使用SwiftmailerBundle从Symfony应用程序发送电子邮件时, 默认情况下将立即发送电子邮件。但是, 你可能希望避免Swift Mailer和电子邮件传输之间的通信性能下降, 这可能导致用户在发送电子邮件时等待下一页加载。通过选择” 假脱机” 电子邮件而不是直接发送电子邮件, 可以避免这种情况。这意味着Swift Mailer不会尝试发送电子邮件, 而是将消息保存到文件等位置。然后可以从后台处理程序中读取另一个进程, 并负责在后台处理程序中发送电子邮件。目前, Swift Mailer仅支持后台处理到文件或内存。
【无法与主机smtp.gmail.com(173.194.205.108)建立SwiftMailer连接[#0]】愿力量与你同在, 祝你编程愉快!
推荐阅读
- 使用C#在Winforms中创建扫描应用程序
- centos7如何查看已有用户
- RocketMQ消息发送流程
- 全面认识Windows环境变量
- [C++] 类与对象(中) 一篇带你解决运算符重载实例--日期类Date
- Windows环境下实现WireShark抓取HTTPS
- SpringBoot Mail邮件任务
- Windows下PATH等环境变量详解
- win10系统,maven已经配置了环境变量,执行mvn命令还是提示不是内部命令