发邮件是我们平常项目中比较常用的一个功能。那么如何使用PHP代码来写一个发送邮件功能的程序呢,我今天就来给慕课网的小伙伴们介绍一下我们最常用的PHPMailer的用法,利用他可以借助QQ邮箱网易邮箱和谷歌邮箱等的免费SMTP邮件服务器来发邮件。
[TOC]
开启网易和QQ邮箱的SMTP服务由于网易和QQ邮箱的SMTP服务默认是不开启的,谷歌的是开启的,所以小伙伴们要是选择了网易和QQ邮箱的话是需要登录到邮箱去开启的。
网易邮箱
登录到网易邮箱后如下图所示
进入到POP3/SMTP/IMAP设置页面
没有开启服务的小伙伴们请自己开启,开启过程中会验证一些手机号之类的,
完成后可以看到,<font color='red'>左侧栏有一个客户端授权密码的东西,这个很重要哦,一定要记下来</font>
QQ邮箱
登录到QQ邮箱后如下图点击设置
然后选择账户如下图
往下拉找到如下图圈住的地方
看看你是否开启了第一个服务器,我们开启第一个就行,如果小伙伴们没有开启就先开启吧,这里也会验证手机。
完成后我们点击生成授权码
生成后我们要复制这个授权码,(注意授权码看上去是有空格的,但是实际复制粘贴后没有空格,没有空格的才是正确的)
好了到现在我们做了完了一些准备工作。接下来小伙伴们要准备代码了。
下载PHPMailer并开启php_openssl、php_socket扩展- PHPMailer在github上可以搜索到,那么每次的更新都可以看到
地址 https://github.com/PHPMailer/PHPMailer - php_openssl 和php_socket 这个必须要开启的,不管你是windows还是Linux
我们将克隆下来的代码放到服务器根目录。进入到这个PHPMailer文件夹。
新建文件index.php
网易邮箱
<?php
include_once "class.phpmailer.php";
include_once "class.smtp.php";
//获取一个外部文件的内容
$mail=new PHPMailer();
$body="<h1>欢迎大家来到慕课网学习,我们一起共同进步</h1>";
//设置smtp参数
$mail->IsSMTP();
$mail->SMTPAuth=true;
$mail->SMTPKeepAlive=true;
$mail->Host="smtp.163.com";
$mail->Port=25;
//填写你的email账号和密码
$mail->Username="13033737678@163.com";
$mail->Password="abcd*****xyz";#注意这里要填写授权码就是我在上面网易邮箱开启SMTP中提到的,不能填邮箱登录的密码哦。
//设置发送方,最好不要伪造地址
$mail->From="13033737678@163.com";
$mail->FromName="隗**";
$mail->Subject="隗**发来的一封邮件";
$mail->AltBody=$body;
$mail->WordWrap=50; // set word wrap
$mail->MsgHTML($body);
//设置回复地址
$mail->AddReplyTo("13033737678@163.com","隗**");
//添加附件,此处附件与脚本位于相同目录下否则填写完整路径
//附件的话我就注释掉了
#$mail->AddAttachment("attachment.jpg");
#$mail->AddAttachment("attachment.zip");
//设置邮件接收方的邮箱和姓名
$mail->AddAddress("1079285995@qq.com","hello");
//使用HTML格式发送邮件
$mail->IsHTML(true);
//通过Send方法发送邮件
//根据发送结果做相应处理
if(!$mail->Send()){
echo "Mailer Error:".$mail->ErrorInfo;
}else{
echo "Message has been sent";
}
?>
QQ邮箱
<?php
include_once "class.phpmailer.php";
include_once "class.smtp.php";
//获取一个外部文件的内容
$mail=new PHPMailer();
$body="<h1>欢迎大家来到慕课网学习,我们一起共同进步</h1>";
//设置smtp参数
$mail->IsSMTP();
$mail->SMTPAuth=true;
$mail->SMTPKeepAlive=true;
$mail->SMTPSecure= "ssl";
$mail->Host="smtp.qq.com";
$mail->Port=465;
//填写你的email账号和密码
$mail->Username="479714212@qq.com";
$mail->Password="abcd****xyz";#注意这里也要填写授权码就是我在上面QQ邮箱开启SMTP中提到的,不能填邮箱登录的密码哦。
//设置发送方,最好不要伪造地址
$mail->From="479714212@qq.com";
$mail->FromName="隗**";
$mail->Subject="隗**发来的一封邮件";
$mail->AltBody=$body;
$mail->WordWrap=50; // set word wrap
$mail->MsgHTML($body);
//设置回复地址
$mail->AddReplyTo("479714212@qq.com","隗**");
//添加附件,此处附件与脚本位于相同目录下否则填写完整路径
//附件的话我就注释掉了
#$mail->AddAttachment("attachment.jpg");
#$mail->AddAttachment("attachment.zip");
//设置邮件接收方的邮箱和姓名
$mail->AddAddress("1079285995@qq.com","hello");
//使用HTML格式发送邮件
$mail->IsHTML(true);
//通过Send方法发送邮件
//根据发送结果做相应处理
if(!$mail->Send()){
echo "Mailer Error:".$mail->ErrorInfo;
}else{
echo "Message has been sent";
}
?>
谷歌邮箱
这里出生在天朝的小伙伴们要注意了,因为某些原因我们上不了谷歌,因此
下面的这个操作需要小伙伴认(fan)真(qiang)操作哦。
<?php
include_once "class.phpmailer.php";
include_once "class.smtp.php";
//获取一个外部文件的内容
$mail=new PHPMailer();
$body="<h1>欢迎大家来到慕课网学习,我们一起共同进步</h1>";
//设置smtp参数
$mail->IsSMTP();
$mail->SMTPAuth=true;
$mail->SMTPKeepAlive=true;
$mail->SMTPSecure= "ssl";
$mail->Host="smtp.gmail.com";
$mail->Port=465;
//填写你的email账号和密码
$mail->Username="huangby19890920@gmail.com";
$mail->Password="abc*****xyz";#哈哈哈这里大家需要填写谷歌邮箱的登录密码
//设置发送方,最好不要伪造地址
$mail->From="huangby19890920@gmail.com";
$mail->FromName="隗**";
$mail->Subject="隗**发来的一封邮件";
$mail->AltBody=$body;
$mail->WordWrap=50; // set word wrap
$mail->MsgHTML($body);
//设置回复地址
$mail->AddReplyTo("huangby19890920@gmail.com","隗**");
//添加附件,此处附件与脚本位于相同目录下否则填写完整路径
//附件的话我就注释掉了
#$mail->AddAttachment("attachment.jpg");
#$mail->AddAttachment("attachment.zip");
//设置邮件接收方的邮箱和姓名
$mail->AddAddress("1079285995@qq.com","hello");
//使用HTML格式发送邮件
$mail->IsHTML(true);
//通过Send方法发送邮件
//根据发送结果做相应处理
if(!$mail->Send()){
echo "Mailer Error:".$mail->ErrorInfo;
}else{
echo "Message has been sent";
}
验证
163邮箱
qq邮箱
谷歌邮箱
呵呵这个我也是服了生在天朝,很慢,我收到了再给大家贴图。
最后吐槽一下网上的很多方法,要么不全,要么不对,要么没说清楚,这里我给小伙伴们算是整理并验证了一下了。希望对大家有帮助。
热门评论
Linux搭建web版邮件服务器 谁会?
怎么才能启动邮箱服务
SMTP Error: Could not authenticate.总是报这个错,该开启的都开启了,class.smtp.php里的函数也改过,哪里出错了呢