TP使用PHPMAILER发送邮件
1.申请一个SMTP服务的邮箱。
我申请的是smtp.163.com的服务,注意SMTP服务密码不是登陆密码,需要单独设置
2.下载phpmailer类库文件http://pan.baidu.com/s/1kUNK9vx
3.将PHPMAILER类库中的class.phpmailer.php和class.smtp.php文件取出来,并重新命名为符合tp5命名规范的Phpmailer.php和Smtp.php
4.在项目根目录下的extend文件夹中,建立phpmailer文件夹,将上面两个改名好的文件放入其中。
5.设置Smtp.php的命名空间为namespace phpmailer;并且将CLASS SMTP改为CLASS Smtp
6.设置Phpmailer.php的命名空间为
namespace phpmailer;
Use phpmailer\Smtp;
并且将CLASS SMTP改为CLASS Phpmaiiler;
这两部很重要,如果使用原来的PHPMAILer和SMTP class名的话,TP5报错 无法找到类文件
7.在application/extra 下建立email.php文件 将在服务商申请好的邮箱服务信息,放入其中
代码如下
<?php
//发送邮件相关配置
return[
‘EMAIL_SMTP‘=>‘smtp.163.com‘,
‘EMAIL_ADDRESS‘=>‘[email protected]‘,
‘EMAIL_LOGINNAME‘=>‘[email protected]‘,
‘EMAIL_PASSWORD‘=>‘xxxx445864742‘,
‘port‘=>25
];
8.在phpmailer文件夹下建立新的类库文件Email.php
代码如下:
<?php
namespace phpmailer;
use phpmailer\Phpmailer;
//发送邮件类
class Email{
public static function send($address,$title,$message)
{
$Email = new Phpmailer();
//设置PHPMailer使用SMTP服务器发送email
$Email->IsSMTP();
//设置字符串编码
$Email->CharSet = ‘UTF-8‘;
//添加收件人地址,可以使用多次来添加多个收件人
$Email->AddAddress($address);
//设置邮件正文
$Email->Body = $message;
//设置邮件头的FROM字段
$Email->From = config(‘email.EMAIL_ADDRESS‘);
//设置发件人名称
$Email->FromName = ‘周起‘;
//设置邮件标题
$Email->Subject = $title;
//设置SMTP服务器
$Email->Host = config(‘email.EMAIL_SMTP‘);
//设置为验证码
$Email->SMTPAuth = true;
//设置用户名密码
$Email->Username = config(‘email.EMAIL_LOGINNAME‘);
$Email->Password = config(‘email.EMAIL_PASSWORD‘);
//发送邮件
return ($Email->Send());
}
}
9.在需要使用到邮件服务的地方调用
//发送验证邮件 根据业务逻辑修改
$message = ‘hello’;
$title = ‘周起个人测试邮件‘;
$data[‘email‘] = [email protected]
\phpmailer\Email::send($data[‘email‘],$title,$message);