发邮件是我们平常项目中比较常用的一个功能。那么如何使用PHP代码来写一个发送邮件功能的程序呢,我今天就来给慕课网的小伙伴们介绍一下我们最常用的PHPMailer的用法,利用他可以借助QQ邮箱网易邮箱和谷歌邮箱等的免费SMTP邮件服务器来发邮件。
作者: PHP_hello
链接:http://www.imooc.com/article/8005
来源:慕课网
摘抄:http://www.phpmaster.cn/?id=34
php大师;
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!

开启网易和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
<?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"; 
 } 
 ?>
作者: PHP_hello 
链接:http://www.imooc.com/article/8005
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!

QQ邮箱

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->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
<?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";
}
?>