yii2-swiftmailer入门

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开源代码

上一篇:SQL Server 导入数据失败:无法在只读列“Id”中插入数据


下一篇:java知识随笔