0%

php如何发送邮件

php邮件发送比较简单,这里整理了一下,方便小伙伴们收藏后直接开箱即用,当然,如果需要更复杂的配置,可以参考官网文档。

准备工作

下载对应的依赖包

1
composer require phpmailer/phpmailer

代码封装与实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php

namespace app\services;

use PHPMailer\PHPMailer\PHPMailer;
use think\facade\Log;

/**
* 邮件类
*/
class MailServer
{
private static string $host = ""; // smtp服务器地址
private static string $username = ""; // SMTP用户名 (通常为你的邮箱地址)
private static string $smtp_password = ""; // SMTP密码;
private static int $port = 587; // 端口号;
private static string $addresser = ""; // 发件人;
private static array $recover_mails = []; // 收件人


/**
* - 发送邮件
* @param $mail_subject // 邮件主题
* @param $content // 邮件内容
* @param $recover_name // 收件人姓名
* @return array
*/
public static function send($mail_subject, $content, string $recover_name = ""): array
{
$mail = new PHPMailer(true);
try {
// 服务器配置
$mail->SMTPDebug = 0; // 启动详细调试输出 2:详细输出 1:简要删除 0:不输出
$mail->isSMTP(); // 启用SMTP
$mail->Host = self::$host; // smtp服务器地址
$mail->SMTPAuth = true; // 启用SMTP认证
$mail->Username = self::$username; // SMTP用户名 (通常为你的邮箱地址)
$mail->Password = self::$smtp_password; // SMTP密码
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // 启用TLS加密,`PHPMailer::ENCRYPTION_SMTPS` 代表使用SSL协议
$mail->Port = self::$port; // 端口号

// 邮件发件人配置
$mail->setFrom(self::$username, self::$addresser); // 设置发件人信息
// 添加收件人信息
foreach (self::$recover_mails as $mail_add) {
$mail->addAddress($mail_add, $recover_name); // 添加收件人地址
}
// 内容
$mail->isHTML(true); // 设置邮件格式为HTML
$mail->CharSet = "utf-8"; // 设置编码防止乱码
$mail->Subject = $mail_subject; // 邮件标题
$mail->Body = $content . " 【remote_phone】"; // 邮件正文

// 发送邮件
if (!$mail->send()) {
return [false, "mail send fail:".$mail->ErrorInfo];
} else {
return [true, "mail send success"];
}
} catch (\Exception $e) {
Log::error("邮件发送失败:".$e->getMessage());
return [false, "mail send exception:".$e->getMessage()];
}
}
}