1. 安装
- 用yii 2.0框架,默认会有这个扩展
- composer require --prefer-dist yiisoft/yii2-swiftmailer
- 修改composer.json,require加入: "yiisoft/yii2-swiftmailer": "*",
2.配置
在component中加入(我用的是163的smtp服务):
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.163.com',
'username' => '***@163.com',
'password' => '******',
'port' => '25',
'encryption' => 'tls',
],
'messageConfig'=>[
'charset'=>'UTF-8',
'from'=>['***@163.com'=>'system']
],
],
3.简单使用
class Mailer
{
private static $instance;
private function __construct()
{
}
// 不可以被克隆
final public function __clone()
{
throw new Exception("RequestContext CANNOT clone! use 'instance' method");
}
public static function instance(){
if (!isset(self::$instance)) {
self::$instance = new Mailer();
}
return self::$instance;
}
/**
* 发送邮件
*
* @param string $from 发送邮箱
* @param string $to 收件邮箱
* @param string $subject 主题
* @param string $body 邮件内容,默认使用html
*
* @return bool
*/
public function sendEmail(string $from, string $to, string $subject, string $body): bool
{
if( empty($from) || empty($to) ) {
return false;
}
$mailer = Yii::$app->mailer->compose();
$mailer->setFrom($from);
$mailer->setTo($to);
$mailer->setSubject($subject);
$mailer->setHtmlBody($body);
$status = $mailer->send();
return $status;
}
}
$mailer = Mailer::instance();
$status = $mailer->sendEmail($fromMailbox, $toMailbox, $emailSubject, $emailOneBody);
4.其他
- 可以通过sendMultiple() 方法批量发送邮件。
- 可以使用邮件模板
- 支持发送附加
参考资料
yii2发送邮件教程
github开源代码