WordPress修改新用户注册邮件内容

有些开放用户注册功能的WordPress站点,可能有这么一项需求,就是用户注册成功后,系统会分别给网站管理员和新用户发送一封通知邮件,给管理员发送的是新用户的用户名和Email,给刚刚注册的新用户发送的是他的用户名和密码。系统发送的邮件是纯文本类型的,页面不太美观,有没有办法发送自定义的HTML格式的邮件呢?答案是可以的。

WordPress给我们提供了一个可供插件重新定义的新用户邮件通知函数 wp_new_user_notification(),如果你不喜欢这个函数发送的邮件,我们可以重新定义这个函数的内容,以达到我们自定义的需求。

原函数

WordPress定义的这个函数内容是这样子的:

if ( !function_exists('wp_new_user_notification') ) :
/**
 * Notify the blog admin of a new user, normally via email.
 *
 * @since 2.0
 *
 * @param int $user_id User ID
 * @param string $plaintext_pass Optional. The user's plaintext password
 */
function wp_new_user_notification($user_id, $plaintext_pass = '') {
    $user = get_userdata( $user_id );

    $user_login = stripslashes($user->user_login);
    $user_email = stripslashes($user->user_email);

    // The blogname option is escaped with esc_html on the way into the database in sanitize_option
    // we want to reverse this for the plain text arena of emails.
    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

    $message  = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n";
    $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
    $message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";

    @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message);

    if ( empty($plaintext_pass) )
        return;

    $message  = sprintf(__('Username: %s'), $user_login) . "\r\n";
    $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";
    $message .= wp_login_url() . "\r\n";

    wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $message);

}
endif;

自定义邮件内容和格式

我们可以新建一个"插件",重新定义的wp_new_user_notification函数定义的邮件内容即可。我们在wp-content/plugins/目录下,新建一个文本文件命名为new-user-notification.php,插入以下代码,保存,然后在后台启动插件new-user-notification即可:

<?php
/*
  Plugin Name: new-user-notification
  Description:重新定义发送邮件的内容和格式
  Version: 1.0
 */

if ( !function_exists('wp_new_user_notification') ) :
/**
 * Notify the blog admin of a new user, normally via email.
 *
 * @since 2.0
 *
 * @param int $user_id User ID
 * @param string $plaintext_pass Optional. The user's plaintext password
 */
function wp_new_user_notification($user_id, $plaintext_pass = '') {
    $user = get_userdata( $user_id );

    $user_login = stripslashes($user->user_login);
    $user_email = stripslashes($user->user_email);

    // 获取博客名称
    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

    // 给管理员发送的邮件内容,这里是HTML格式
    $message = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>新用户注册</title></head><body><div align="center"><table cellpadding="0" cellspacing="1" style="border:3px solid #d9e9f1;background:#7fbddd; text-align:left;"><tr><td style="padding:0;"><table cellpadding="30" cellspacing="0" style="border:1px solid #ffffff;background:#f7f7f7;width:500px;"><tr><td style="line-height:2;font-size:12px;">您的网站 <strong>' . $blogname . '</strong> 有新用户注册。<br />用户名:' . $user_login . '<br />Email:' . $user_email . '<br /><br />如果您不是  <strong>' . $blogname . '</strong> 的管理员,请直接忽略本邮件!</div></td></tr></table></td></tr></table></div></body></html>';

    // 给网站管理员发送邮件
    $message_headers = "Content-Type: text/html; charset=\"utf-8\"\n";
    @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message, $message_headers);

    if ( empty($plaintext_pass) )
        return;

    // 你可以在此修改发送给新用户的通知Email,这里是HTML格式
    $message = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>新用户注册</title></head><body><div align="center"><table cellpadding="0" cellspacing="1" style="border:3px solid #d9e9f1;background:#7fbddd; text-align:left;"><tr><td style="padding:0;"><table cellpadding="30" cellspacing="0" style="border:1px solid #ffffff;background:#f7f7f7;width:500px;"><tr><td style="line-height:2;font-size:12px;">您刚刚在网站 <strong>' . $blogname . '</strong> 注册一个帐号。<br />用户名:' . $user_login . '<br />登录密码:' . $plaintext_pass . '<br />登录网址:<a href="' . wp_login_url() . '">' . wp_login_url() . '</a><br /><br />如果您没有在 <strong>'. $blogname . '</strong> 注册过任何信息,请直接忽略本邮件!</div></td></tr></table></td></tr></table></div></body></html>';

    // sprintf(__('[%s] Your username and password'), $blogname) 为邮件标题
    wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $message, $message_headers);
}
endif;

?>

以上代码只是一个示例,可以根据自己的需求进行修改。至于HTML邮件该怎么写,什么样的邮件格式漂亮,这些就自己琢磨吧。

时间: 2024-08-06 19:40:03

WordPress修改新用户注册邮件内容的相关文章

WordPress新用户注册时提示“您的密码重设链接无效”

在使用Wordpress密码找回功能及新用户注册邮件中的重置密码链接时,Wordpress提示“您的密码重设链接无效,请在下方请求新链接.”.“该key似乎无效”.“invalid key”. 这个其实不是wordpress的问题,邮箱收到邮件后,会将密码重置链接地址及其前后的“<>”一起当成链接地址生成超链接,点击此超链接后,由于传给wordpress的参数不对(多了个>),例如把鼠标移到下图的红色框的连接上,并看到浏览器左下角的URL提示连接,会发现多了一个“>”,所以word

邮箱认证新用户注册,并用验证回传参数完成用户的注册

邮箱认证新用户注册,也可用于重置密码 第一部分:发送邮箱 1.当用户注册完的时候,提示用户打开邮箱验证 2.当用户填写信息后,用户信息插入数据库(ischeck设置为0 未验证),并发送邮件(内容用微信的方式进行拼接和回调参数) public static void SendMail(string smtpserver/*SMTP服务器smtp.qq.com*/, int enablessl/*是否启用SSL加密*/, string userName/*登录帐号*/, string pwd/*登

python 修改文件中的内容

在python的文件操作中,是没有办法对文件中具体某行或者某个位置的内容进行局部的修改的,如果需要对文件的某一行内容进行修改,可以先将文件中的所有的内容全部读取出来,再进行内容判断,是否是需要修改的内容,如果是就替换内容,并且将修改替换过的内容和没有修改的内容全部写入到新的文件中. # 打开旧文件 f = open('file_text.txt','r',encoding='utf-8') # 打开新文件 f_new = open('file_text_bak.txt','w',encoding

将Word文档发给别人时如何限制别人只能修改文档部分内容

将Word文档发给别人时如何限制别人只能修改文档部分内容 转自:互联网.时间:2014-04-16   作者:snow   来源:互联网 在很多情况下我们都不希望别人修改我们的文档内容,特别实在将Word文档发给别人时,我们只希望别人能够在word文档中填写该填的地方,不该填写的地方只能看,不能修改.整个文档完成后就向填空题一样,只能在里面填入相关的内容,不能更改和编辑其他部分.想实现这样的功能并非难事,只需对文档中的部分内容设置保护即可,同样如果内容不需要保护,只需解除即可.  一.设置保护的

estore商城案例(一)------用户注册&amp;邮件激活(下)

先补上昨天注册页面的验证码代码: 1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 BufferedImage bf=new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); 4 Graphics2D graphice=(Graphics2D

小内容将成新主流,内容产业巨变再起?

前不久逻辑思维与papi酱分道扬镳,让很多人对自媒体内容创业开始产生了怀疑.不过papi酱给瑞士顶级奢侈品手表积家代言又重新点燃了大家对自媒体第二春到来的希望之火. 而就在前几日,在内容产业有个新词语--"小内容"却开始流行了起来.阿里巴巴文化娱乐集团 移动事业群总裁何小鹏在钛媒体2016T-ADGE年度盛典上提出"小内容"的说法,并由此引发了业内外人士对于小内容时代的高度关注.Papi酱与积家的深度合作,恰恰从侧面应证了小内容时代的价值. 在何小鹏看来:小内容正在

node.js实现收取邮件,以及对特定邮件内容的自动回复,邮件正文保存的功能

废话不多说,直接上代码... var Imap = require('imap');var inspect = require('util').inspect;var MailParser = require("mailparser").MailParser;var nodemailer = require('nodemailer'); var fs = require('fs');var http = require('http'); var imap = new Imap({ us

使用Razor视图引擎来生成邮件内容

邮件的内容其实是就HTML,传统的做法都是通过在程序中拼接字符串来生成邮件的内容,生成困难,维护也困难.Razor是MVC里面使用的视图引擎,用来生成HTML非常方便,ZKEACMS中就是使用了Razor视图引擎,用cshtml作为邮件模板来生成邮件内容.这样很方便维护和修改. 定义接口 IViewRenderService 接口中定义了两个方法,第一个是视图中没有使用ViewModel,直接传入视图路径就可以了.第二个是视图中有作用ViewModel,传入视图路径和ViewModel对象就可以

HTML规范 - 邮件内容

网址 : http://nec.netease.com/standard/html-email.html (摘抄自) 环境:可能是个iframe,你的内容是被放在body里面的:可能只是个div,你的内容就被放在这个div里面.可能邮箱自身设置了些css,他可能对你产生未知的影响.可能根本没有申明doctype,即使申明了,也不是你想要的doctype. 注意: 01-因为容器可能是body或div,所以,我们邮件内容不应该是一个完整的html.所以邮件内容应该是以div为根节点的html片段