php引入PHPMailer发送邮件
昨天做了一个发送邮件的功能,如果直接用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();
//启用SMTP调试
// 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发送邮件的更多相关文章
- 使用PHPMailer发送邮件
如果要使用php发送邮件,则可以使用PHP 内置的mail() 函数,但是mail()函数需要有服务器支持 必须有自己的邮件服务器,如果使用stmp服务来发送邮件的话相当于代替别人发送,而不是从自己服 ...
- php使用phpmailer发送邮件
本人新手,由于要做邮件发送验证码,所以找到和搜集到这些,本人亲测完全可以用 这是163邮箱的 因为不是企业邮箱填写的账号是163的账号,但是密码是授权码 授权码的获取方式为:
- phpmailer发送邮件服务
获取开源的phpmail类 开启stmp服务登录126/163邮箱 ->设置->POPS/SMTP/IMAP(开启需要的服务,并点击保存,初次使用会要求设置一个授权码) 测试 <?p ...
- 阿里云服务器如何使用phpmailer发送邮件
原因是因为阿里云把25端口给禁用了,所以,普通方式发送不了,解决办法就是在阿里云安全组中把465端口打开,然后再才能发送邮件.亲测成功,贴出引用代码 function emailTo($user,$c ...
- 利用PHPMailer发送邮件时报错
利用thinkphp集成PHPMailer发送邮件时报错:Failed to connect to server: Unable to find the socket transport “ssl” ...
- 使用PHPmailer发送邮件的详细代码
一.使用PHPMailer发送邮件的原因 PHP有内置的mail()方法,但是由于一些主机空间不支持该方法,所以经常会遇到无法发送邮件的情况. 所以,可以下载PHPMailer类,实现邮件发送. 二. ...
- ThinkPHP 中使用 PHPMailer 发送邮件 支持163和QQ邮箱等
[摘要]ThinkPHP是一个开源的PHP框架, 是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.本文介绍ThinkPHP 中使用 PHPMailer 发送邮件. PHP是自带可以发送邮件的Ma ...
- 在Thinkphp3.2 中使用PHPMailer 发送邮件
phpmailer发送邮件是php开发者首选的一个邮件发送插件了,下面我来介绍怎么集成phpmailer到thinkphp框架了,有需要了解的朋友可参考. phpmailer发送邮件功能很强大,今天真 ...
- phpmailer发送邮件,可以带附件
先从网上下载phpmailer压缩包 将解压的文件导入到你的项目中 实例 require_once ('PHPMailer/class.phpmailer.php'); //引入phpmailer文件 ...
随机推荐
- 题解报告:poj 1738 An old Stone Game(区间dp)
Description There is an old stone game.At the beginning of the game the player picks n(1<=n<=5 ...
- poj1815Friendship(最小割求割边)
链接 题意为去掉多少个顶点使图不连通,求顶点连通度问题.拆点,构造图,对于<u,v>可以变成<u2,v1> <v2,u1>容量为无穷,<u1,u2>容量 ...
- angularjs 下select中ng-options使用
当我有一堆object数据要用下拉框进行显示选择时,可以使用到angularjs中的select中的ng-options的属性.官网网址:https://docs.angularjs.org/api/ ...
- props.children 和容器类组件
有一类组件,充当了容器的作用,它定义了一种外层结构形式,然后你可以往里面塞任意的内容.这种结构在实际当中非常常见,例如这种带卡片组件: 组件本身是一个不带任何内容的方形的容器,我可以在用这个组件的时候 ...
- Android小玩意儿-- 从头开发一个正经的MusicPlayer(一)
之前从未接触过音乐播放器这块东西的开发.今天偶然想做一个自己的音乐播放器.算是练练手.既然要做,就要做一个正儿八经的App.很多网上的资料也是模模糊糊,不是很全,现在开始,自己摸索着尝试着一步一步的做 ...
- QProcess执行带管道的shell命令
QStringList options; options << "-c" << "ls -l | grep a | sort"; QPr ...
- UVA 11971 Polygon 多边形(连续概率)
题意: 一根长度为n的木条,随机选k个位置将其切成k+1段,问这k+1段能组成k+1条边的多边形的概率? 思路: 数学题.要求的是概率,明显与n无关. 将木条围成一个圆后再开切k+1刀,得到k+1段. ...
- 洛谷 P1507 NASA的食物计划
题目背景 NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安 全技术问题一直大伤脑筋,因此在各方压力下终止了航天 飞机的历史,但是此类事情会不会在以后发生,谁也无法 保证,在遇到这类航天问题时,解 ...
- 【转载】SQL Server 2012 日志传送
SQL Server 2012 日志传送 一.准备: 数据库为完全恢复模式,并事先做一次完全备份. 共享一个文件夹,主机备份放在这个文件夹,而且客户机有权访问这个共享文件夹. 二.基本配置 1.启动配 ...
- Android(java)学习笔记165:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例的优化:请求码和结果码)
1.开启界面获取返回值 (1)采用一种特殊的方式开启Activity: startActivityForResult(intent , 0): (2)在被开启的Activi ...