使用 PHP 自带 mail
https://www.php.net/manual/zh/function.mail.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public function testEmail()
{
$to = "1@qq.com";
$subject = "test email";
$message = "test email msg";
$headers = array(
'From' => '2@qq.cn'
);
if (mail($to, $subject, $message, $headers)) {
echo "send ok";
} else {
echo "send fail";
}
}
|
使用 PHPMailer
https://www.php.cn/faq/545800.html
PHPMailer的安装和配置
使用PHPMailer库前,需要先将其安装到项目中。在命令行中切换到你项目的根目录下,运行下面的命令进行安装:
1
| composer require phpmailer
|
安装完毕后,我们需要在项目中引用PHPMailer类文件。在代码中添加以下语句:
1
2
3
4
| require_once "tools/composer/vendor/autoload.php";
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
|
在以上示例中,我们使用了isSMTP()方法将SMTP协议开启,使用了SMTPDebug调试模式输出SMTP交互信息,设置了SMTP服务器地址、用户名和密码等信息,设置了发件人和收件人的邮箱地址和名称,设置了邮件主题和正文,同时还设置了纯文本形式的邮件正文。
PHPMailer发送附件邮件
发送带附件的邮件,我们需要使用PHPMailer类的addAttachment()方法添加附件。下面我们将举一个例子来演示如何实现加入附件的邮件发送。
1
| $mail->addAttachment('path/to/file.pdf');
|
样例
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
| // 不认证
public function testEmail2()
{
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = '192.168.100.41';
$mail->Port = 25;
$mail->setFrom('2@qq.cn', 'secure');
$mail->addAddress('1@qq.com', 'kk');
$mail->Subject = 'Email Subject';
$mail->Body = 'Email Body';
$mail->AltBody = 'Email Body in Plain Text';
// $mail->addAttachment('path/to/file.pdf');
if(!$mail->send()) {
echo "error " . $mail->ErrorInfo;
} else {
echo "ok";
}
}
// SASL 认证
public function testEmail3()
{
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = '192.168.100.41';
$mail->Port = 25;
// TODO tls ?
// $mail->Port = 587;
// $mail->SMTPSecure = 'tls';
// user 1
$mail->SMTPAuth = true;
$mail->Username = '3@qq.cn';
$mail->Password = '123456';
$mail->setFrom('2@qq.cn', 'secure');
$mail->addAddress('1@qq.com', 'kk');
$mail->Subject = 'Email Subject';
$mail->Body = 'Email Body';
$mail->AltBody = 'Email Body in Plain Text';
// $mail->addAttachment('path/to/file.pdf');
if(!$mail->send()) {
echo "error " . $mail->ErrorInfo;
} else {
echo "ok";
}
}
|