phpmailer实现简单的邮件发送(以网易邮箱smtp服务器为例)

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就能解决了。

添加新评论