jukit / pigeon-mail
PHPMailer library
v1.0.0
2024-03-28 08:06 UTC
Requires
- phpmailer/phpmailer: ^6.7
- webklex/php-imap: ^4.1
Requires (Dev)
- phpunit/phpunit: ^9.5.10
- symfony/var-dumper: ^5.4
Suggests
- symfony/mime: Recomended for better extension support
- symfony/var-dumper: Usefull tool for debugging
README
项目简介
Pigeon Mail 是一个基于 PHPMailer 封装的简单、稳定的邮件发送工具包,旨在帮助开发人员识别和解决与SMTP(简单邮件传输协议)相关的错误。无论是网站、Web应用程序还是后端服务,PigeonMail都能够轻松集成,并提供清晰的SMTP错误信息翻译,使开发人员能够更快速、更准确地定位和解决邮件发送中的问题。
功能特点
-
多种SMTP错误类型的识别和翻译: PigeonMail能够识别多种SMTP错误,包括连接失败、验证问题、邮件内容拒收等,并提供相应的人类可读翻译。无论是针对腾讯邮箱、网易邮箱还是其他邮件服务提供商,该组件都能够提供详尽的解释。
-
灵活的邮件问题诊断解决方案: 通过简单的调用接口,开发人员可以轻松地将PigeonMail集成到现有的邮件发送逻辑中。该组件包能够帮助开发人员快速定位和解决与邮件发送相关的问题,提高系统的稳定性和可靠性。
-
覆盖广泛的错误类型和邮件服务提供商: PigeonMail涵盖了多种SMTP错误类型,包括但不限于连接失败、身份验证问题、邮件内容被拒绝等。无论是对于腾讯邮箱、网易邮箱还是其他邮件服务提供商,该组件都能够提供清晰的解释和解决方案。
接入指南
<?php require __DIR__ . '/vendor/autoload.php'; use Mrzkit\PigeonMail\DefaultMailConfig; use Mrzkit\PigeonMail\MailProvider; use Mrzkit\PigeonMail\MailTransfer; use Mrzkit\PigeonMail\Sender; $mailTransfer = new MailTransfer(); $config = [ 'transport' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 465, 'encryption' => 'ssl', // or tls 'username' => 'testemail', 'password' => 'password', 'timeout' => 30, 'debug' => true, // 'mailFromAddress' => 'testemail', 'mailFromName' => '杰哥', 'exceptions' => true, 'SMTPAuth' => true, 'SMTPKeepAlive' => true, 'SMTPAutoTLS' => false, ]; $params = [ // 发件人 'from' => ['address' => 'testemail', 'name' => ''], 'replyTo' => ['address' => 'testemail', 'name' => ''], // 收件人 'recipients' => [ ['address' => '', 'name' => ''] ], // 'customHeaders' => [ "Message-ID" => null, "In-Reply-To" => null, "References" => null, ], // 抄送人 'cc' => [], // 密送人 'bcc' => [], // 邮件标题 'subject' => "Mail Title", // 邮件内容 'body' => '<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Mail Content Hello World! ' . date('Y-m-d H:i:s') . '</h1> </body> </html>', ]; // 设置邮箱各项信息 $mailTransfer->setFrom($params['from']) ->setRecipients($params['recipients']) ->setReplyTo($params['replyTo'] ?? $params['from']) ->setCC($params['cc'] ?? []) ->setBCC($params['bcc'] ?? []) ->setSubject($params['subject']) ->setBody($params['body']) ->setAttachments($params['attachments'] ?? []) ->setCustomHeaders($params['customHeaders'] ?? []); $defaultMailConfig = new DefaultMailConfig($config); $defaultMailProvider = new MailProvider($defaultMailConfig); $sender = new Sender($mailTransfer, $defaultMailProvider); $result = $sender->send(); var_dump($result);