博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP之 使用PHPMailer插件实现邮件发送功能
阅读量:2160 次
发布时间:2019-05-01

本文共 4280 字,大约阅读时间需要 14 分钟。

一、下载PHPMailer文件,并把“选取文件”放到你项目的对应目录

下载地址:https://github.com/PHPMailer/PHPMailer/选取文件:PHPMailer\src\

二、配置文件(服务配置以及发送人、内容相关配置)

/** * 文件:dict/dict_email.php * 邮件发送服务配置及内容相关配置 * @Author NangongYi * @Time 2019/10/12 *//** 服务器参数配置 **/$config['distribute_mail_config'] = [    'protocol' => 'smtp',    'smtp_crypto' => 'ssl',    'smtp_host' => 'smtp.mxhichina.com',    'smtp_user' => 'superMan@123456.com',    'smtp_pass' => '123456',    'smtp_port' => '465',    'mailtype' => 'text',    'validate' => 'true',    'charset' => 'utf-8',    'wordwrap' => 'TRUE',    'smtp_timeout' => '30',    'newline' => PHP_EOL,    'crlf' => "\r\n"];/** 内容等相关配置 **/$config['distribute_mail_info'] = [    'from' => [        'address' => 'superMan@123456.com',        'name' => 'Master'    ],    'to' => [        'to1' => 'zhangsan@123456.com'    ],    'cc' => [        'cc1' => 'lisi@123456.com',        'cc2' => 'wangwu@123456.com',    ],    'bcc' => [        'bcc1' => 'zhaoliu@123456.com'    ],    'subject' => [        'sub1' => '主题1,        'sub2' => '主题2',    ],    'content' => [        'cont1' => "内容1",        'cont2' => "内容2",    ]];

三、代码部分(调用配置文件内容,实现数据处理、发送邮件操作)

/** * 发送邮件 * @param int $type : 邮件内容类型  1,初次分账,失败发邮件;2,查询分账,失败发邮件 * @param string $msg : 邮件内容 * @return object    $msg='', $type */public function SendMail($msg, $type){    // 引入配置文件    $this->load->config('dict/dict_email');    // 邮件服务配置    $mail_config = $this->config->item('distribute_mail_config');    // 邮件信息相关    $mail_info = $this->config->item('distribute_mail_info');    // 发送邮件操作    return $this->send($mail_config, $mail_info, $type, $msg);}/** * 发送邮件 */private function send($email_config, $email_info, $type, $msg){    // 加载邮件服务类文件    $this->mail_class_autolod();    // 实例化邮件类    $mail = new PHPMailer\PHPMailer\PHPMailer(true);    // 对邮件服务配置    $this->mail_config($mail, $email_config);    // 邮件发送信息配置    $mail->setFrom($email_config['smtp_user'], 'WB-Master');  //发件人    // 发送抄送用户处理    $this->receiver($mail, $email_info);    // 邮件内容信息配置    $this->mail_info($mail, $email_info, $type, $msg);    // 邮件发送操作    return $mail->send()?'SUCCESS': $mail->ErrorInfo;}/** * 加载邮件服务类文件 */private function mail_class_autolod(){    // 加载文件    include_once(APPPATH.'services/base/PHPMailer/Exception.php');    include_once(APPPATH.'services/base/PHPMailer/PHPMailer.php');    include_once(APPPATH.'services/base/PHPMailer/SMTP.php');}/** * 邮件服务配置 */private function mail_config($mail, $email_config){    // 服务器配置    $mail->CharSet =$email_config['charset'];                     //设定邮件编码    $mail->SMTPDebug = 0;                        // 调试模式输出    $mail->isSMTP();                             // 使用SMTP    $mail->Host = $email_config['smtp_host'];                // SMTP服务器    $mail->SMTPAuth = true;                      // 允许 SMTP 认证    $mail->Username = $email_config['smtp_user'];                // SMTP 用户名  即邮箱的用户名    $mail->Password = $email_config['smtp_pass'];             // SMTP 密码  部分邮箱是授权码(例如163邮箱)    $mail->SMTPSecure = $email_config['smtp_crypto'];         // 允许 TLS 或者ssl协议    $mail->Port = $email_config['smtp_port']; // 服务器端口 25 或者465 具体要看邮箱服务器支持}/** * 发送人处理 */private function receiver($mail, $email_info){    if(isset($email_info['to']) && $email_info['to']){        for($i=1;$i<=count($email_info['to']);$i++){            $mail->addAddress($email_info['to']['to'.$i], 'to'.$i);  // 收件人        }    }    if(isset($email_info['cc']) && $email_info['cc']){        for($i=1;$i<=count($email_info['cc']);$i++){            $mail->addCC($email_info['cc']['cc'.$i]);  // 抄送人        }    }    if(isset($email_info['bcc']) && $email_info['bcc']){        for($i=1;$i<=count($email_info['bcc']);$i++){            $mail->addBCC($email_info['bcc']['bcc'.$i]);  // 密送人        }    }}/** * 邮件内容信息配置 */private function mail_info($mail, $email_info, $type, $msg){    $mail->isHTML(true);  // 是否以HTML文档格式发送  发送后客户端可直接显示对应HTML内容    $mail->Subject = $email_info['subject']['sub'.$type]; // 标题    $mail->Body    = $email_info['content']['cont'.$type].$msg; // 内容}

四、调取方法,发送邮件

/** * 测试 - 发送邮件(NEW) */public function test_send_mail_new(){    $this->load->service('account_service');    echo json_encode($this->account_service->SendMail());}

写在最后:

关于发邮件,用过其他的插件,但唯独PHPMailer最稳定,也最好用,测试、服务、生产,部署都没出现问题,因此,这里做一下记录,方便以后查看,有需要的小伙伴,也可以看一下!

转载地址:http://grrwb.baihongyu.com/

你可能感兴趣的文章
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
win10将IE11兼容ie10
查看>>
checkbox设置字体颜色
查看>>
第一篇 HelloWorld.java重新学起
查看>>
ORACLE表空间扩张
查看>>
orcal 循环执行sql
查看>>
web.xml配置监听器,加载数据库信息配置文件ServletContextListener
查看>>
结构型模式之桥接模式(Bridge)
查看>>
行为型模式之状态模式(State)
查看>>
行为型模式之策略模式(Strategy)
查看>>
行为型模式之模板方法模式(TemplateMethod)
查看>>
行为型模式之访问者模式(Visitor)
查看>>
大小端详解
查看>>
source insight使用方法简介
查看>>
<stdarg.h>头文件的使用
查看>>
C++/C 宏定义(define)中# ## 的含义 宏拼接
查看>>
Git安装配置
查看>>