Swiftmailer是一个类似PHPMailer邮件发送组件,它也支持HTML格式、附件发送,但它发送效率相当高,成功率也非常高,很多PHP框架都集成了Swiftmailer。

Swiftmailer需要PHP 7.0或更高版本,(proc_*函数可用。)

安装

我们使用Composer来安装Swiftmailer:

composer require "swiftmailer/swiftmailer:^6.0"

基本使用

只需填写邮箱服务器相关配置,然后填写邮件标题、发送对象和邮件内容,运行即可完成发送邮件任务:

require_once '/path/to/vendor/autoload.php';

$transport = (new Swift_SmtpTransport('smtp.163.com', 25)) // 邮箱服务器
->setUsername('your username') // 邮箱用户名
->setPassword('your password') // 邮箱密码,有的邮件服务器是授权码
; $mailer = new Swift_Mailer($transport); $message = (new Swift_Message('Wonderful Subject')) // 邮件标题
->setFrom(['john@doe.com' => 'John Doe']) // 发送者
->setTo(['receiver@domain.org', 'other@domain.org' => 'A name']) //发送对象,数组形式支持多个
->setBody('Here is the message itself') //邮件内容
; $result = $mailer->send($message);

如果发送成功,会返回$result的值为1,即true。

高级应用

发送邮件时最关键的是创建消息体,在Swift Mailer中创建消息是通过使用库提供的各种MIME实体完成的,因此我们不需要花太多时间去了解如何处理MIME实体,只需拿来使用即可。

Swift Mailer提供了创建邮件消息的一系列方法,下面列举我们常用到的一些方法:

setSubject():邮件主题

setFrom():发件人地址,数组形式,可以是多个发件人

setTo():收件人地址,数组形式,可以是多个收件人

setBody():邮件内容

addPart():邮件内容指定输出类型,支持html内容输出

attach():添加附件

setCc():抄送,支持多个邮箱地址

setBcc():密送,支持多个邮箱地址

常见问题

1. 报错信息:Fatal error: Uncaught Swift_TransportException: Failed to authenticate on SMTP server with username xxx...

很显然是邮件服务的账号密码不正确导致验证不能通过。目前163免费邮和QQ邮箱等提供给第三方客户端使用的SMTP/POP等服务需要设置一个授权码,具体可以到邮箱里设置。然后将正确的邮箱账号和授权码配置到Swift Mailer中即可。

2. 报错信息:PHP Fatal error: Uncaught Swift_TransportException: Connection could not be established with host smtp.163.com

不能连接上邮件服务器。如果出现这个情况,建议尝试改成ssl协议。笔者在本地使用官方的25端口发送邮件一切正常,到放到公网服务器上就提示如上错误信息了,折腾了好久,改下协议和端口,成功了:

$transport = (new Swift_SmtpTransport('ssl://smtp.163.com', 465))

(Swiftmailer)高效的PHP邮件发送库的更多相关文章

  1. PHP邮件发送库:Swiftmailer

    Swiftmailer需要PHP 7.0或更高版本,(proc_*函数可用.) 安装 composer require "swiftmailer/swiftmailer:^6.0" ...

  2. thinkphp 整合 swiftmailer 实现邮件发送

    thinkphp swiftmailer(phpmailer) 文件夹结构 图 1 swiftmailer-phpmailer 将swiftmailer整合到thinkphp中.如上图 1 我下载的版 ...

  3. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  4. Laravel - 上手实现 - 邮件发送

    Laravel 自带 SwiftMailer 库,集成了多种邮件API,可以很方便的实现邮件的发送. 我们使用到的是SMTP(Simple Message Transfer Protocol)简单邮件 ...

  5. C#邮件发送问题(二)

    C#邮件发送问题(一) 三.C#下创建基于TcpClient发送邮件组件 在上一节在Dos命令行下测试SMTP服务器连接时,已经使用了SMTP的部分命令,但是当时无法对信息进行编码和解码,也就无法继续 ...

  6. 转:Node.js邮件发送组件- Nodemailer 1.0发布

    原文来自于http://www.infoq.com/cn/news/2014/07/node.js-nodemailer1.0-publish Nodemailer是一个简单易用的Node.js邮件发 ...

  7. .NET开发邮件发送功能

    .NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知 ...

  8. 解决Yii2邮件发送问题(结果返回成功,但接收不到邮件)

    刚刚用了一下yii邮件发送功能,虽然结果返回成功,但接收不到邮件.配置文件代码如下: 'components' => [ 'db' => [ 'class' => 'yii\db\C ...

  9. java 邮件发送工具类

    首先需要下载mail.jar文件,我个人通常是使用maven中心库的那个: <dependency> <groupId>javax.mail</groupId> & ...

随机推荐

  1. CentOS安装svn(subversion)版本管理

    yum -y install subversion svnadmin create /svn/repository cd /svn/repository/conf ll  查看文件-rw-r--r-- ...

  2. JEECG 上传插件升级-标签

    前言: 现有的uploadify上传是基于swf的,随着H5的普及,flash即将退出历史舞台,JEECG团队本着与时俱进的原则,将全面升级JEECG系统中的上传功能,采用新式上传插件plupload ...

  3. activiti官网实例项目activiti-explorer实操详情

    参考链接:https://www.xuchuruo.cn/Activiti-modeler%E6%95%B4%E5%90%88%E5%88%B0Spring.html 按照链接文章提示操作完成之后,启 ...

  4. Mybatis级联:关联、集合和鉴别器的使用

    Mybatis中级联有关联(association).集合(collection).鉴别器(discriminator)三种.其中,association对应一对一关系.collection对应一对多 ...

  5. K8s快速入门

    在k8s中所有的内容都抽象为资源,资源实例化之后,叫做对象.一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单 资源清单的格式: apiVersion: ...

  6. 使用cmd命令导入SQL文件

    1 . 进入SQL安装目录下的bin目录,比如我的是在 C:\Program Files\MySQL\MySQL Server 5.5\bin目录下 2. 开始 --->运行--->输入c ...

  7. CamStar insitexmlclient重新封装为.net Core类库

    工作原因经常使用camstar的 InsiteXMLClient类库做二次开发,但是只能在4.X环境下使用,对于日益繁荣的.net core生态,花费了些时间把原有的类库重新封装为.net core ...

  8. 网页html格式导出Excel.xls

    1.创建excel方法 /// <summary> /// 创建Excel表格 /// </summary> /// <param name="dt" ...

  9. vscode快捷键

    vscode快捷键 按 ctrl+shift+p 查找设置文件Ctrl + W 关闭编辑器 设置定位到终端的快捷键:打开键盘配置文件,搜索focus terminal,找到聚焦到终端的命令,添加ctr ...

  10. Apache Flink 分布式运行时环境

    Tasks and Operator Chains(任务及操作链) 在分布式环境下,Flink将操作的子任务链在一起组成一个任务,每一个任务在一个线程中执行.将操作链在一起是一个不错的优化:它减少了线 ...