Email 如何确保电子邮件以yii2格式发送?

Email 如何确保电子邮件以yii2格式发送?,email,yii2,Email,Yii2,在我的项目中,当用户将一条新记录存储到数据库中时,用电子邮件发送给他以执行afterSave()方法 如何确保电子邮件已发送?我认为这与yii2或afterSave()事件无关(只要触发了afterSave事件,您可以通过示例进行验证)。当使用该课程时,您可以看到关于确保已发送电子邮件的讨论 $mail->send()并不总是返回true。如果发送过程中它所涉及的部分起作用,则返回true。因此,如果你发送到一个未知的地址,但通过gmail发送,gmail的服务器不知道该地址当时是否存在,因此它

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


如何确保电子邮件已发送?

我认为这与yii2或
afterSave()
事件无关(只要触发了afterSave事件,您可以通过示例进行验证)。当使用该课程时,您可以看到关于确保已发送电子邮件的讨论

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

如果帐户根本不存在,大多数服务器(包括gmail)仍会给出5.1.1“未知用户”响应,如果您通过SMTP直接发送到收件人的假定邮件服务器(但如果您通过中间服务器(如gmail)或使用mail()发送,则phpMail会正确报告该响应)。PHPMailer不支持这样做,但自己做只需要调用getmxr并手动设置主机。此外,如果以这种方式发送,则不需要使用身份验证

你可以做各种各样的事情,比如检查域名是否存在——如果它不存在,邮件传递将无法工作。有些服务器会接受所有地址,并在稍后发送回跳(例如,如果它们有一个处理队列较长的垃圾邮件过滤器),但如果您提前被拒绝,则相当肯定地表明该地址不存在

您还需要研究跳出处理,这将允许您删除看起来正常但后来证明不正常的地址,这与PHPMailer所做的任何事情都是完全不同的。我现在要警告你-弹跳操纵非常不愉快

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


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

我认为这与yii2或
afterSave()
事件无关(只要触发了afterSave事件,您就可以通过示例进行验证)。当使用该课程时,您可以看到关于确保已发送电子邮件的讨论

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

如果帐户根本不存在,大多数服务器(包括gmail)仍会给出5.1.1“未知用户”响应,如果您通过SMTP直接发送到收件人的假定邮件服务器(但如果您通过中间服务器(如gmail)或使用mail()发送,则phpMail会正确报告该响应)。PHPMailer不支持这样做,但自己做只需要调用getmxr并手动设置主机。此外,如果以这种方式发送,则不需要使用身份验证

你可以做各种各样的事情,比如检查域名是否存在——如果它不存在,邮件传递将无法工作。有些服务器会接受所有地址,并在稍后发送回跳(例如,如果它们有一个处理队列较长的垃圾邮件过滤器),但如果您提前被拒绝,则相当肯定地表明该地址不存在

您还需要研究跳出处理,这将允许您删除看起来正常但后来证明不正常的地址,这与PHPMailer所做的任何事情都是完全不同的。我现在要警告你-弹跳操纵非常不愉快

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


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

我建议在您概述的场景中使用事务性电子邮件服务。您感兴趣的信息以及统计数据和web钩子使这种用户管理变得更加容易。我建议您在概述的场景中使用事务性电子邮件服务。您感兴趣的信息以及统计数据和web挂钩使这种用户管理变得更加容易。