邮件组件的配置取决于您选择的扩展名。通常,您的应用程序配置应如下所示:
在配置文件中配置
<?php
return [
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
'timeZone'=>'Asia/Chongqing',
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=root',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
],
//这里以QQ邮箱作为例子//邮箱添加mailer中的代码
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'encryption' => 'tls',
//这里的host是qq邮箱发送邮件的地址
'host' => 'smtp.qq.com',
'port' => '587',
//你的qq号
'username' => '',
//这里的参数需要申请,点击qq邮箱界面的设置-》账户-》找到(POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务)-》开启(POP3/SMTP服务)-》会有一个密钥填入就行
'password' => '',
],
],
'cache' => [
'class' => 'yii\caching\FileCache',
'cachePath' => '@runtime/cache2',
],
'assetManager' => [
'forceCopy' => true,
'appendTimestamp' => true,
],
],
];
在你需要的地方调用
// 发送邮件类
public function actionSendout(){
//$mail= Yii::$app->mailer->compose();
//$mail->setTo('15293641206@163.com'); //要发送给那个人的邮箱
// $mail->setSubject("邮件主题"); //邮件主题
// $mail->setTextBody('测试text'); //发布纯文字文本
//$mail->setHtmlBody("测试html text"); //发送的消息内容
//var_dump($mail->send());
sleep(30);
//查询数据库
$data = Mails::find()->asArray()->all();
$mail= Yii::$app->mailer->compose();
//发送者的邮箱
$mail->setFrom('xxxx@qq.com');
//接收者的邮箱
$mail->setTo('xxxx@qq.com');
$mail->setSubject('客户名单');
$mail->setTextBody('Plain text content');
//这里是多条发送
$messages='';
foreach ($data as $user) {
$messages.="
<p>公司:".$user['company']."</p>
<p>姓名:".$user['name']."</p>
<p>邮箱:".$user['mails']."</p>
<p>电话:".$user['phone']."</p>
<p>省:".$user['province']."</p>
<p>市:".$user['city']."</p>
<p>留言内容:".$user['content']."</p>
";
$mail->setHtmlBody($messages);
$mail->send();
$messages='';
}
//这里是单条发送
//$mail->setHtmlBody('你好');
//$mail->send();
Yii::$app->session->setFlash('success','发送成功');
Yii::$app->session->setFlash('error','邮件发送失败');
return $this->redirect(Url::toRoute(['index']));
}