Yii2 通过任何用户名和密码发送电子邮件

Yii2 Send email by any username and password

我如何通过任何电子邮件帐户和密码发送电子邮件,如下所示或通过任何其他方式:

$mail->setFrom('from@gmail.com');
$mail->setPassword('abcxyz');
$mail->setHeader('This is a header');
$mail->setBCC('bcc@gmail.com');
$mail->setCC('cc@gmail.com');
$mail->setContent('contents absjadha ');
$mail->send();

我有超过 100 封电子邮件,我想用它向我的用户发送电子邮件让他们通过我的工具给其他人发邮件。有什么 Yii2 插件或扩展可以帮助我解决这个问题吗?前提是他们所有的 电子邮件和密码都存储在我的数据库中 。提前致谢!

首先,您已设置电子邮件凭据以发送电子邮件:有关详细信息,您可以阅读 read email tutorial 所以在你的配置文件中 main.php or main-local.php

'mailer' => [
           'class' => 'yii\swiftmailer\Mailer',
           'viewPath' => '@common/mail',
           'transport' => [
               'class' => 'Swift_SmtpTransport',
               'host' => 'smtp.gmail.com',
               'username' => 'emailaddress',
               'password' => '******',
               'port' => '587',
               'encryption' => 'tls',
           ],
           'useFileTransport' => false,
       ],

配置邮件程序组件后,您可以使用以下代码发送电子邮件:

Yii::$app->mailer->compose()
    ->setFrom('from@domain.com')
    ->setTo('to@domain.com')
    ->setSubject('Message subject')
    ->setTextBody('Plain text content')
    ->setHtmlBody('<b>HTML content</b>')
    ->send();

在上面的示例中,方法 compose() 创建了邮件消息的实例,然后填充并发送该实例。如果需要,您可以在此过程中加入更复杂的逻辑:

$message = Yii::$app->mailer->compose();
if (Yii::$app->user->isGuest) {
    $message->setFrom('from@domain.com');
} else {
    $message->setFrom(Yii::$app->user->identity->email);
}
$message->setTo(Yii::$app->params['adminEmail'])
    ->setSubject('Message subject')
    ->setTextBody('Plain text content')
    ->send();

您可以为此任务实例化自定义邮件程序组件:

$mailer = Yii::createObject([
    'class' => 'yii\swiftmailer\Mailer',
    'viewPath' => '@common/mail',
    'transport' => [
        'class' => 'Swift_SmtpTransport',
        'host' => $userHost,
        'username' => $userEmail,
        'password' => $userPassword,
        'port' => 587,
        'encryption' => 'tls',
    ],
]);

$mail = $mailer->compose('@common/mail/cron_acordo', ['model_definicoes' => $model_definicoes]);
$mail->setFrom('from@gmail.com');
$mail->setPassword('abcxyz');
$mail->setHeader('This is a header');
$mail->setBCC('bcc@gmail.com');
$mail->setCC('cc@gmail.com');
$mail->setContent('contents absjadha ');
$mail->send($mailer);

将其直接放入 Controller

Yii::$app->mailer->setTransport([
    'class' => 'Swift_SmtpTransport',
    'host' => 'smtp.gmail.com',
    'username' => $emailFrom,
    'password' => $password,
    'port' => '465',
    'encryption' => 'ssl',
    // smtp.gmail.com    ---   StartTLS ---   587
    // smtp.gmail.com    ---    SSL       ---      465
]);

这一行之前

Yii::$app->mail->compose('@common/mail/cron_acordo', ['model_definicoes' => $model_definicoes])