toropyga/fmail

用于与 Toropyga 的邮件服务器交互的库

v6.0.5 2023-05-19 13:49 UTC

This package is auto-updated.

Last update: 2024-09-19 16:30:08 UTC


README

PHP 邮件发送脚本

License Version 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 个不同的函数。在创建邮件时,必须选择其中一个,因为每个函数不会向之前设置的邮件文本添加新文本,而是用新文本替换旧文本!!!

  1. 创建简单的文本消息(text/plain)
$ml->setMessage("Здесь текст письма!");
  1. 创建 HTML 格式的文本消息
$ml->setHTMLMessage("Здесь текст письма");

$ml->setHTMLMessage("<html><body>Здесь<br>текст<b>письма!!!</b></body></html>");
  1. 从 HTML 文件创建简单的文本消息(text/plain)
$ml->setMessageFromHTML("file.html"); //Указываем путь к файлу HTML
  1. 从 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";