昨天做了一个发送邮件的功能,如果直接用mail()函数,需要拥有自己的邮件服务器,所有引入PHPMailer类方便快捷,简单写一下开发步骤:

一、拥有自己的邮箱账号(作为发件人邮箱)

  分两种情况:

  1、如果是企业邮箱,需要用到的参数为邮箱号和密码

  2、如果是个人邮箱,需要用到的参数为邮箱号和授权码(只有开启之后才能通过PHP代码,控制邮件的自动发送)

二、PHPMailer的下载

  下载地址:https://github.com/PHPMailer/PHPMailer

  我这里是用的thinkphp 5,下载后放到vendor目录

三、封装发送邮件方法,设置相关参数

具体代码如下,这里我用的是企业邮箱,如果是个人邮箱,需更改以下几个参数值:

$mail->Host,$mail->Port,发件人邮箱密码(授权码)

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/10/15 0015
* Time: 13:33
*/ namespace app\common\model; require VENDOR_PATH . 'PHPMailer/src/Exception.php';
require VENDOR_PATH . 'PHPMailer/src/PHPMailer.php';
require VENDOR_PATH . 'PHPMailer/src/SMTP.php'; use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception ;
class Mail
{
//发件人邮箱
private static $_fromAddress = '***@medpeer.cn';
//发件人邮箱登录密码(非企业邮箱为授权码)
private static $_pwd = '***';
//收件人邮箱
private static $_toAddress = '***@medpeer.cn'; /**
* 发送邮件
* @author ZZ
* @param string $fromAddress 发件人
* @param string $pwd 发件人登录密码
* @param string $toAddress 收件人
* @param string $title 邮件题目
* @param string $content 邮件内容
* @return array
*/
public function sendMail($title,$content,$toAddress = '',$fromAddress = '',$pwd = ''){
if (empty($title) || empty($content)) {
return ['result' => false, 'msg' => '参数错误'];
}
if (empty($fromAddress)) {
$fromAddress = self::$_fromAddress;
$pwd = self::$_pwd;
}
if (empty($toAddress)) {
$toAddress = self::$_toAddress;
}
$mail = new PHPMailer();
//告诉PHPMailer使用SMTP
$mail->isSMTP();
//启用S​​MTP调试
// 0 =关闭(供生产使用)
// 1 =客户端消息
// 2 =客户端和服务器消息
$mail->SMTPDebug = 2 ;
//设置邮件服务器的主机名
$mail->Host = 'smtp.exmail.qq.com';
//使用
// $ mail-> Host = gethostbyname('smtp.gmail.com');
//如果您的网络不支持SMTP over IPv6
//设置SMTP端口号 - 587用于经过身份验证的TLS,即RFC4409 SMTP提交
$mail->Port = 465;
//设置加密系统使用 - ssl(不建议使用)或tls
$mail->SMTPSecure = 'ssl';
//是否使用SMTP身份验证
$mail->SMTPAuth = true ;
//用于SMTP身份验证的用户名 - 使用gmail的完整电子邮件地址
$mail->Username = $fromAddress;
//用于SMTP身份验证的密码(企业邮箱的话为登录密码)
$mail->Password = $pwd;
//设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
$mail->CharSet = 'UTF-8';
//设置要从中发送消息的人员
$mail->setFrom($fromAddress,'***');
//设置备用回复地址
//$mail->addReplyTo('***@qq.com','腾讯');
//设置要将消息发送给谁
$mail->addAddress($toAddress,'***');
//设置主题行
$mail->Subject = $title;
//从外部文件中读取HTML邮件正文,将引用的图像转换为嵌入式图像
//将HTML转换为基本的纯文本替代正文
//$mail->msgHTML(file_get_contents(' contents.html '),__DIR__);
//用手动创建的纯文本正文替换
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->Body = $content;
$result = $mail->send();
if (!$result) {
return ['result' => false, 'msg' => $mail->ErrorInfo];
} else {
return ['result' => true, 'msg' => '成功发送邮件消息'] ;
}
}
}

  

php引入PHPMailer发送邮件的更多相关文章

  1. 使用PHPMailer发送邮件

    如果要使用php发送邮件,则可以使用PHP 内置的mail() 函数,但是mail()函数需要有服务器支持 必须有自己的邮件服务器,如果使用stmp服务来发送邮件的话相当于代替别人发送,而不是从自己服 ...

  2. php使用phpmailer发送邮件

    本人新手,由于要做邮件发送验证码,所以找到和搜集到这些,本人亲测完全可以用 这是163邮箱的   因为不是企业邮箱填写的账号是163的账号,但是密码是授权码 授权码的获取方式为:

  3. phpmailer发送邮件服务

    获取开源的phpmail类 开启stmp服务登录126/163邮箱 ->设置->POPS/SMTP/IMAP(开启需要的服务,并点击保存,初次使用会要求设置一个授权码) 测试 <?p ...

  4. 阿里云服务器如何使用phpmailer发送邮件

    原因是因为阿里云把25端口给禁用了,所以,普通方式发送不了,解决办法就是在阿里云安全组中把465端口打开,然后再才能发送邮件.亲测成功,贴出引用代码 function emailTo($user,$c ...

  5. 利用PHPMailer发送邮件时报错

    利用thinkphp集成PHPMailer发送邮件时报错:Failed to connect to server: Unable to find the socket transport “ssl” ...

  6. 使用PHPmailer发送邮件的详细代码

    一.使用PHPMailer发送邮件的原因 PHP有内置的mail()方法,但是由于一些主机空间不支持该方法,所以经常会遇到无法发送邮件的情况. 所以,可以下载PHPMailer类,实现邮件发送. 二. ...

  7. ThinkPHP 中使用 PHPMailer 发送邮件 支持163和QQ邮箱等

    [摘要]ThinkPHP是一个开源的PHP框架, 是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.本文介绍ThinkPHP 中使用 PHPMailer 发送邮件. PHP是自带可以发送邮件的Ma ...

  8. 在Thinkphp3.2 中使用PHPMailer 发送邮件

    phpmailer发送邮件是php开发者首选的一个邮件发送插件了,下面我来介绍怎么集成phpmailer到thinkphp框架了,有需要了解的朋友可参考. phpmailer发送邮件功能很强大,今天真 ...

  9. phpmailer发送邮件,可以带附件

    先从网上下载phpmailer压缩包 将解压的文件导入到你的项目中 实例 require_once ('PHPMailer/class.phpmailer.php'); //引入phpmailer文件 ...

随机推荐

  1. MySql数据基本操作sql语句

    表字段 1>插入数据insert 如果不插入id,让id自动增加 INSERT INTO `gpw_group`(group_code, group_parent_id, group_name, ...

  2. 151 Reverse Words in a String 翻转字符串里的单词

    给定一个字符串,翻转字符串中的每个单词.例如,给定 s = "the sky is blue",返回 "blue is sky the".对于C程序员:请尝试用 ...

  3. RAID基础

    磁盘类型 类型 IDE Integrated Drive Electronics SATA Srial ATA SCSI Small Computer System Interface FC Fibe ...

  4. flask搭建

    1.定义路由app.py from flask import Flask, request from flask import Blueprint app = Flask(__name__) test ...

  5. Dynamic Median

    题意: 设计一个数据结构,初始为空,支持以下操作: (1)增加一个元素,要求在log(n)时间内完成,其中n是该数据结构中当前元素的个数.注意:数据结构中允许有重复的元素. (2)返回当前元素集合的中 ...

  6. 关于对象.style currentstyle 的区别

    对象.style的方式只能获取行内写法的样式,但是外部引入的或者写在head里面的就无法获取,只能用currentstyle.

  7. iOS 开发App捕获异常, 反馈给服务器, 提高用户体验

    在我们开发的app中, 不可避免的, 有时候用户使用软件会崩溃.  我们就需要捕获异常, 可以在入口类中加入相应的代码, 可以在每次用户打开程序的时候, 检查一下沙盒中是否有崩溃日志, 如果有, 可以 ...

  8. /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf

    [root@localhost nagios]# make install-webconf/usr/bin/install -c -m 644 sample-config/httpd.conf /et ...

  9. Redis学习笔记(三)列表进阶

    RPOPLPUSH source destination(弹出source列表最右端的元素,并推入destination的最左端,同时返回这个元素) BRPOPLPUSH source destina ...

  10. tac命令

    tac——显示文件内容(反列显示) 命令所在路径:/usr/bin/tac 示例1: # tac /etc/hosts 反列显示/etc/目录下hosts文件内容 ☛适合查看内容较短的文件