wordpress添加发送邮件功能的方法

部署网站邮件功能

安装WP Mail SMTP插件

第一次启用会有安装向导,首先选择SMTP Mailer,此处选择Sendinblue

注册Brevo(sendinblue)

点击Campaigns – Settings – Your Senders & Domains

添加域名并选择域名提供商后,会出现域名验证内容,此时需要把Brevo提供的验证信息添加至域名提供商的你的域名对应记录(我用的提供商是Namecheap)

添加好后回到Brevo点击”Authenticate this email domain”,如果上步添加正确则验证成功

然后回到WP Mail SMTP插件安装向导,填入邮件功能基本信息,API密钥点击提供的链接后在Brevo即可获取新的API密钥

至此保存后即可配置完成,可以点击WP Mail SMTP插件的邮件测速功能查看邮件是否能正常发送

关于验证邮件无法正常发送的问题

起初按照上面的步骤,邮件测试也能通过,但新用户注册时验证邮件就是发不了,从网上各种搜都没找到解决方法,最后按网站源码一步步查发现wordpress源码里根本没有用户新注册时发送邮箱验证邮件的功能,但是有发送密码重置邮件、邮箱更改邮件等功能(?把我整绷不住了)

仔细读了一下代码,新用户注册后后台会给其生成一个随机的强密码,然后就没然后了(逆天),我甚至不确定wordpress是否有邮箱验证链接对应的页面

最后的修复方案是在新用户注册后手动调用wp_mail发送内容自定义的邮件,并附上密码重置链接

如果有人出现了和我一样的问题,可以尝试以下方法:

修改user.php文件(一般位于你的wordpress安装目录/wp-includes下),在其中register_new_user()函数的末行改为以下内容:

/**
 * Fires after a new user registration has been recorded.
 *
 * @since 4.4.0
 *
 * @param int $user_id ID of the newly registered user.
 */
do_action( 'register_new_user', $user_id );

if ( empty( $user_login ) ) {
    $errors->add( 'empty_username', __( '<strong>Error:</strong> Please enter a username or email address.' ) );
} elseif ( strpos( $user_login, '@' ) ) {
    $user_data = get_user_by( 'email', $user_login );

    if ( empty( $user_data ) ) {
        $user_data = get_user_by( 'login', $user_login );
    }

    if ( empty( $user_data ) ) {
        $errors->add( 'invalid_email', __( '<strong>Error:</strong> There is no account with that username or email address.' ) );
    }
} else {
    $user_data = get_user_by( 'login', $user_login );
}

// Send password reset email to the user
$site_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
$reset_key = get_password_reset_key( $user_data );
$reset_link = network_site_url( "wp-login.php?action=rp&key=$reset_key&login=" . rawurlencode( $user_login ), 'login' );

$subject = '邮箱验证';
$message = sprintf( __('您已成功注册,<br><br>Site Name: %s'), $site_name );
$message .= sprintf( __( '<br>Username: %s' ), $user_login );
$message .= __('<br><br>请点击以下链接重置您的密码:');
$message .= '<br><br><a href="' . $reset_link . '">' . $reset_link . '</a>';
$message .= __('<br><br>若这不是您本人要求的,请忽略本邮件,一切如常。');

$headers = array('Content-Type: text/html; charset=UTF-8');

wp_mail( $user_email, $subject, $message, $headers );
return $user_id;
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇