Pigeon Mail

项目简介

Pigeon Mail 是一个基于 PHPMailer 封装的简单、稳定的邮件发送工具包,旨在帮助开发人员识别和解决与SMTP(简单邮件传输协议)相关的错误。无论是网站、Web应用程序还是后端服务,PigeonMail都能够轻松集成,并提供清晰的SMTP错误信息翻译,使开发人员能够更快速、更准确地定位和解决邮件发送中的问题。

功能特点

  1. 多种SMTP错误类型的识别和翻译: PigeonMail能够识别多种SMTP错误,包括连接失败、验证问题、邮件内容拒收等,并提供相应的人类可读翻译。无论是针对腾讯邮箱、网易邮箱还是其他邮件服务提供商,该组件都能够提供详尽的解释。

  2. 灵活的邮件问题诊断解决方案: 通过简单的调用接口,开发人员可以轻松地将PigeonMail集成到现有的邮件发送逻辑中。该组件包能够帮助开发人员快速定位和解决与邮件发送相关的问题,提高系统的稳定性和可靠性。

  3. 覆盖广泛的错误类型和邮件服务提供商: 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);