将评论回复邮件通知功能(SMTP方式)集成到主题中

  • A+
所属分类:建博笔记

邮件回复功能需要主机支持mail()函数,如果你的主机/服务器支持这个函数的话,这篇文章就不用看了 :mrgreen: 。如果你的主机/服务器不支持这个函数的话,请接着往下看。

一、前言

之前发布过一篇文章:《给wordpress添加评论回复邮件通知功能》,当时采用的方案是直接将相关代码放在【functions.php】文件中。虽然这样比较方便,但同时也在一定程度上存在安全隐患,最大的问题就是代码中用到的邮件密码/授权码是直接明文保存在【functions.php】文件中的。

这样一来,若是博客被人攻击,或时间一长,和别人分享主题文件时,没有及时修改这个文件的话,就暴露了自己的相关账号密码。因此,重新优化了这个功能,直接将这个功能集成到自己的主题中,虽然同样需要输入邮件密码,但至少这次的密码是保存在数据库中的,在安全性上又好了很多。

 

二、主题选项添加功能

打开【/inc/options/begin-options.php】文件,在适当位置添加代码

	$options[] = array(
		'name' => '使用SMTP发送邮件',
		'desc' => '启用,主机不支持mail()函数时建议启用',
		'id' => 'mail_smtp',
		'class' => 'be_ico',
		'std' => '0',
		'type' => 'checkbox'
	);

	$options[] = array(
		'name' => '',
		'desc' => '发件人名称',
		'id' => 'mail_from_name',
		'std' => '',
		'class' => 'hidden',
		'type' => 'text'
	);

	$options[] = array(
		'name' => '',
		'desc' => '用于显示在From上的邮箱账户',
		'id' => 'mail_from',
		'std' => '',
		'class' => 'hidden',
		'type' => 'text'
	);

	$options[] = array(
		'name' => '',
		'desc' => '发件人邮箱账号',
		'id' => 'mail_user_name',
		'std' => '',
		'class' => 'hidden',
		'type' => 'text'
	);

	$options[] = array(
		'name' => '',
		'desc' => '发件人邮箱密码(授权码)',
		'id' => 'mail_password',
		'std' => '',
		'class' => 'hidden',
		'type' => 'password'
	);

	$options[] = array(
		'name' => '',
		'desc' => '发件人邮箱服务器',
		'id' => 'mail_host',
		'std' => '',
		'class' => 'hidden',
		'type' => 'text'
	);

	$options[] = array(
		'name' => '',
		'desc' => '发件人邮箱端口',
		'id' => 'mail_port',
		'std' => '',
		'class' => 'hidden',
		'type' => 'text'
	);

	$options[] = array(
		'name' => '',
		'desc' => 'SMTP安全协议',
		'id' => 'smtp_asecure',
		'std' => '',
		'class' => 'hidden',
		'type' => 'text',
	);

	$options[] = array(
		'name' => '',
		'desc' => '使用SMTP服务进行用户登录认证,建议勾选',
		'id' => 'smtp_auth',
		'std' => '',
		'class' => 'hidden',
		'type' => 'checkbox',
	);

	$options[] = array(
		'id' => 'clear'
	);

添加后,就可以在对应位置看到这个功能了。

 

三、添加功能展开/闭合

打开【/inc/options/includes/themes-options.php】文件,在适当位置添加代码

	jQuery('#mail_smtp').click(function() {
		jQuery('#section-mail_from_name, #section-mail_from, #section-mail_user_name, #section-mail_password, #section-mail_host, #section-mail_port, #section-smtp_asecure, #section-smtp_auth').fadeToggle(400);
	});

	if (jQuery('#mail_smtp:checked').val() !== undefined) {
		jQuery('#section-mail_from_name, #section-mail_from, #section-mail_user_name, #section-mail_password, #section-mail_host, #section-mail_port, #section-smtp_asecure, #section-smtp_auth').show();
	}

注意:该文件中的代码通常以两段为一组,尽量不要添加到某一组的中间去。如果不清楚如何区分哪两段为一组的话,就添加到文件最后。

 

四、添加函数主体代码

打开【/inc/inc.php】文件,在适当位置添加代码

//使用SMTP发送邮件
if (zm_get_option('mail_smtp')) {
	add_action('phpmailer_init', 'mail_smtp');
	    function mail_smtp( $phpmailer ) {
	        $phpmailer->FromName = zm_get_option('mail_from_name');
		$phpmailer->From = zm_get_option('mail_from');
		$phpmailer->Username = zm_get_option('mail_user_name');
	        $phpmailer->Password = zm_get_option('mail_password');
	        $phpmailer->Host = zm_get_option('mail_host');
	        $phpmailer->Port = zm_get_option('mail_port');
		$phpmailer->SMTPSecure = zm_get_option('smtp_asecure');
	        $phpmailer->SMTPAuth = zm_get_option('smtp_auth');
	        $phpmailer->IsSMTP();
	}
}

 

五、其他说明

若文章图片、下载链接、网盘密码等信息出错,请留言反馈,博主将第一时间更新!如果喜欢,请打赏支持本站,谢谢大家!
isdola

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar Action 3

      这个很有用呀;博客越来越漂亮,功能也越来越丰富了,厉害!