使用 phpmailer 群发邮件
Sonder
2020-04-11
3220字
8分钟
浏览 (3.2k)
代码示例:
<?php
/*
* 发送邮箱(单发、群发功能)
*/
use PHPMailer\PHPMailer\PHPMailer;
require_once dirname(__FILE__).'/PHPMailer/PHPMailer.php';
require_once dirname(__FILE__).'/PHPMailer/SMTP.php';
require_once dirname(__FILE__).'/PHPMailer/Exception.php';
class Mail
{
private $_host = 'smtp.126.com';
private $_port = '25';
private $_is_ssl = false;
private $_username = 'xxx@126.com';
private $_password = '123456SFASXAA';
private $_to_arr = [];
public function send($fromName,$title,$content,$isclear = TRUE){
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPAuth = TRUE;
$mail->Host = $this->_host;
if($this->_is_ssl){
$mail->SMTPSecure = 'ssl';
}
$mail->Port = $this->_port;
$mail->Username = $this->_username;
$mail->Password = $this->_password;
$mail->CharSet = 'UTF-8';
$mail->SetFrom($mail->Username, $fromName);
$mail->isHTML(TRUE);
foreach($this->_to_arr as $to){
$mail->addAddress($to,'',$isclear);
}
$mail->Subject = $title;
$mail->MsgHTML($content);
if ($mail->Send()){
return [TRUE,''];
}else {
return [FALSE,$mail->ErrorInfo];
}
}
public function addToUser($user){
$this->_to_arr[] = $user;
return $this;
}
public function setHost($host){
$this->_host = $host;
return $this;
}
public function setPort($port){
$this->_port = $port;
return $this;
}
public function setSSL(){
$this->_is_ssl = TRUE;
return $this;
}
public function setUsername($username){
$this->_username = $username;
return $this;
}
public function setPassword($password){
$this->_password = $password;
return $this;
}
/**
* 使用默认账号发送邮件
* @param string $to 收件人
* @param string $fromName 来自谁
* @param string $subject 标题
* @param string $body 内容
* @param bool $isclear
*
* @return bool|mixed
*/
public static function sendMsg($to,$fromName,$subject = "",$body = "",$isclear = true)
{
$mail_builder = new Mail();
$mail_builder->addToUser($to);
list($ok,$msg) = $mail_builder->send($fromName,$to,$subject,$body,$isclear);
if ($ok) {
return TRUE;
}else {
return $msg;
}
}
}
单个发送
Mail::sendMsg('xxx@163.com', 'sender', 'title', 'body');
多个收件人一次性发送
public function sendEmailToAllUser($pwd){
$mail = new Mail();
$mail->setHost('smtp.exmail.qq.com')
->setPort(465)
->setUsername('张三')
->setPassword('123123')
->setSSL();
list($ok,$msg) = $mail->addToUser('甲先生')
->addToUser('乙先生')
->addToUser('丙先生')
->addToUser('丁先生')
->send('管理员',$this->email_subject($pwd),$this->email_body($pwd));
}