Download the PHP package yuan1994/tp-mailer without Composer

On this page you can find all versions of the php package yuan1994/tp-mailer. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package tp-mailer

Tp Mailer

一款支持所有PHP框架的优美的邮件发送类,ThinkPHP系列框架开箱即用,其他框架初始化配置即可使用

基于 SwiftMailer 二次开发, 为 ThinkPHP系列框架量身定制, 使 ThinkPHP 支持邮件模板、纯文本、附件邮件发送以及更多邮件功能, 邮件发送简单到只需一行代码

同时了方便其他框架或者非框架使用, Tp Mailer也非常容易拓展融合到其他框架中, 欢迎大家 ForkStar, 提交代码让Tp Mailer支持更多框架

目录

优雅的发送邮件

ThinkPHP5 示例

你也可以这样: ThinkPHP3.2.3 示例

你还可以这样: ThinkPHP3.1.3 示例

安装

使用 Composer 安装 (强烈推荐):

支持 psr-4 规范, 开箱即用

github下载 或 直接手动下载源码:

需手动引入自动载入文件

下载文件:

git clone https://github.com/yuan1994/tp-mailer tp-mailer

git clone https://github.com/swiftmailer/swiftmailer swiftmailer

或者点击直接下载:

https://github.com/yuan1994/tp-mailer/archive/master.zip

https://github.com/swiftmailer/swiftmailer/archive/5.x.zip

移动文件夹:

然后将两个项目分别手动命名为 tp-mailerswiftmailer, 放在自己项目的扩展类库文件夹里, 这两个文件夹必须在同一目录, 目录结构大概如下所示:

引入自动载入文件:

使用时引入或者全局自动引入

require_once '/path/to/tp-mailer/src/autoload.php;

配置

在配置文件里配置如下信息, 可以配置在 mail.phpconfig.php 文件中, 但要保证能通过 mail.driver, mail.host 访问到配置信息, 内容如下:

部分配置详解

driver

可选值可以是字符串、数组、对象。如果是字符串,只能是 smtp|sendmail|mail,即内置的三种邮件驱动;如果是数组,必须是可以实例调用的方法,例如 ['mailer\\lib\\Transport', 'createSmtpDriver'] ,即是调用的 (new mailer\lib\Transport)->createSmtpDriver() 方法,如果是对象,就是返回的一个 Swift_Transport 对象,详情请查看 SwiftMailer 官网

log_left_delimiter & right_delimiter

该值为内置模板变量 (调用text(),raw(),line(),html()方式时传递的变量) 定界值,例如默认定界值时 {name}, 如果变量为 ['name' => 'tp-mailer'],那么 {name} 会被替换为 tp-mailer,加入模板中变量占位符是 {$name},那么此时可以修改左定界符为 {$,此时 {$name} 也能被正常替换为 tp-mailer

log_driver

日志驱动,如果不配置则为类库自带简单的日志驱动 mailer\lib\log\File,可自定义配置为框架的日志驱动,例如 'log_driver' => '\\think\\Log',日志驱动类必须实现静态方法 write,例如:

log_path

日志驱动为默认是日志存储路径,不配置默认为 tp-mailer/log/,例如可配置为 ROOT_PATH . 'runtime/log/'

embed

图片内联嵌入标识,请参考 将图片作为元数据嵌入到邮件中

使用

以下使用及方法兼容所有框架, 包括 ThinkPHP5, ThinkPHP3.2, ThinkPHP3.1, 唯一有所区别的是 ThinkPHP3.2 和 ThinkPHP3.1 不支持composer自动载入, 需手动引入自动载入文件, 使用时引入或者全局自动引入:

require_once '/path/to/tp-mailer/src/autoload.php';

使用use时, ThinkPHP5 的Mailer类的命名空间是 mailer/tp5/Mailer, ThinkPHP3.2 的命名空间是 mailer/tp32/Mailer, ThinkPHP3.1 的命名空间是 mailer/tp31/Mailer

以下示例以 ThinkPHP5 里使用为例, 其他框架完全一样

使用Tp Mailer

创建实例

不传递任何参数表示邮件驱动使用配置文件里默认的配置

如果你想实例化时不使用配置文件里的默认配置, 你可以这样:

匿名必须返回一个 \Swift_SmtpTransport\Swift_SendmailTransport\Swift_MailTransport, 详细配置请参考 SwiftMailer Transport Types

你也可以直接手动传入一个现有的邮件驱动, 配置使用默认配置, 像这样:

设置收件人

以下几种方式任选一种

设置发件人

发件人邮箱地址必须和配置项里一致, 默认会自动设置发件地址 (配置里的addr) 和发件人 (配置里的name)

设置邮件主题

设置邮件内容 - HTML

或者使用变量替换HTML内容

设置邮件内容 - 纯文本

还有另外一个用法完全相同的同名方法

或者使用变量替换纯文本内容

你也可以很方便的设置多行文本, 直接回车换行或者使用 line() 方法, 支持多次调用

line() 也支持使用变量替换纯文本内容

设置邮件内容 - 模板

ThinkPHP系列模板, 具体请看ThinkPHP各版本框架的模板怎么用, 第二个参数是要进行模板赋值的数组

将图片作为元数据嵌入到邮件中

邮件内容中包含图片的, 可以直接指定 img 标签的 src 属性为远程图片地址, 此处图片地址必须为远程图片地址, 必须为一个带域名的完整图片链接, 这似乎很麻烦, 所以你还可以将图片作为元数据嵌入到邮件中, 至于其他文件是否也可以嵌入请自己尝试, 详情请参考 SwiftMailer Embedding Inline Media Files

下面介绍一下 tp-mailer 如何快速简便的将图片元数据嵌入到邮件中:

配置嵌入标签

嵌入元数据需要在模板赋值或者使用 html() 传递变量时, 给变量添加特殊的标签, 该嵌入标签默认为 embed:, 你可以修改配置文件中 embed 项, 修改为你想要的形式

模板或HTML中设置变量

在模板中, 例如 ThinkPHP 全系列都是使用 {$var} 的形式传递变量, 假设变量为 image_src, 那么模板中填写 {$image_src}, 如果是在HTML中, 请使用 {image_src}, 注意如果修改过左、右定界符请使用自己定义的左右定界符

传递变量参数和值

html()view() 方法的第二个参数里, 该数组必须有一个变量, 格式为 ['embed:image_src'] => '/path/to/image.jpg'] 或者 ['embed:image_src'] => ['file_stream', 'filemime', 'filename']], 即参数数组的键名是上面配置的 嵌入标签 + 变量名, 但值有两种情况:

第一, 如果值为字符串, 则该值为图片的路径 (绝对路径或相对路径) 或者 有效的url地址;

第二, 如果值为数组, 数组为 ['stream', 'mime', 'name'] 的形式, 其中 stream 表示图片的数据流, 即是未保存的文件数据流, 例如 file_get_contents() 方法获取的文件数据流, 第二个参数可选, 为文件的mime类型, 默认为 image/jpeg, 第三个参数为文件名, 默认为 image.jpg

示例

其中模板的内容如下:

在 HTML 中使用一样:

添加附件

已修复SwiftMailer设置中文文件名出现乱码的bug

或者指定附件的文件名

使用匿名函数 $attachment用法请参考 SwiftMailer Attaching Files

设置消息加密/签名

使用方法请参考 SwiftMailer Signed/Encrypted Message

设置字符编码

设置邮件最大长度

设置邮件优先级

MailerConfig 的完整命名空间为 mailer/lib/MailerConfig

Requesting a Read Receipt

注册插件

插件的详细使用请参考 SwiftMailer Plugins

发送邮件

使用匿名函数, $mailer是 Mailer 对象, $message是 Swift_Message 对象

第二个参数也可以是匿名函数字符串null, 用户指定发送邮件使用的驱动, 详细使用请参考本文档的 创建实例

如果你使用了插件, 你还可以使用第三个参数, 第三个参数只能是匿名函数:

第三个参数匿名函数里必须使用 $swiftMailer 调用 send() 方法发送邮件, 并且第一个参数必须为 $mailer->message, 插件的详细使用请参考 SwiftMailer Plugins

除使用插件, send() 方法第三个参数为匿名函数的情况外, 发送邮件的返回值为发送成功用户的数字, 全部失败为0, 全部成功为设置收件人的数量

以上所有方法 (除最后发送的方法 send()) 都支持连贯调用

如果执行过邮件发送过邮件发送之后, 需要重新初始化

开启 debug 模式后, 邮件发送失败会直接以异常抛出, 如果没有开启, 可以通过 getError() 获取错误信息

如果有邮件发送失败, 可以通过 getFails() 获取发送失败邮件地址的列表, 邮件发送时第三个参数使用哦匿名函数的情况除外, 这种情况获取到的值为空, 需调用 $swiftMailer->send() 时第二个参数手动指定 fails

使用 getHeaders()getHeadersString() 方法可以获取头信息 getHeaders() 返回的是头信息数组, getHeadersString() 返回的是头信息字符串

更多文档请参考 SwiftMailer

动态配置

mailer/lib/Config 可以进行邮件动态配置,可以读取配置或者重新设置默认配置项,也可以用于其他非 ThinkPHP 框架进行配置项初始化

方法注入

mailer\lib\Mailer 默认不带 view() 方法,但要扩展该类,可以使用继承,也可以直接动态给该类注册方法,使用 Mailer::addMethod($methodName, $methodCallable) 进行方法注册,例如给 ThinkPHP5 框架注册 view() 方法:

你也可以根据需要注入其他方法

其他框架扩展

其他框架扩展只需两步, 部署安装使用和文档一样

第一步: 初始化配置项

使用 mailer\lib\Configinit() 方法初始化配置项,例如:

第二步: 实现 $mailer->view() 方法

写自己的类继承 mailer\lib\Mailer 或者 使用 Mailer::addMethod() 方法动态注入方法, 然后实现里面的 view 方法, 根据自己的框架渲染出自己的模板,如果不需要使用 view() 方法可以忽略这一步,直接进入下一步:

完整示例

OK, 此时你就能在你的框架中使用 Tp Mailer 了, 如果你还想做一件事 - Fork && Pull, 那就更好, 希望能一起完善 Tp Mailer

中文文件名乱码问题

经测试给邮件添加附件时如果附件时中文名会乱码, 如果添加附件时使用匿名闭包函数, 设置文件名时一定要使用 cnEncode() 方法对文件名进行处理, 否则收到的邮件中中文名会乱码, 其他的添加附件方法都在代码里默认调用了 cnEncode() 方法

Issues

如果有遇到问题请提交 issues

License

Apache 2.0


All versions of tp-mailer with dependencies

PHP Build Version
Package Version
Requires php Version >=5.4.0
swiftmailer/swiftmailer Version ^5.4
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package yuan1994/tp-mailer contains the following files

Loading the files please wait ....