HEX
Server: nginx/1.22.1
System: Linux VM-16-9-centos 3.10.0-1160.99.1.el7.x86_64 #1 SMP Wed Sep 13 14:19:20 UTC 2023 x86_64
User: www (1001)
PHP: 7.3.31
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/softfox.com.cn/wp-content/plugins/wpjam-basic/extends/wpjam-smtp.php
<?php
/*
Name: SMTP 发信
URI: https://mp.weixin.qq.com/s/SbuvSL01hT3Jxp9doWZ8zg
Description: SMTP 发信可以让你使用第三方邮箱的 SMTP 服务来发送邮件。
Version: 2.0
*/
class WPJAM_SMTP extends WPJAM_Option_Model{
	public static function get_fields(){
		return [
			'smtp_setting'		=> ['title'=>'SMTP 设置',	'type'=>'fieldset','fields'=>[
				'host'	=> ['title'=>'地址',		'type'=>'text',		'class'=>'all-options',	'value'=>'smtp.qq.com'],
				'ssl'	=> ['title'=>'发送协议',	'type'=>'text',		'class'=>'',			'value'=>'ssl'],
				'port'	=> ['title'=>'SSL端口',	'type'=>'number',	'class'=>'',			'value'=>'465'],
				'user'	=> ['title'=>'邮箱账号',	'type'=>'email',	'class'=>'all-options'],
				'pass'	=> ['title'=>'邮箱密码',	'type'=>'password',	'class'=>'all-options'],
			]],
			'mail_from_name'	=> ['title'=>'发送者姓名',	'type'=>'text',	'class'=>''],
			'reply_to_mail'		=> ['title'=>'回复地址',		'type'=>'email','class'=>'all-options',	'description'=>'不填则用户回复使用SMTP设置中的邮箱账号']
		];
	}

	public static function get_menu_page(){
		return [
			'parent'		=> 'wpjam-basic',
			'page_title'	=> 'SMTP 发信',
			'network'		=> false,
			'summary'		=> __FILE__,
			'function'		=> 'tab',
			'tabs'			=> [self::class, 'get_tabs']
		];
	}

	public static function on_phpmailer_init($phpmailer){
		$phpmailer->isSMTP(); 

		// $phpmailer->SMTPDebug	= 1;

		$phpmailer->SMTPAuth	= true;
		$phpmailer->SMTPSecure	= self::get_setting('ssl', 'ssl');
		$phpmailer->Host		= self::get_setting('host'); 
		$phpmailer->Port		= self::get_setting('port', '465');
		$phpmailer->Username	= self::get_setting('user');
		$phpmailer->Password	= self::get_setting('pass');

		$phpmailer->setFrom(self::get_setting('user'), self::get_setting('mail_from_name'), false);

		$reply_to_mail	= self::get_setting('reply_to_mail');

		if($reply_to_mail){
			$phpmailer->AddReplyTo($reply_to_mail, self::get_setting('mail_from_name', ''));
		}
	}

	public static function send_callback($data){
		return wp_mail($data['to'], $data['subject'], $data['message']);
	}

	public static function get_form(){
		return [
			'submit_text'	=> '发送',
			'callback'		=> [self::class, 'send_callback'],
			'validate'		=> true,
			'fields'		=> [
				'to'		=> ['title'=>'收件人',	'type'=>'email',	'required'],
				'subject'	=> ['title'=>'主题',		'type'=>'text',		'required'],
				'message'	=> ['title'=>'内容',		'type'=>'textarea',	'class'=>'',	'rows'=>8,	'required'],
			]
		];
	}

	public static function get_tabs(){
		add_action('wp_mail_failed', 'wpjam_send_json');

		return [
			'smtp'	=> [
				'title'		=> '发信设置',
				'function'	=> 'option',
			],
			'send'	=> [
				'title'		=> '发送测试',	
				'function'	=> 'form',	
				'form'		=> [self::class, 'get_form'],	
			]
		];
	}

	public static function add_hooks(){
		add_action('phpmailer_init',	[self::class, 'on_phpmailer_init']);
	}
}

wpjam_register_option('wpjam-smtp',	['model'=>'WPJAM_SMTP', 'title'=>'发信设置']);