官方文档:http://www.yiiframework.com/doc-2.0/guide-tutorial-mailing.html

使用Yii2框架的时候,有时候需要发送电子邮件,Yiii2提供了swiftMailer扩展来实现;

1、swiftMailer

Swift是一个完全采用面向对象编码用于发送e-mail的PHP函数库。Swift不依赖于PHP的mail()函数,因为用它发送多封邮件时会占用较高的服务器资源。Swift通过直接连到SMTP服务器或MTA能够更快,更高效地发送邮件。

2、安装:

https://github.com/yiisoft/yii2-swiftmailer

这里有具体的安装方法以及使用方法:

a、配置:

return [
//....
'components' => [
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' => false,
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.163.com',
'username' => '***@163.com',
'password' => '******', //这里需要注意,一些邮箱如果在第三方邮箱登录以下等服务POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV,会要求设置登录授权码,登录的时候,密码是输的这个授权码,这里填写的password也相应的是这个授权码
'port' => '25',
'encryption' => 'tls',
],
'messageConfig'=>[
'charset'=>'UTF-8',
'from'=>['***@163.com'=>'**客服']
],
],
],
];

3、使用:

$mail= Yii::$app->mailer->compose();
$mail->setTo('***@163.com'); //要发送的邮箱
$mail->setSubject("邮件主题"); //邮件主题
$mail->setTextBody('纯文本内容'); //发布纯文字文本
$mail->setHtmlBody("消息内容"); //发送的消息内容
$res = $mail->send();

注意:批量发送的时候,只需要在setTo防范重传入邮箱数组即可,setTo([‘mail1@mail.com’,‘mail1@mail.com’])

4、自定义邮件模板:

我们在配置的时候会做一些配置,其中有一项为

'viewPath' => '@common/mail',

因此我们可以在该目录下创建新的模版文件template.php,内容自己随便写

然后在定义的时候:

Yii::$app->mailer->compose('template',['params'=>'参数1'])

即参数传入模板文件的名称。当然也支持传入参数,即为第二个参数

5、自定义layout

为邮件定制layout,,假如layout放在common\layouts\mail下,文件为layout.php:

Yii::$app->mailer->compose('template', [
'html' => 'layout', //key固定,value是模版文件名
'params' => '参数1'
]) ->setTo('**@163.com')
->setSubject(*****主题')
->send();

6、发送带附件的邮件:发送邮件并以附件的形式带上一张图片和一个word文档

$message = Yii::$app->mailer->compose();
$message->attach('图片可访问地址');
$message->attachContent('Attachment content', ['fileName' => 'test.word', 'contentType' => 'text/plain']);
$message->setTo('***@163.com');
$message->setSubject('***主题');
$message->send();

注意:想把图片放在邮件内容,而不是附件发送,可以通过模板文件并传入参数的方法实现,但是部分邮箱还是会将图片摘出来,以附件的形式发送

Yii2之发送电子邮件的更多相关文章

  1. JAVA实现发送电子邮件

    相信大家对于网站也好,手机app也好,用户注册时,需要进行邮箱验证的功能特别好奇吧,本篇我将带领大家一起实现一下这个简单而又神奇的小功能,让我们的应用也可以加入这些神奇的元素.废话不多说,下面开始我们 ...

  2. WordPress ”无法发送电子邮件,可能原因:您的主机禁用了mail()函数“的解决办法

    WordPress网站中出现 "无法发送电子邮件,可能原因:您的主机禁用了mail()函数"的情况一般都是因为所在主机环境不支持在线邮件收发功能导致,如果不支持的话,那么像类似 N ...

  3. javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)

    引言: JavaMail 是一种可选的.能用于读取.编写和发送电子消息的包 JavaMail jar包下载地址:http://java.sun.com/products/javamail/downlo ...

  4. javamail模拟邮箱功能发送电子邮件-中级实战篇【新增附件发送方法】(javamail API电子邮件实例)

    引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...

  5. 在ASP.NET中发送电子邮件的实例教程

    首先.导入命名空间: 代码如下 复制代码 using System.Net.Mail; 定义发送电子邮件的方法[网上很多不同的,可以对比着看一下,WinForm的也适用]: 代码如下 复制代码 /// ...

  6. ASP.NET 发送电子邮件简介

    1.补充知识 (1)POP3和SMTP服务器是什么? 简单点来说:POP3 用于接收电子邮件 ,SMTP 用于发送电子邮件. (1)POP3具体指什么? POP3(Post Office Protoc ...

  7. 使用php发送电子邮件(phpmailer)

    在项目开发过程中,经常会用到通过程序发送电子邮件,例如:注册用户通过邮件激活,通过邮件找回密码,发送报表等.这里介绍几种通过PHP发送电子邮件的 方式(1)通过mail()函数发送邮件(2)使用fso ...

  8. 利用Excel批量高速发送电子邮件

    利用Excel批量高速发送电子邮件,分两步: 1. 准备待发送的数据: a.) 打开Excel,新建Book1.xlsx b.) 填入以下的内容, 第一列:接收人,第二列:邮件标题,第三列:正文,第四 ...

  9. Spring发送电子邮件

      Spring提供了发送电子邮件的功能,它向用户屏蔽了底层邮件系统的一些细节,同时代表客户端负责底层的资源处理. Spring的邮件服务支持主要是通过JavaMailSender这个接口实现的: p ...

随机推荐

  1. Java基础学习总结一(Java语言发展历史、JDK下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...

  2. qt中qlineedit和qtextedit右键菜单翻译成中文

    没有linguist和lupdate等命令需要安装Linguist: 在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtco ...

  3. Eclipse控制台输出信息的控制(引用其他人的博客)

    当你在Eclipse中 running/debugging一个应用程序的时候,有关该应用程序的运行调试信息及日志信息都会输出到控制台(console )显示,但是Eclipse只会显示最后一部分的日志 ...

  4. notepad ++ 编辑 powershell profile 文件时的诡异问题

    使用notepad 编辑 C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 时,记事本打开和用notepad++打开显示的内容居然不一样. ...

  5. 【Leetcode】【Medium】Letter Combinations of a Phone Number

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  6. IE Edge 下载文件的时候,文件名不能有windows不支持的特殊字符

    IE Edge 下载文件的时候,文件名不能有windows不支持的特殊字符,比如:等. 马了个批的,其他浏览器包括IE就可以自动转换,比如:会自动变为_.

  7. xtrabackup在线迁移mysql并搭建为主主同步

    一.背景 工作中有需求数据库需要迁移,但是不能停服,不能锁库锁表影响业务的正常运行,所以使用XtraBackup 二.环境: 操作系统:CentOS Linux release 7.4.1708 (C ...

  8. Ios国际化翻译工具

    IOS Translation Tool(IOS国际化翻译工具) 介绍 当IOS项目国际化的时候,手工去翻译每一个字符串是一件非常痛苦的事情.尤其是当项目中存在N多种语言.而且又很难保证,手工翻译的准 ...

  9. AlexNet 分类 FashionMNIST

    from mxnet import gluon,init,nd,autograd from mxnet.gluon import data as gdata,nn from mxnet.gluon i ...

  10. SP34096 【DIVCNTK - Counting Divisors (general)】

    题目 求 \[\sum_{i=1}^n \sigma(i^k)\] 我们先来设一个函数\(f(i)=\sigma(i^k)\) 根据约数个数定理 \[f(p)=\sigma(p^k)=k+1\] \[ ...