toropyga / fmail
用于与 Toropyga 的邮件服务器交互的库
Requires
- php: >=5.1.0
- ext-fileinfo: *
- ext-iconv: *
- ext-imap: *
- ext-mbstring: *
- toropyga/base: >=1.0.3
README
PHP 邮件发送脚本
PHP 类 FMail 的描述和使用示例
内容
基本概念
FMail 类旨在使用 PHP 发送和接收电子邮件。该类不是一个完整的电子邮件程序!要运行它,需要 PHP 版本 4 或更高。
FMail 类的功能
允许使用标准的 PHP mail() 函数发送邮件,也可以不直接使用该函数,通过套接字连接到指定的邮件服务器。
允许使用 PHP IMAP 库接收邮件
支持使用 PLAIN 和 LOGIN 方法在邮件服务器上进行身份验证。
支持 ISO-8859-1, UTF-8, WINDOWS-1251 和 KOI8-R 等文本编码。
支持发送纯文本和 HTML 格式的消息。
向多个收件人发送邮件。
支持对单个邮件收件人数量进行限制,即如果指定了多个收件人并设置了收件人数量限制为 1,则将为每个收件人创建并发送自己的邮件。
支持向隐藏收件人发送邮件,收件人的姓名和地址不会显示在“收件人”字段中(To)。
允许将任何格式的文件附加到邮件中。
可以从任何 HTML 文件创建消息,并加载图片、样式表和脚本。
支持将 Windows-1251 编码的文本编码为 UTF-8 并反之,无需 iconv 模块。
检查电子邮件地址的正确性。
记录所有操作。
工作描述
主要发送功能
连接到文件
require_once("FMail.php");
或使用 composer
require_once("vendor/autoload.php");
初始化类
$ml = new FYN\FMail();
注意!!! 类中有一些默认值。可以通过“脚本(类)配置变量”块更改所有默认参数。或者通过下面的特殊类函数。
默认情况下,脚本使用 PHP mail() 函数。对于通过套接字连接,指定
$ml->setMailUse(false);
在通过套接字连接时,默认服务器为 localhost,要更改请使用函数
$ml->setServer('your_mailserver.com'); //можно указать IP адрес или доменное имя сервера
在通过套接字连接时,默认端口为 25,要更改请使用函数
$ml->setPort(2525); //Указывает номер порта
在通过套接字连接时,默认套接字等待响应时间为 10 秒,要更改请使用函数
$ml->setTimeout(30); //Указываем время в секундах
在通过套接字连接时,默认不需要在服务器上进行用户身份验证,要更改请使用函数
$ml->setAuth('PLAIN'); //Указываем метод авторизации LOGIN или PLAIN
要授权,需要指定用户名和密码。请使用以下函数
$ml->setLogin('login'); //Указываем логин пользователя $ml->setPassword('password'); //Указываем пароль пользователя
默认情况下,邮件收件人数量限制为 1(一个)。要更改请使用函数
$ml->setMaxRecipient(2); //Количество одновременных получателей письма
默认情况下,使用 UTF-8 编码的文本。要更改请使用函数
$ml->setCharset('WIN'); //Указываем код кодировки //(WIN=>windows-1251, UTF=>utf-8, ISO=>iso-8859-1, KOI=>koi8-r)
指定邮件收件人。 (更多详细信息,请参阅函数描述)
$ml->setTo('test1@mail.com'); $ml->setTo('test2@mail.com', 'Иван Иванов'); $ml->setTo('test3@mail.com', $ml->getWin2Utf('Вася Пупкин')); $ml->setTo(array(array('mail'=>'test4@mail.com', 'username'=>'Иван Иванов')));
清除收件人列表,因为 setTo 函数是累积的
$ml->clearTo();
指定,如果需要,隐藏的收件人。 (更多详细信息,请参阅函数描述)
$ml->setBcc('bcc1@mail.com'); $ml->setBcc('bcc2@mail.com', 'Иван Иванов'); $ml->setBcc('bcc3@mail.com', $ml->getUtf2Win('Вася Пупкин')); $ml->setBcc(array(array('mail'=>'bcc4@mail.com', 'username'=>'Иван Иванов')));
清除隐藏的收件人列表,因为 setBcc 函数是累积的
$ml->clearBcc();
指定邮件发送者。 (更多详细信息,请参阅函数描述)
$ml->setFrom('this@server.com');
或
$ml->setFrom('this@server.com', 'Имя Отправителя');
指定消息主题
$ml->setSubject('Тема сообщения');
设置邮件文本。
要设置邮件文本,可以使用 4 个不同的函数。在创建邮件时,必须选择其中一个,因为每个函数不会向之前设置的邮件文本添加新文本,而是用新文本替换旧文本!!!
- 创建简单的文本消息(text/plain)
$ml->setMessage("Здесь текст письма!");
- 创建 HTML 格式的文本消息
$ml->setHTMLMessage("Здесь текст письма");
或
$ml->setHTMLMessage("<html><body>Здесь<br>текст<b>письма!!!</b></body></html>");
- 从 HTML 文件创建简单的文本消息(text/plain)
$ml->setMessageFromHTML("file.html"); //Указываем путь к файлу HTML
- 从 HTML 文件创建消息(返回 true 或 false)
$ml->setHTMLfile("file.html"); //Указываем путь к файлу HTML
将文件添加到邮件中(返回 true 或 false)
$ml->setFile("file1.txt"); //Указываем путь к файлу $ml->setFile("file2.gif"); $ml->setFile("file3.zip");
清除文件列表,因为 setFile 函数是累积的
$ml->clearFiles();
发送邮件(返回 true 或 false)
$ml->send();
获取消息的基本功能
连接到文件
require_once("FMail.php");
初始化类
$ml = new /FYN/FMail();
默认使用 localhost 作为服务器进行连接,要更改则使用该函数
$ml->setServer('your_mailserver.com'); //можно указать IP адрес или доменное имя сервера
默认使用 IMAP 连接的 143 端口,要更改则使用该函数
$ml->setImapPort(993); //Указывает номер порта
默认使用 IMAP 协议进行连接,可以使用但不推荐使用 POP3 协议。要更改则使用该函数
$ml->setImapType('pop3');
为 imap_open 函数设置连接标志
$ml->setImapFlags('/ssl/debug/user=Administrator', true);
要授权,需要指定用户名和密码。请使用以下函数
$ml->setLogin('login'); //Указываем логин пользователя $ml->setPassword('password'); //Указываем пароль пользователя
读取文件夹列表
$folders = $ml->getImapFolders();
设置文件夹以读取其内容
$ml->setImapFolder('INBOX/Работа');
返回文件夹中的邮件列表。所有参数都是可选的。指定文件夹名称,开始读取邮件的编号以及要返回的邮件数量(请参阅函数描述)
$ml->read_folder('INBOX', 124, 10);
根据指定参数返回邮箱中的邮件列表
$mails = $ml->receive('UNSEEN'); // список параметров см. в описании функции
根据邮件编号读取邮件
$ml->read_mail(124);
根据 UID 读取邮件
$ml->read_mail_UID(24);
附加功能
检查电子邮件地址的正确拼写(返回 true 或 false)
$ml->getCheck('test@mail.com');
将文本从 Windows-1251 编码转换为 UTF-8 编码
$text = $ml->getWin2Utf($text); //передаём текст который надо конвертировать
将文本从 UTF-8 编码转换为 Windows-1251 编码
$text = $ml->getUtf2Win($text); //передаём текст который надо конвертировать
启用脚本调试功能(出错时在屏幕上显示消息)
$ml->setDebug(true);
查看类日志。传递所需日志的参数。0 - 所有日志,1 - 已执行函数,2 - 传递和接收的数据,3 - 错误
$logs = $ml->getLogs(3); //При включенных отладочных функциях выводит логи на экран
解码字符串 =?utf-8?B?0KHQv9GA0LDQstC+0YfQvdC40Log0JHQmNCa?=
$text = $ml->getSubjectDecode($text);
使用示例
require_once("FMail.php"); $ml = new FYN\FMail(); $ml->setMailUse(false); $ml->setServer('your_mail_server.com'); $ml->setAuth('LOGIN'); $ml->setLogin('login'); $ml->setPassword('password'); $ml->setMaxRecipient(2); $ml->setCharset('UTF'); $ml->setTo('test1@mail.com'); $ml->setTo('test2@mail.com', 'Иван Иванов'); $ml->setBcc('bcc1@mail.com'); $ml->setFrom('this@server.com', $ml->getWin2Utf('Имя Отправителя')); $ml->setSubject('Тема сообщения'); $ml->setHTMLMessage("Здесь текст письма"); $ml->setFile("file1.txt"); $ml->setFile("file2.gif"); $ml->setFile("file3.zip"); if (!$ml->send()) { $ml->setDebug(true); $ml->getLogs(); } else echo "Mail sending - OK";