im/extend/mail/Mail.php

95 lines
3.2 KiB
PHP
Raw Normal View History

2023-09-26 18:09:46 +08:00
<?php
/**
* Created by PhpStorm
* User Julyssn
* Date 2021/8/3 13:50
*/
namespace mail;
use Swift_Mailer;
use Swift_Message;
use Swift_SmtpTransport;
use think\facade\View;
class Mail
{
public $Config = [
'driver' => 'smtp', // 邮件驱动, 支持 smtp|sendmail|mail 三种驱动
'host' => 'smtp.qq.com', // SMTP服务器地址
'port' => 465, // SMTP服务器端口号,一般为25
'addr' => '', // 发件邮箱地址
'pass' => '', // 发件邮箱密码
'sign' => '', // 发件邮箱名称
'content_type' => 'text/html', // 默认文本内容 text/html|text/plain
'charset' => 'utf-8', // 默认字符集
'security' => 'ssl', // 加密方式 null|ssl|tls, QQ邮箱必须使用ssl
'temp' => '', //邮件模板
'logo' => '', //邮件logo
];
public function __construct($config)
{
$this->Config = array_merge($this->Config, $config);
//默认模板
$this->Config['temp'] = $this->Config['temp'] ?: 'temp';
$this->Config['logo'] = $this->Config['logo'] ?: 'https://im.file.raingad.com/logo/logo.png';
}
public function sendEmail(array $toEmails, $title, $content)
{
// 创建Transport对象设置邮件服务器和端口号并设置用户名和密码以供验证
$transport = (new Swift_SmtpTransport($this->Config['host'], $this->Config['port'], $this->Config['security']))
->setUsername($this->Config['addr'])
->setPassword($this->Config['pass']);
//创建mailer对象
$mailer = new Swift_Mailer($transport);
//创建message对象
$message = (new Swift_Message($title));//设置邮件主题
//用关联数组设置发件人地址,可以设置多个发件人
$message->setFrom([$this->Config['addr'] => $this->Config['sign']]);
//用关联数组设置收件人地址,可以设置多个收件人
$message->setTo($toEmails);
//设置邮件内容
$data = [
'logo' => $this->Config['logo'],
'title' => $title,
'content' => $content,
'time' => date('Y-m-d H:i:s'),
'name' => $this->Config['sign']
];
$html = View::fetch(dirname(__FILE__) . '/' . $this->Config['temp'] . '.html', ['data' => $data]);
$message->setBody($html, 'text/html');
// //创建attachment对象content-type这个参数可以省略
// $attachment = Swift_Attachment::fromPath('image.jpg', 'image/jpeg')->setFilename('cool.jpg');
// //添加附件
// $message->attach($attachment);
// //添加抄送人
// $message->setCc(array(
// 'Cc@qq.com' => 'Cc'
// ));
// //添加密送人
// $message->setBcc(array(
// 'Bcc@qq.com' => 'Bcc'
// ));
// //设置邮件回执
// $message->setReadReceiptTo('receipt@163.com');
//发送邮件
return $mailer->send($message);
}
}