(Swiftmailer)高效的PHP邮件发送库
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邮件发送库的更多相关文章
- PHP邮件发送库:Swiftmailer
Swiftmailer需要PHP 7.0或更高版本,(proc_*函数可用.) 安装 composer require "swiftmailer/swiftmailer:^6.0" ...
- thinkphp 整合 swiftmailer 实现邮件发送
thinkphp swiftmailer(phpmailer) 文件夹结构 图 1 swiftmailer-phpmailer 将swiftmailer整合到thinkphp中.如上图 1 我下载的版 ...
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- Laravel - 上手实现 - 邮件发送
Laravel 自带 SwiftMailer 库,集成了多种邮件API,可以很方便的实现邮件的发送. 我们使用到的是SMTP(Simple Message Transfer Protocol)简单邮件 ...
- C#邮件发送问题(二)
C#邮件发送问题(一) 三.C#下创建基于TcpClient发送邮件组件 在上一节在Dos命令行下测试SMTP服务器连接时,已经使用了SMTP的部分命令,但是当时无法对信息进行编码和解码,也就无法继续 ...
- 转:Node.js邮件发送组件- Nodemailer 1.0发布
原文来自于http://www.infoq.com/cn/news/2014/07/node.js-nodemailer1.0-publish Nodemailer是一个简单易用的Node.js邮件发 ...
- .NET开发邮件发送功能
.NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知 ...
- 解决Yii2邮件发送问题(结果返回成功,但接收不到邮件)
刚刚用了一下yii邮件发送功能,虽然结果返回成功,但接收不到邮件.配置文件代码如下: 'components' => [ 'db' => [ 'class' => 'yii\db\C ...
- java 邮件发送工具类
首先需要下载mail.jar文件,我个人通常是使用maven中心库的那个: <dependency> <groupId>javax.mail</groupId> & ...
随机推荐
- The type initializer for System.Data.SqlClient.SqlConnection threw an exception
The type initializer for System.Data.SqlClient.SqlConnection threw an exception net framwork啥原因 xp电脑
- 安装SQL server 2008 R2和QL server 2008,与SQL server 2008升级SQL server 2008 R2
安装SQL server 2008 R2和由SQL server 2008升级SQL server 2008 R2 前提条件: 由SQL server2008 升级SQL server2008 R2 ...
- Java框架spring 学习笔记(六):属性注入
属性注入:创建对象的时候,向类里面的属性设置值. Java属性注入有三种方法: 使用set方法注入 有参数构造注入 使用接口注入 Spring框架里面的属性注入方式 有参数构造属性注入 set方法属性 ...
- 通过.ibd和.frm恢复mysql数据
背景:因为机器损坏,数据库的索引文件什么的都损坏了.只留下了一个mysql的data目录… 此方法恢复数据的前提:建表用的innodb索引 备注:如果mysql的目录还都在,可以先尝试,将mysq ...
- Node.js 薄荷网爬取
Node.js:是一个基于前端的服务器,主要的特点:单线程,异步I/O(对这个没有了解,开发起来真的会踩很多坑),事件驱动 前言:本人主要是一个以使用.Net平台下的语言,进行开发的一个菜鸡,之前面试 ...
- springboot+maven多模块工程dependency not found
参见:https://blog.csdn.net/m0_37943753/article/details/81031319. 重点是<dependencyManagement>标签的作用, ...
- 长短steamId互转
/** * steam_id转换account_id * @param $steamId * @return mixed */ public static function formatAccount ...
- Apache Traffic Server
1. ats 安装 参考:https://docs.trafficserver.apache.org/en/latest/getting-started/index.en.html#installat ...
- 100-days: twenty-two
Title: Why urban millennials love Uniqlo(优衣库) urban adj.都市的:具有城市或城市生活特点的; 市内; millennial n.千禧世代 mill ...
- L3-021 神坛(极角排序求三角形最小面积)
在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...