thinkphp6.1.0使用phpmailer发送邮件

composer下载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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php

namespace app\api\controller;

use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception as mailerException;
use PHPMailer\PHPMailer\SMTP;
use think\App;


class Email extends Controller
{

    public $mail;

    public $config;

    /**
     * 邮件发送
     * @param $sendTo   发送给对方的邮箱地址  string or array
     * @param $copyTo   抄送给对方的邮箱地址  string or array
     * @param $file     文件路径             array
     * @param $config   其他需要传的业务参数配置
     */

    public function sendEmail($sendTo, $copyTo, $file, $config)
    {
        $mail = new PHPMailer(true);
        try {
            $mail->SMTPDebug = 0;

            //调试邮件的日志输出格式
            //$mail->Debugoutput = function($str, $level) {
            //    echo "$str";
            //};

            $mail->isSMTP();// 使用SMTP服务

            $mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码

            $mail->Host = "smtp.exmail.qq.com";// 发送方的SMTP服务器地址

            $mail->SMTPSecure = "ssl";// 使用ssl协议方式

            $mail->Port = 465;// 163邮箱的ssl协议方式端口号是465/994

            $mail->SMTPAuth = true;// 是否使用身份验证

            $mail->Username = $config['user_email'];// 发送方的163邮箱用户名,就是你申请163的SMTP服务使用的163邮箱

            $mail->Password = $config['password'];// 发送方的邮箱密码,注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码!

            $mail->setFrom($config['user_email']);// 设置发件人信息,如邮件格式说明中的发件人,这里会显示为Mailer(xxxx@163.com),Mailer是当做名字显示

            $mail->Subject = "邮件标题";// 邮件标题

            $mail->Body = $config['nick_name'] . "的".date('Y-m-d')."邮件已提交";// 邮件正文

            //$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用

            //接收邮件方
            if(!empty($sendTo)){
                if(is_array($sendTo)){
                    foreach ($sendTo as $v){
                        $mail->addAddress($v);
                    }
                }else{
                    $mail->addAddress($sendTo);
                }
            }
            //$mail->addAddress('xxx@xxx.cn, xxxxx@xxxxx.com', '设置收件人地址');// 设置收件人信息,如邮件格式说明中的收件人,这里会显示为Liang(yyyy@163.com)

            //$mail->addReplyTo("xxx@xxx.cn", "设置回复人地址");// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址

            //抄送邮件方
            if(!empty($copyTo)){
                if(is_array($copyTo)){
                    foreach ($copyTo as $v){
                        $mail->addCC($v);
                    }
                }else{
                    $mail->addCC($copyTo);
                }
            }

            //$mail->addCC("xxx@qq.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
            //$mail->addCC("xxx@qq.cn", 'jack');// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)

            //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)

            //添加附件, 必须使用本地磁盘路径,不能识别直接的https或者http的地址
            if(!empty($file)){
                if(is_array($file)){
                    foreach ($file as $v){
                        $mail->addAttachment($v);
                    }
                }else{
                    $mail->addAttachment($file);
                }
            }
            if (!$mail->send()) {// 发送邮件
                //return "Mailer Error: ".$mail->ErrorInfo.', 发送失败~';
                echo json_encode(['code' => 400, 'msg' => '发送异常:'.$mail->ErrorInfo, 'data' => [], 'other'=>[]]);
            } else {
                echo json_encode(['code' => 200, 'msg' => '发送成功', 'data' => [], 'other'=>[]]);
            }
        }
        catch (\Exception $e){
            echo json_encode(['code' => 400, 'msg' => '发送异常:'.$mail->ErrorInfo, 'data' => [], 'other'=>[]]);
        }
    }
}

复制一下修改就可以直接使用,使用方法如下:

1
2
3
4
5
6
7
8
9
10
11
$sendTo = ['xxx@qq.com', 'xxx@qq.com'];
$copyTo = ['xxx@qq.com', 'xxx@qq.com'];
$file = ['D:\image.png', 'C:\eg.jpg', 'D:\file\test.xlsx', '/www/public/statis/img/inage.png'];
$config = [
        'user_email' => $user_email,
        'password' => $password,
        'send_name' => $send_name,
        'nick_name' => $nick_name,
    ];
$mail = new Email();
$mail->sendEmail($sendTo, $copyTo, $file, $config);
本文为 今天也想见到你 博客文章,转载无需和我联系,但请注明来自 今天也想见到你 博客 0925.wang
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇