我试图在Yii发送电子邮件2.一切都很好但我有一个奇怪的事情 - 我总是收到错误的电子邮件"来自"地址(用setFrom()
设置)。
这是代码:
public function afterSave($insert, $changedAttributes){
$this->send_email($this->attributes);
}
此属性来自我的表单到电子邮件发送方法,并且数据是正确的。在下一步中,我尝试发送电子邮件:
public function send_email($data)
{
return Yii::$app->mailer->compose('contactEmail', ['data'=>$data])
->setFrom($data['email'])
->setTo('johny@gmail.com')
->setSubject($data['subject'])
->setTextBody($data['message'])
->send();
}
我想始终将电子邮件发送到我的地址:johny@gmail.com
。我总是收到邮件,但电子邮件是从地址johny@gmail.com
发送的,而不是从$data['email']
中设置的。我已尝试使用var_dump
进行检查,并在此处获得了正确的数据:
public function send_email($data)
{
var_dump($data['email']);
exit();
return Yii::$app->mailer->compose('contactEmail', ['data'=>$data])
->setFrom($data['email'])
->setTo('johny@gmail.com')
->setSubject($data['subject'])
->setTextBody($data['message'])
->send();
}
例如,当我填写所有表单输入时,我设置test@gmail.com
作为发件人var_dump
返回test@gmail.com
但是当我检查收到的电子邮件时,它始终来自johny@gmail.com
。我使用->setFrom('test@gmail.com')
时的相同情况 - 在Gmail中仍然收到来自johny@gmail.com
的消息。我无法理解为什么我无法通过表单中输入的电子邮件收到消息。我在这做错了什么?
答案 0 :(得分:1)
如果不知道您使用什么作为SMTP服务器,很难回答这个问题。
假设您使用Gmail(smtp.gmail.com)作为SMTP服务器:
问题在于Gmail服务器本身配置的设置。它不允许您将From字段指定为除电子邮件地址或其中一个别名之外的值。因此,如果您通过身份验证johny@gmail.com
,您将被允许以johny@gmail.com
或任何配置为别名的帐户发送电子邮件。
有关别名的详细信息,请参阅:https://support.google.com/mail/answer/22370?hl=en。
如果您不使用Gmail(smtp.gmail.com)作为SMTP服务器:
请提供您的SMTP配置(不要忘记排除密码)?
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'transport' => [
'class' => 'Swift_SmtpTransport',
--->.........
],