| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?php
- namespace app\common\command;
- use app\adminapi\lists\works\ServiceWorkMailLists;
- use excel\ExcelWriter;
- use PHPMailer\PHPMailer\PHPMailer;
- use think\console\Command;
- use think\console\Input;
- use think\console\Output;
- use think\facade\Log;
- /**
- * 发送保险的邮箱
- * Class SendBxMail
- * @package app\command
- */
- class SendBxMail extends Command
- {
- protected function configure()
- {
- $this->setName('send_bx_mail')->setDescription('每天22点定时发送邮箱');
- }
- protected function execute(Input $input, Output $output)
- {
- try {
- return $this->sendMail();
- } catch (\Exception $e) {
- Log::write('SendBxMail:'.$e->getMessage());
- return false;
- }
- }
- public function sendMail()
- {
- // 文件路径 - 替换为你的实际文件路径
- //$filePath = 'uploads/baoxian/20250327职业责任险投保清单.xlsx';
- $excelFile = $this->getExcelFile();
- if(empty($excelFile)) throw new \Exception("邮件发送失败. 错误信息: 路径不存在-101");
- $filePath = $excelFile[0];
- $filename = $excelFile[1];
- if(empty($filePath)) throw new \Exception("邮件发送失败. 错误信息: 路径不存在-102");
- $mail = new PHPMailer(true);
- try {
- // 邮件服务器设置
- $mail->isSMTP(); // 使用SMTP发送邮件
- $mail->Host = 'smtp.126.com'; // SMTP服务器地址,替换为你的SMTP服务器
- $mail->SMTPAuth = true; // 启用SMTP认证
- $mail->Username = 'whkyjl@126.com'; // SMTP用户名,替换为你的邮箱地址
- $mail->Password = 'MNpgMjYMYehx3nPi'; // SMTP密码,替换为你的邮箱密码
- $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // 开启加密,默认为无加密,可选`PHPMailer::ENCRYPTION_SMTPS`
- $mail->Port = 465;
- // $mail->SMTPDebug = 2; // 启用详细调试输出
- $mail->CharSet = 'UTF-8';
- // 发送者和接收者设置
- $mail->setFrom('whkyjl@126.com', '武汉开源节流科技有限公司'); // 发件人邮箱和名称
- $mail->addAddress('sujing@ub.chinalife-p.com.cn', '出单业务'); // 收件人邮箱和名称
- $mail->addAddress('649478907@qq.com', '出单业务'); // 收件人邮箱和名称
- $mail->addAddress('liliangjie@ub.chinalife-p.com.cn', '出单业务'); // 收件人邮箱和名称
- $mail->addAddress('fangxuhao@outlook.com', '出单业务'); // 收件人邮箱和名称
- // $mail->addAddress('1804628603@qq.com', '出单业务'); // 收件人邮箱和名称
- $mail->addAddress('466014217@qq.com', '出单业务'); // 收件人邮箱和名称
- // 设置邮件内容
- $mail->isHTML(true); // 将邮件正文设置为HTML格式
- // 设置邮件内容
- $mail->Subject = mb_convert_encoding('请查收附件中的Excel文件', 'UTF-8', 'auto');
- $mail->Body = mb_convert_encoding('<p>你好,<br>请查收附件中的Excel文件。</p>', 'UTF-8', 'auto');
- $mail->AltBody = mb_convert_encoding('你好,请查收附件中的Excel文件。', 'UTF-8', 'auto');
- // 添加附件
- $mail->addAttachment($filePath, $filename); // 添加附件,第二个参数是显示在邮件中的文件名
- $mail->send();
- return '邮件发送成功';
- } catch (\Exception $e) {
- throw new \Exception("邮件发送失败. 错误信息: {$mail->ErrorInfo}");
- }
- }
- public function getExcelFile()
- {
- try {
- $downloadObj = new ServiceWorkMailLists();
- $sheet = new ExcelWriter();
- $lists = $downloadObj->excelExportList([]);
- $filename = $downloadObj->setFileName().'职业责任险投保清单';
- $fields = $downloadObj->setExcelComplexFields();
- if(!$lists || !$fields){
- Log::info('ServiceWorkMail:lists或fields不存在--'.json_encode([$lists,$fields]));
- return '';
- }else{
- $sheet->savePath = './public/exports/';
- $sheet->generateExcelFile($fields['zh_cn_fields'], $lists,$filename, $fields['data_fields']);
- return [$sheet->fileUrl(),$filename.'.xlsx'];
- }
- } catch (\Exception $e) {
- Log::info('ServiceWorkMail:'."生成职业责任险投保清单失败. 错误信息: {$e->getMessage()}");
- return '';
- }
- }
- }
|