zoukankan      html  css  js  c++  java
  • Debug很重要

    之前做一个小功能,就是用php发送邮件,项目中已经使用了wordpress的wp_mail,所以同事建议我继续用wp_mail函数。

    然而遇到了一个奇怪的情况,邮件没有发出去,也没有任何报错日志。

    照理说,这是一个非常成熟的内置函数了,只要是在管理后台设置好了相关邮件配置,那么就一定可以顺利发送邮件。
    我首先尝试了一下php最原生的mail函数,是可以顺利发送出去的。

    这个时候我陷入了僵局,我甚至在想是否是什么更深处的服务设置出了问题,虽然mail函数可以发送,其实应该已经能说明邮件服务没有问题了。

    这个时候就显示出Google技巧了,如果一直输入wp_mail not working 之类的,永远都是在说要检查wordpress网站的后台相关配置什么的,这酒陷入了死循环了。

    于是我换了一个思路,是否能想办法debug出更多细节,于是我Google了如下内容:

    wp_mail failed debug

    然后我发现了这个链接:
    https://www.codeforest.net/debugging-wp-mail-like-a-boss-debugger
    其中有关于设置debug的action

    // define the wp_mail_failed callback 
    function action_wp_mail_failed($wp_error) 
    {
        return error_log(print_r($wp_error, true));
    }
              
    // add the action 
    add_action('wp_mail_failed', 'action_wp_mail_failed', 10, 1);
    

    当然这个是个人开发者的技术博客,还是要看看官方是怎么用这个wp_mail_failed hook的,通过搜索关键词:wp_mail_failed,找到官方的文档如下:

    https://developer.wordpress.org/reference/hooks/wp_mail_failed/

    其中用户给出的一个用例非常合适,具体代码如下:

    // show wp_mail() errors
    add_action( 'wp_mail_failed', 'onMailError', 10, 1 );
    function onMailError( $wp_error ) {
        echo "<pre>";
        print_r($wp_error);
        echo "</pre>";
    }       
    

    再次执行脚本,终于有了错误日志,输出结果如下:

    [errors] => Array
            (
                [wp_mail_failed] => Array
                    (
                        [0] => Invalid address:  (setFrom) <server name here>
                    )
    
            )
    

    所以是设置了一个无效的地址,也就是发送方的设置,如果是增加相关设置即可,代码如下:

    add_filter( 'wp_mail_from', function() { return "noreply@gmail.com" ; });
        add_filter( 'wp_mail_from_name',  function() { return "noreply" ; } );
        
    

    这次debug很有意思,让我想起了多年前那次在人社局里那次关于mongoDB无响应的问题。突然觉得岁月无限好,没有bug解决不了。

  • 相关阅读:
    《C++ 并发编程》- 第1章 你好,C++的并发世界
    30分钟,让你成为一个更好的程序员
    程序员技术练级攻略
    谈新技术学习方法-如何学习一门新技术新编程语言
    计算机科学中最重要的32个算法
    程序员学习能力提升三要素
    一位在MIT教数学的老师总结了十条经验
    学习算法之路
    十个顶级的C语言资源助你成为优秀的程序员
    Linux中LoadAverage分析
  • 原文地址:https://www.cnblogs.com/freephp/p/13514129.html
Copyright © 2011-2022 走看看