发送电子邮件后做点什么


Answers:


14

将PHPMailer类与操作回调一起使用:

我深入研究了PHPMailer该类,发现它支持自定义操作

是使用doCallback()类中的方法激活回调的方法。

在GitHub上也有一个通过回调使用此功能的PHPMailer 测试callbackAction()

我们可以使用以下方法在WordPress中进行设置:

$phpmailer->action_function = 'wpse_mail_action';

wpse_mail_action()动作回调在哪里。

这是我们如何应用此示例:

/**
 * Custom PHPMailer action callback
 */
function wpse_mail_action( $is_sent, $to, $cc, $bcc, $subject, $body, $from )
{
    do_action( 'wpse_mail_action', $is_sent, $to, $cc, $bcc, $subject, $body, $from );
    return $is_sent; // don't actually need this return!
}

/**
 * Setup a custom PHPMailer action callback
 */
add_action( 'phpmailer_init', function( $phpmailer )
{
    $phpmailer->action_function = 'wpse_mail_action';
} );

现在我们可以访问wpse_mail_action钩子了。

然后,我们可以添加自己的邮件记录器,并检查邮件是否已成功发送。

例:

这是一个(未试用的)示例,在发送“密码重置”帖子后,我们可以如何做:

/**
 * Do something after the "Password Reset" post has been successfully sent:
 */
add_action( 'wpse_mail_action', function( $is_sent, $to, $cc, $bcc, $subject, $body, $from )
{
    if( $is_sent && false !== stripos( $subject, 'Password Reset' ) )
        // do stuff

}, 10, 7 );

在这里我们可以添加一些进一步的限制,并在必要时将其包装到其他操作中,例如retrieve_password钩子。


谢谢你 我刚刚制作了插件,现在可以从wordpress插件目录访问该插件:wordpress.org/plugins/telegram-for-wp
Ameer Mousavi 2015年

1
欢迎使用新插件@AmirMousavi并恭喜您
birgire 2015年

与Contact Form 7插件存在冲突。它无法接收发送结果。它的Ajax加载器一直在旋转。即使电子邮件发送成功。
阿米尔·穆萨维

2
我用CF7测试了这种方法,它按预期工作。如果ajaxloader永远旋转,则可能表明无关的javascript / PHP / Server错误,因此wp_mail()可能永远不会在CF7中调用。请注意,在WPSE上,第3方插件不在此处。@AmirMousavi
birgire
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.