使用PHPMailer发送邮件

<?php
// 参考资料:https://github.com/PHPMailer/PHPMailer

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

// 本demo所使用的PHPMailer版本为6.8.0
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;

$mail = new PHPMailer(true); // true=发送失败抛出异常|false=发送失败不抛出异常


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


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


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


//========== 设置邮件主题和邮件内容 ==========//
$mail->isHTML(true); // 邮件内容的格式为HTML
$mail->CharSet = PHPMailer::CHARSET_UTF8; // 该常量等价于'utf-8'
$mail->Subject = $mailSubject; // 邮件主题
$mail->Body = $mailBody; // 邮件内容,可使用HTML代码


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


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


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


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

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

Copyright © 2023 码农人生. All Rights Reserved