使用PHPMailer发送邮件

<?php
// 报告所有错误
ini_set('display_errors', 'On');
error_reporting(-1);


//========== 配置参数(以下内容请根据实际情况修改,且建议保存到配置文件或数据库) ==========//
$cfg_smtp_host = 'smtp.qq.com'; // SMTP服务器
$cfg_smtp_port = 465; // SMTP服务端口号
$cfg_smtp_username = '123456789@qq.com'; // SMTP账号,同时也是发件人邮箱地址
$cfg_smtp_password = '****************'; // SMTP授权码,注意:不是邮箱的登录密码
$cfg_from_name = '码农人生'; // 发件人名称(非必填)


//========== 构造邮件 ==========//
$mailToAddress = 'ZhangSan@manong.life'; // 收件人邮箱地址
$mailToName = '张三'; // 收件人名称(非必填)
$mailSubject = '欲习编程何方强  齐鲁泺邑寻蓝翔'; // 邮件主题
$mailBody = 'PHP是世界上<u style="font-size:larger;font-weight:bolder;">最好的</u>语言!'; // 邮件内容,可使用HTML代码
$mailAttachment = [ // 附件,其中path为附件路径,name为附件名称(非必填)
    ['path' => '/tmp/php.txt', 'name' => 'PHP·从入门到放弃.txt'],
    ['path' => '/tmp/mysql.txt', 'name' => 'MySQL·从删库到跑路.txt'],
];


// 引入PHPMailer库
require_once __DIR__ . '/PHPMailer-6.8.0/src/Exception.php';
require_once __DIR__ . '/PHPMailer-6.8.0/src/PHPMailer.php';
require_once __DIR__ . '/PHPMailer-6.8.0/src/SMTP.php';


use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;


// 创建PHPMailer对象
$mailer = new PHPMailer(true); // true=发送失败抛出异常|false=发送失败不抛出异常


//========== 设置SMTP服务器 ==========//
$mailer->Host = $cfg_smtp_host; // SMTP服务器
$mailer->Port = $cfg_smtp_port; // SMTP服务端口号
$mailer->Username = $cfg_smtp_username; // SMTP账号
$mailer->Password = $cfg_smtp_password; // SMTP授权码,注意:不是邮箱的登录密码
$mailer->SMTPDebug = SMTP::DEBUG_OFF; // 关闭调试模式
$mailer->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // 该常量等价于'ssl'
$mailer->CharSet = PHPMailer::CHARSET_UTF8; // 该常量等价于'utf-8'
$mailer->SMTPAuth = true; // 启用SMTP身份验证
$mailer->isSMTP(); // 使用SMTP发送邮件
$mailer->isHTML(); // 邮件内容的格式为HTML


//========== 设置发件人信息 ==========//
try {
    // 设置发件人邮箱地址和发件人名称,注意发件人邮箱地址必须使用SMTP账号
    $mailer->setFrom($cfg_smtp_username, $cfg_from_name);
} catch (Exception $e) {
    exit('设置发件人信息失败,原因:' . $e->getMessage());
}


//========== 设置邮件主题和邮件内容 ==========//
$mailer->Subject = $mailSubject; // 邮件主题
$mailer->Body = $mailBody; // 邮件内容,可使用HTML代码


//========== 设置收件人信息 ==========//
try {
    // 设置收件人邮箱地址和收件人名称,其中收件人名称非必填
    $mailer->addAddress($mailToAddress, $mailToName);
} catch (Exception $e) {
    exit('设置收件人信息失败,原因:' . $e->getMessage());
}


//========== 设置附件 ==========//
try {
    // 遍历所有附件,设置附件路径和附件名称,其中附件名称非必填
    foreach ($mailAttachment as $value) {
        $mailer->addAttachment($value['path'], $value['name']);
    }
} catch (Exception $e) {
    exit('设置附件失败,原因:' . $e->getMessage());
}


//========== 发送邮件 ==========//
try {
    $result = $mailer->send(); // 发送成功返回true,否则返回false
    if ($result === true) {
        $mailer->clearAddresses();     // 清除所有收件人
        $mailer->clearAllRecipients(); // 清除所有收件人类型
        $mailer->clearAttachments();   // 清除所有附件(不是删除附件)
        exit('发送邮件成功');
    }

    exit("发送邮件失败,原因:$mailer->ErrorInfo");
} catch (Exception $e) {
    exit('发送邮件异常,原因:' . $e->getMessage());
}


//========== 总结 ==========//
// 参考资料:https://github.com/PHPMailer/PHPMailer

Copyright © 2024 码农人生. All Rights Reserved