大家好,
我正在一个实时站点上尝试我的新用户注册表单插件,但电子邮件没有发送。
我使用以下方法保存新用户:
if (empty($errors)) {
$myplugin_newuser = wp_insert_user(array(
\'user_login\' => $user_login,
\'user_email\' => $user_email,
\'nickname\' => $user_nickname,
\'user_pass\' => $user_pass,
\'first_name\' => $user_firstname,
\'last_name\' => $user_lastname,
\'description\' => $user_bio,
\'user_url\' => $user_url,
\'user_registered\' => date(\'Y-m-d H:i:s\'),
\'role\' => \'subscriber\'
));
之后,我按照WordPress的官方方式更改此处的新用户通知:
// Redefine user notification function
if ( !function_exists(\'wp_new_user_notification\') ) {
function wp_new_user_notification( $user_id, $plaintext_pass = \'\' ) {
$user = new WP_User( $user_id );
$user_login = stripslashes( $user->user_login );
$user_email = stripslashes( $user->user_email );
$message = sprintf( __(\'New user registration on %s:\'), get_option(\'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\'), get_option(\'blogname\') ),
$message
);
if ( empty( $plaintext_pass ) )
return;
$message = __(\'Hi there,\') . "\\r\\n\\r\\n";
$message .= sprintf( __("Welcome to %s! Here\'s how to log in:"), get_option(\'blogname\')) . "\\r\\n\\r\\n";
$message .= wp_login_url() . "\\r\\n";
$message .= sprintf( __(\'Username: %s\'), $user_login ) . "\\r\\n";
$message .= sprintf( __(\'Password: %s\'), $plaintext_pass ) . "\\r\\n\\r\\n";
$message .= sprintf( __(\'If you have any problems, please contact me at %s.\'), get_option(\'admin_email\') ) . "\\r\\n\\r\\n";
$message .= __(\'Adios!\');
wp_mail(
$user_email,
sprintf( __(\'[%s] Your username and password\'), get_option(\'blogname\') ),
$message
);
}
}
我知道有人说,如果密码信息没有传递,电子邮件将不会发送给用户,但我似乎也没有收到发送给我的管理员电子邮件的电子邮件。
但根据我对代码的理解,如果给定了“”,则意味着它是空的,但信息是传递的,因此应该发送电子邮件。
我插入新用户的方式是否不正确?还是我遗漏了什么。
测试已经完成,我的WP Mail Bank插件正常发送电子邮件。
为了确保我也尝试调用函数本身,根据上面的行,我正在传递user\\u登录名和user\\u pass信息:
wp_new_user_notification( $user_login, $user_pass);
编辑现在我使用了该功能(修复了四分之一的问题),管理员收到了电子邮件,但没有用户登录名或$user\\u pass的任何详细信息(如上所述,这些都是变量),我使用WordPress发送信息来填充数据库中的信息。
--原始消息--
我在一个网站上试用了我的新注册表单插件(谢谢@PieterGoosen),但在用户点击注册后没有发送电子邮件。
问题是,是否因为我使用了不同的表单,所以没有发送电子邮件?
我在想默认的电子邮件会自动发送?
我必须在插件中设置电子邮件吗?
还是我应该指望WordPress来做?
-----
正如Pieter在评论中提到的,是的,电子邮件正在通过,因为我使用的是一个插件,默认情况下使用SMTP而不是PHP邮件程序(插件名:Wp Mail Bank)
测试是由插件进行的(以确保我的服务器上没有配置更改),我还禁用了插件,并尝试了WordPress正常注册表中的原始电子邮件,我收到了两封电子邮件,没有任何问题。