aef7bd5a创建于 2025年7月30日历史提交
<?php

namespace Module\EmailSmtp\Admin\Controller;

use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\View;
use ModStart\Admin\Layout\AdminConfigBuilder;
use ModStart\Core\Input\Response;
use ModStart\Form\Form;
use ModStart\Widget\Box;
use ModStart\Widget\ButtonDialogRequest;
use Module\EmailSmtp\Provider\SmtpMailSenderProvider;

class   ConfigController extends Controller
{
    public static $PermitMethodMap = [
        'test' => 'setting',
    ];

    public function setting(AdminConfigBuilder $builder)
    {
        $builder->pageTitle('SMTP邮箱');
        $builder->switch('systemEmailEnable', '开启SMTP邮件发送');
        $builder->text('systemEmailSmtpServer', 'SMTP服务器地址');
        $builder->switch('systemEmailSmtpSsl', 'SMTP是否为SSL');
        $builder->text('systemEmailSmtpUser', 'SMTP用户');
        $builder->text('systemEmailSmtpPassword', 'SMTP密码');
        $builder->text('EmailSmtp_FromName', '邮件来源名称');
        $builder->text('EmailSmtp_FromEmail', '邮件来源邮箱')
            ->help('如果不填写则使用SMTP用户作为来源邮箱');
        $builder->formClass('wide');
        $builder->hookFormWrap(function (Form $form) {
            return Box::make($form, 'SMTP邮箱')
                ->tool(
                    ButtonDialogRequest::make('default',
                        '测试发送',
                        modstart_admin_url('email_smtp/config/test')
                    ));
        });
        return $builder->perform();
    }

    public function test(AdminConfigBuilder $builder)
    {
        $builder->useDialog();
        $builder->pageTitle('邮件发送测试');
        $builder->disableBoxWrap(true);
        $builder->text('email', '测试接收邮箱')->rules('required');
        $builder->formClass('wide');
        return $builder->perform(null, function (Form $form) {
            $data = $form->dataForming();
            $email = $data['email'];
            $sender = new SmtpMailSenderProvider();
            $content = View::make('module::EmailSmtp.View.mail.test', [])->render();
            $ret = $sender->send(
                $email,
                $email,
                '测试邮件',
                $content,
                []
            );
            if (Response::isError($ret)) {
                return Response::generateError('邮件发送失败:' . $ret['msg']);
            }
            return Response::generateSuccess('测试邮件成功发送到' . $email);
        });
    }


}