环境:Thinkphp5,利用PHPMAILER来发送邮件,亲测可用!
将[phpmailer类]类文件下载到项目/extend,即是:project/extend/phpmailer。
1.新建email的config文件,位置在project/application/extra/email.php
<?php
return [
'EMAIL_HOST' =>'smtp.qq.com', //Email SMTP
'EMAIL_ADDRESS' =>'465206670@qq.com', //Email地址
'EMAIL_LOGINNAME' =>'465206670@qq.com', //Email帐号
'EMAIL_PASSWORD' =>'XXXXXXXXXXXX', //Email密码
'EMAIL_PORT' =>'25', //Email端口
'EMAIL_FROMNAME' =>'howingwah', //来自名称
'EMAIL_SETFROM' =>'howingwah',
'EMAIL_ADD_ADDRESS' =>'howingwah',
'EMAIL_ADD_REPLYTO' =>'howingwah',
'EMAIL_CHARSET' =>'UTF-8', //编码
'EMAIL_DEBUG' =>'0', //debug类型
'EMAIL_AUTH' =>'true', //是否开启smtp验证
'EMAIL_SECURE' =>'tls', //Enable TLS encryption, `ssl` also accepted
];
2.在project/application/function.php,加载phpmailer类,并且新建一个方法叫sendEmail,代码如下。
<?php
use phpmailer\Phpmailer;
/**
* 发送邮件
* @param $toemail 收件人email
* @param $subject 邮件主题
* @param $message 正文
* @param $file 附件
* @param $from 发件人
* @param $cfg 邮件配置信息
* @param $sitename 邮件站点名称
*/
function sendEmail($toemail, $subject, $message, $filename = array(), $from = '', $cfg = array(), $sitename = '')
{
//判断openssl是否开启
$openssl_funcs = get_extension_funcs('openssl');
if (!$openssl_funcs) {
return array('status' => -1, 'msg' => '请先开启openssl扩展');
}
//表单提交 测试发送
if ($cfg && is_array($cfg)) {
$from = $cfg['from'];
$email = $cfg;
} else {
$config = cache('Config');
}
$mail = new PHPMailer(); //实例化PHPMailer对象
//Server settings
$mail->CharSet = config('email.EMAIL_CHARSET'); //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->SMTPDebug = config('email.EMAIL_DEBUG'); // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->SMTPAuth = config('email.EMAIL_AUTH'); // 启用SMTP验证功能
$mail->Host = config('email.EMAIL_HOST'); // Specify main and backup SMTP servers
$mail->Username = config('email.EMAIL_LOGINNAME'); // SMTP username
$mail->Password = config('email.EMAIL_PASSWORD'); // SMTP password
$mail->From = config('email.EMAIL_ADDRESS'); //邮件发送者email地址
$mail->SMTPSecure = config('email.EMAIL_SECURE'); // Enable TLS encryption, `ssl` also accepted
$mail->Port = config('email.EMAIL_PORT'); //端口 - likely to be 25, 465 or 587
//Recipients
$mail->FromName = config('email.EMAIL_FROMNAME');
$mail->setFrom($from, config('email.EMAIL_SETFROM')); //发送方地址和昵称
$mail->addAddress($toemail, config('email.EMAIL_ADD_ADDRESS')); // Add a recipient
$mail->addReplyTo($toemail, config('email.EMAIL_ADD_REPLYTO')); //回复地址
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject; //标题
$mail->Body = $message; //内容
//为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称
$mail->addAttachment($filename['filename']);//可以多文件上传,逗号分隔。
//$mail->addAttachment($filename);//可以多文件上传,逗号分隔。
//同样该方法可以多次调用 上传多个附件
// $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');
//$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if (!$mail->send()) {
return array('status' => -1, 'msg' => '发送失败: ' . $mail->ErrorInfo);
} else {
return array('status' => 1, 'msg' => '发送成功');
}
}
3.调用sendEmail函数进行发送邮件。demo:
<?php
$sendEmail = sendEmail('邮件地址', '邮件标题', '邮件内容','附件绝对地址');
if ($sendEmail['status']=='-1'){
echo '失败';
}else{
echo '成功';
}
?>
转载文章,版权归作者所有,转载请联系作者。作者:,来源:
最新评论