58 lines
1.8 KiB
PHP
58 lines
1.8 KiB
PHP
<?php
|
||
namespace app\service;
|
||
|
||
use PHPMailer\PHPMailer\PHPMailer;
|
||
use PHPMailer\PHPMailer\Exception;
|
||
use support\Log;
|
||
|
||
class MailService
|
||
{
|
||
protected $mailer;
|
||
|
||
public function __construct()
|
||
{
|
||
$this->mailer = new PHPMailer(true);
|
||
$this->configure();
|
||
}
|
||
|
||
protected function configure()
|
||
{
|
||
// SMTP 配置
|
||
$this->mailer->isSMTP();
|
||
$this->mailer->Host = 'smtp.qq.com';
|
||
$this->mailer->SMTPAuth = true;
|
||
$this->mailer->Username = '1696136552@qq.com'; // 替换为你的 Gmail
|
||
$this->mailer->Password = 'jhqkgjwzqqzgdcfd'; // 替换为应用专用密码
|
||
// $this->mailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // 使用 TLS
|
||
$this->mailer->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // SSL 加密
|
||
// $this->mailer->Port = 587;
|
||
$this->mailer->Port = 465;
|
||
$this->mailer->CharSet = 'UTF-8';
|
||
}
|
||
|
||
/**
|
||
* 发送验证码邮件
|
||
* @param string $toEmail 收件邮箱
|
||
* @param string $code 验证码
|
||
* @return bool
|
||
*/
|
||
public function sendVerificationCode(string $toEmail, string $code): bool
|
||
{
|
||
try {
|
||
$this->mailer->setFrom('1696136552@qq.com', 'XinYouHe Code'); // 发件人
|
||
$this->mailer->addAddress($toEmail);
|
||
|
||
// 邮件内容
|
||
$this->mailer->isHTML(true);
|
||
$this->mailer->Subject = '您的验证码';
|
||
$this->mailer->Body = "您的CRM验证码是:<strong>{$code}</strong>,5分钟内有效。";
|
||
|
||
$this->mailer->send();
|
||
Log::info("邮件发送成功: {$toEmail}");
|
||
return true;
|
||
} catch (Exception $e) {
|
||
Log::error("邮件发送失败: " . $this->mailer->ErrorInfo);
|
||
return false;
|
||
}
|
||
}
|
||
} |