1、描述
第一次做到用php做到发送邮件的功能。
Google了一下,php内置函数里面有一个mail()函数。但是使用mail的话,会涉及到很多问题,我也没有仔细研究过,反正都是和smtp协议息息相关。
于是,就去GitHub上开源的文件发送封装好的项目。后来就搜索到PHPMailer这个东西了。传送门:https://github.com/PHPMailer/PHPMailer (自行翻墙) 不多说,下载下来。
2、使用
当读完phpmailer的文档之后,你会找个一个最简单的demo。但是这个demo会加载一些‘不单纯’的邮件发送函数,比如附件发送,图片发送之类。我们这边只考虑最简单的。所以我们把class.phpmailer.php。class.smtp.php两个文件拿出来,他们是实现邮件发送和SMTP服务的关键。然后我们自己建立一个文件send.php 代码如下:
<?php
/**
* Created by PhpStorm.
* User: tao
* Date: 2017/3/14
* Time: 下午5:41
* Description:
*/
echo postmail('目标邮箱','My subject','hello world');
function postmail($to,$subject = '',$body = ''){
//Author:Jiucool WebSite: http://www.jiucool.com
//$to 表示收件人地址 $subject 表示邮件标题 $body表示邮件正文
//error_reporting(E_ALL);
error_reporting(E_STRICT);
date_default_timezone_set('Asia/Shanghai');//设定时区东八区
require_once('class.phpmailer.php');
include('class.smtp.php');
$mail = new PHPMailer(); //new一个PHPMailer对象出来
$body = eregi_replace("[\]",'',$body); //对邮件内容进行必要的过滤
$mail->CharSet ="GBK";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->IsSMTP(); // 设定使用SMTP服务
$mail->SMTPDebug = 1; // 启用SMTP调试功能
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // 启用 SMTP 验证功能
$mail->SMTPSecure = "ssl"; // 安全协议,可以注释掉
$mail->Host = 'smtp.163.com'; // SMTP 服务器
// $mail->Port = 25; // SMTP服务器的端口号
$mail->Port = 465; // SMTP服务器的端口号
$mail->Username = '****网易邮箱的账号'; // SMTP服务器用户名,PS:我乱打的
$mail->Password = '****网易邮箱的密码'; // SMTP服务器密码
$mail->SetFrom('网易邮箱的账号@163.com', 'blue');
// $mail->AddReplyTo('xxx@xxx.xxx','who');
$mail->Subject = $subject;
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional, comment out and test
$mail->MsgHTML($body);
$address = $to;
$mail->AddAddress($address, '');
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
return 'Mailer Error: ' . $mail->ErrorInfo;
} else {
return "Message sent!恭喜,邮件发送成功!";
}
}
参照demo,正确填写你的邮箱账号和你要的内容就可以正常发送了,但是我测试的时候会发送到垃圾邮件中,记得做好友好提示。
3、 备注
类似的smtp.qq.com 也能提供smtp服务,但是具体的话,要上网了解,最好登录自己的邮箱进行查看,支持的安全协议是什么。端口是什么,都要一一对应的。不然会报错,还有就是我是在线上测试的,本地测试的时候会报connect错误,自行解决了。更多的发送内容的话,参照demo和官方给的demo就能解决了。