利用phpmailer类发送邮件
17-05-19 11:52
字数 2223
阅读 3565
已编辑
发送邮件是经常用到的一个业务,比如在用户注册的时候,或者是利用邮件推广产品。
phpmailer是很好用的一个php发送邮件的工具类,利用它可以很方便的发送邮件。支持各种邮箱协议。
首先下载 phpmailer.zip
如何使用呢,下面以tp为例,简单介绍下使用教程。
首先解压 phpmailer 到/ThinkPHP/Library/Vendor/phpmailer
目录。
然后在config.php
中添加如下配置。
return [
'mail_config' =>[
'host' => 'smtp.mxhichina.com',// SMTP 服务器
'port' => 25,// SMTP服务器的端口号
'from' => 'postmaster@xxxx.com',// 你的邮件地址
'fromName' => 'i am yeqiu',// 发送人名称
'user' => 'postmaster@xxxx.com',// SMTP服务器用户名
'pass' => 'xxxxx',// SMTP服务器密码
],
];
然后我新建了一个邮件发送类,方便使用时直接调用,你也可以写在Common
的function.php
中,更方便。
我封装的邮件发送类位于Logic
下。
namespace CommonLogic;
class EmailLogic{
public $mailer='';
public $error='';
function __construct(){
vendor('phpmailer.class#phpmailer');
vendor('phpmailer.class#smtp');
$this->mailer = new PHPMailer();
$this->mailer->CharSet = 'UTF-8';
$this->mailer->isSMTP(); // 设定使用SMTP服务
$this->mailer->SMTPDebug = 0; // 关闭SMTP调试功能
/*
* 1 = errors and messages
* 2 = messages only
*/
$this->mailer->SMTPAuth = true; // 启用 SMTP 验证功能
//$this->mailer->SMTPSecure = 'ssl'; // 使用安全协议,开启这个后,会导致发送失败,不知道什么原因
}
function send($title,$contents,$sendto){
$config = C('mail_config');
if(!empty($title) && !empty($contents) && !empty($sendto)){
$this->mailer->Subject = $title;
$this->mailer->Host = $config['host']; // SMTP 服务器
$this->mailer->Port = $config['port']; // SMTP服务器的端口号
$this->mailer->Username = $config['user']; // SMTP服务器用户名
$this->mailer->Password = $config['pass']; // SMTP服务器密码
$this->mailer->setFrom($config['from'], $config['fromName']);
$replyEmail = $config['FROM_EMAIL'];
$replyName = $config['FROM_NAME'];
$this->mailer->addReplyTo($replyEmail, $replyName);
$this->mailer->msgHTML($contents);
if(is_array($sendto)){
foreach($sendto as $to){
if(filter_var($to,FILTER_VALIDATE_EMAIL)){
$this->mailer->addAddress($to);
}else{
$this->error='不正确的邮箱格式!';
return false;
}
}
}else{
if(filter_var($sendto,FILTER_VALIDATE_EMAIL)){
$this->mailer->addAddress($sendto);
}else{
$this->error='不正确的邮箱格式!';
return false;
}
}
if($this->mailer->send()){
return true;
}else{
$this->error = $this->mailer->ErrorInfo;
return false;
}
}else{
$this->error='参数不正确!';
return false;
}
}
/*if(is_array($attachment)){ // 添加附件,我并未测试过。
foreach ($attachment as $file){
is_file($file) && $mail->AddAttachment($file);
}
}*/
}
使用方法
$emailLogic = new EmailLogic();
try{
$emailLogic->send('这是一封测试邮件', 'hello,此邮件由phpmailer发送,<a href="https://www.shiqidu.com/p/82">查看教程</a>' ,'123456@qq.com');
}catch (Exception $e){
$this->writeLogs('邮件发送失败日志' ,$e->getMessage());
}
0人点赞>
请登录后发表评论
相关推荐
文章归档
最新文章
最受欢迎
22-11-16 10:13
21-10-18 12:11
21-10-17 23:27
20-08-18 17:58
20-01-06 12:12
感谢小友分享,省的自己再向thinkphp中集成了,好用[em_71]