发送邮件Mail

说明

来源

https://github.com/PHPMailer/PHPMailer/

 

虽然手动或使用Composer安装整个软件包简单、方便、可靠,但您可能希望在项目中只包含重要文件。至少你需要src/PHPMail.php。
如果你使用SMTP,你需要src/SMTP.php,
如果你在SMTP之前使用POP(非常不可能!),你需要src=POP3.php。 如果你没有向用户显示错误,你可以跳过语言文件夹,只处理英语错误。
如果您使用XOAUTH2,则需要src/OAuth.php以及要进行身份验证的服务的Composer依赖项。 真的,使用Composer要容易得多!

示例

支持故障转移(default 参数中传入 "fail_over" 标识)
use zxf\PHPMailer\Mail;
try {
    $mail = Mail::instance();
    $mail->title('Title')
    ->content('Content')
    ->to('mail','name')
    ->cc('mail','name')
    ->bcc('mail','name')
    ->attachment('xxx.csv','xxx报表')
    ->send();
} catch (\Exception $e) {
    // 捕捉异常信息
    // $mail->getErrors();
}

配置

<?php
/**
 * 发送邮件通知配置
 */

return [

    /**
     * 默认使用的邮件服务
     * 值为 mailers 中的 key 或者 'fail_over' (故障转移列表)
     */
    'default'   => 'smtp',

    /**
     * 可用的邮件服务列表
     * 有n个邮件服务时,就配置n个项
     */
    'mailers'   => [
        // 邮件服务的配置,键名自定义
        'smtp' => [
            'mailer'      => env('MAIL_MAILER', 'smtp'), //邮件服务器,支持 stmp、mail、sendmail、qmail 4种
            'host'        => env('MAIL_HOST', 'smtp.qq.com'), // 服务地址
            'username'    => env('MAIL_USERNAME', ''), // 登录邮箱的账号
            'password'    => env('MAIL_PASSWORD', ''),//客户端授权密码,注意不是登录密码
            'smtp_secure' => env('MAIL_ENCRYPTION', 'ssl'),//可配置ssl或tls协议
            'smtp_auth'   => env('MAIL_SMTP_AUTH', true),//设置是否进行权限校验
            'port'        => env('MAIL_PORT', '465'),//端口设置
        ],
        // 实际应用中,参照上面的smtp配置把 ... 替换成具体的配置
        '...'  => [
            // ...
        ],
    ],

    /**
     * 邮件发送者
     */
    'from'      => [
        'name'    => env('MAIL_FROM_NAME', 'Example'), // 发送者名称(一般配置系统名称)
        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),// 发送者邮箱号
    ],

    /**
     * 故障转移
     * 按照顺序依次发送,直到成功或全部都试一遍
     * 数组内的值为 mailers 中的 key
     */
    'fail_over' => [
        'smtp',
    ],
];

设置语言

//加载英语
$mail->setLanguage('en');
// 或者使用自定义的文件路径
$mail->setLanguage('en', '/optional/path/to/language/directory/');

其他

use zxf\PHPMailer\Mail;

$mail->getLastMessageID(); //获取最后一条消息的ID

$mail->reset(); // 连续发送多封邮件时,可能会需要重置邮件对象以清除之前的收件人、附件等信息

$mail->postSend()
验证邮箱号
Mail::validateAddress('user@example.com', function($address) {
    return (strpos($address, '@') !== false);
});