为什么Yii2中SwiftMailer不显示发件人电子邮件?

3

我这里有一个问题。我在我的网页上创建了一个联系表单,其中包括:姓名姓氏电子邮件描述。当我提交表单时,邮件发送了,但发件人的电子邮件是我的电子邮件。例如:

http://imageshack.com/a/img922/801/eVyutz.png

my.email@gmail.com 显示的不是用户在表单中输入的电子邮件,而是我的电子邮件。之后,当我点击“回复”按钮并输入一条消息时,我会将其发送给自己。为什么?

以下是我所做的:

我的mailer

        'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'useFileTransport' => false,
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.gmail.com',
            'username' => 'my.email@gmail.com',
            'password' => 'password',
            'port' => '465',
            'encryption' => 'ssl',
            'streamOptions' => [ 'ssl' =>
                [ 'allow_self_signed' => true,
                  'verify_peer' => false,
                  'verify_peer_name' => false,
                ],
            ]
        ],
    ],

我的 actionContact() 方法:
public function actionContact() 
{
    $model = new Contact();
    $model->scenario = Contact::SCENARIO_CREATE;

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
            Yii::$app->getSession()->setFlash('success', Yii::t('app', 'Success'));
        }
        else {
            Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Failed'));
        }
        return $this->refresh();
    } else {
        return $this->render('contact', [
            'model' => $model,
        ]);
    }
}

我有一个 模型函数:

public function sendEmail($email) 
{
    return Yii::$app->mailer->compose()
            ->setTo($email)
            ->setFrom([$this->email => $this->name." ".$this->surname])
            ->setSubject($this->subject)
            ->setTextBody($this->text)
            ->send();
}

请帮我解决这个问题,出了什么问题?感谢任何帮助!我猜测变量$email可能存在问题,因为当我使用setFrom设置email时,只显示我的电子邮件。
1个回答

0

可能是因为你没有给 $this->email 赋一个正确的值(可以尝试使用 var_dump($this->email) 来检查,还有 $this->name 和 $this->username) 你可以在 param.php 中使用一个正确的参数来赋值

  <?php
  return [
      'adminEmail' => 'my_mail@my_domain.com',
  ];

.

public function sendEmail($email) 
{
    return Yii::$app->mailer->compose()
            ->setTo($email)
            ->setFrom([\Yii::$app->params['adminEmail'] => $this->name." ".$this->surname])
            // ->setFrom([\Yii::$app->params['adminEmail'] => 'try fixed test if $this->name and username not work'])           
            ->setSubject($this->subject)
            ->setTextBody($this->text)
            ->send();
}

我尝试将 setFrom 替换为 ->setFrom([\Yii::$app->params['adminEmail'] => $this->name." ".$this->surname]),但这并没有帮助。反正我也是在和自己聊天 :( - HarryFlopper
你真正理解我的问题了吗?发送者的“名字”和“姓氏”显示正确,但是他在表单中写的“电子邮件”却显示成了我的,因此我无法回复他。 - HarryFlopper
和 $this->email ... 包含什么?用 var_dump($this->email); 会得到什么? - ScaisEdge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接