如何允许我的用户在Yii2中使用自己的外部SMTP

时间:2018-04-18 04:30:39

标签: api yii2 smtp mailgun mailer

我有一个应用程序,我希望我的用户能够添加自己的SMTP服务器,无论是通过Mailgun,Amazon SES等。

如果我们以邮件枪为例,现在我的Mailgun设置在config / web.php中就像这样

'mailgun' => [

               'class' => 'boundstate\mailgun\Mailer',
                       'key' => 'MYKEY',
                       'domain' => 'DOMAIN',

                ],

然后我使用以下内容撰写电子邮件

Yii::$app->mailgun->compose()->setFrom($FROM)
                                    ->setReplyTo($contest_creator_email)
                                    ->setTo($email)
                                    ->setSubject($subject_line)
                                    ->setTextBody($plaintext)
                                    ->setHtmlBody($htmlemail)
                                    ->send();

我如何制作它以便我的用户可以设置自己的密钥而不是使用我的密钥?有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以通过设置邮件程序配置来执行此操作。

在发送电子邮件之前,您可以在api / controller中设置邮件程序配置。

//Set config value dynamicaly
        Yii::$app->set('mailer', [
            'class' => 'yii\swiftmailer\Mailer',
            'useFileTransport' => false,
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'YourHostName',
                'username' => 'UserName',
                'password' => 'Password',
                'port' => 'Port',
                'encryption' => 'Encryption'
            ],
        ]);

并发送邮件如下。

 Yii::$app->mailer->compose()->setFrom($FROM)
                                ->setReplyTo($contest_creator_email)
                                ->setTo($email)
                                ->setSubject($subject_line)
                                ->setTextBody($plaintext)
                                ->setHtmlBody($htmlemail)
                                ->send();