如何确保电子邮件是在yii2中发送的?

时间:2016-09-02 11:43:13

标签: email yii2

在我的项目中,当用户将新记录存储到数据库时,向他发送电子邮件以执行afterSave()方法。

如何确保电子邮件已发送?还是成功发送了? yii中是否包含发送电子邮件内容的文件夹?

1 个答案:

答案 0 :(得分:2)

我不认为这与yii2或afterSave()事件有关(只要触发了afterSave事件,您可以通过Runtime Logging验证)。使用PHPMailer课程时,您可以看到this关于确保发送电子邮件的讨论。

  

$ mail-> send()并不总是返回true。如果它所涉及的发送过程的部分有效,则返回true。因此,如果您发送到一个未知地址,但通过gmail发送,gmail的服务器当时不知道该地址是否存在,因此它将被接受并在以后退回。如果您在通过Gmail发送时发送到gmail地址,则会立即失败。

     

如果帐户根本不存在,大多数服务器(包括gmail)仍会提供5.1.1"未知用户"响应,如果您通过SMTP直接发送给收件人的所谓邮件服务器(但不是通过中间服务器(如gmail)或使用mail())发送,PHPMailer将正确报告。 PHPMailer没有内置支持,但是自己动手只需要调用getmxrr并手动设置Host。如果你以这种方式发送,你也不需要使用身份验证。

     

您可以执行各种操作,例如检查域是否存在 - 如果不存在,则邮件传递无法正常工作。有些服务器会接受所有地址并稍后发送退回(例如,如果他们有一个带有长处理队列的垃圾邮件过滤器),但如果你被预先拒绝,那么它很可能表明该地址没有存在。

     

您还需要查看退回处理,这将允许您删除看起来不错但后来证明不是的地址,这与PHPMailer所做的完全不同。我现在会警告你 - 弹跳处理非常不愉快!

     

您还应该在端口587上使用tls发送,而不是在465上使用ssl发送;请参阅PHPMailer提供的gmail示例。

我还建议您通过PHPMailer通过SMTP身份验证连接发送邮件。

相关问题