作为一个博客最重要的是内容,其次就是评论,当别人评论了我们的文章时,我们如何让他知道我们回复了他呢,当然是发回复邮件给他,但是现在wordpress很多都是采用SMTP的发件形式,这就导致了一个非常严重的大问题!如果一个想要攻击你的人骗你回复了他,他就可以在邮件原文中查看到你网站服务器的真实ip!不管你怎么做都会暴露。
上图我打马赛克的地方就是真实ip显示的地方,有问题就得解决他,本站亲自试验SendCloud代发邮件的功能成功解决了这个问题。
解决方法SendCloud代发
注册账号
相信会玩wordpress的一定会注册账号,这里就不多说了,传送门=>SendCloud
设置域名
发送设置=>新增发新域名
记住发信域名不要带www。
配置DNS
按照它提示你的,把发信的dns设置好。
注意类型全是TXT,主机记录不能填错!
如果你想用sendcloud来收邮件可以配置收信。
获取api_user和api_key
发送设置=>API_USER(在左边的导航栏里)=>创建API_USER
创建好之后一定要妥善保管好,要是忘记了就得重置了。
发信模版
发送相关=>邮件模板=>创建模板
将以下代码粘贴以源码模式保存。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<style type="text/css">blockquote{ width: 94%; color: #8b8b8b; margin: 0 auto; padding: 10px; clear: both; border: 1px solid #ebebeb; } </style> <table cellpadding="0" cellspacing="0" style="font-family: 微软雅黑,verdana, arial; margin: 0 auto; width: 100%;"> <tbody> <tr> <td style="background: #08c; color: #fff; font-family: 微软雅黑,verdana, arial; font-size:15px;line-height: 35px;"><strong> 您在%blogname%的留言有了新的回复:</strong></td> </tr> <tr> <td style="border: solid 1px #ccc; font-size: 13px; line-height: 180%; padding: 20px;"><span style="color: rgb(186, 76, 50); font-family:微软雅黑, verdana, arial; line-height: 23.3999996185303px;">%comment_author1%</span>, 您好! <p>您曾在<span style="color:#ba4c32;">《%conent_title%》</span>的留言:</p> <blockquote> <p>%comment_content1%</p> </blockquote> <p><span style="color:#ba4c32;">%comment_author2%</span> 给你的回复:</p> <blockquote> <p>%comment_content2%</p> </blockquote> <p style="padding: 5px;">您可以点此 <a href="%comment_link%">查看完整回复內容</a></p> <p style="padding: 5px;">欢迎您再度光临 <a href="%home_url%" target="_blank" title="%description%">%blogname%</a>!</p> </td> </tr> <tr> <td style="color: rgb(255, 255, 255); font-size: 12px; line-height: 21.6000003814697px; padding: 10px; background: rgb(51, 51, 51);">请注意:此邮件由 <a href="%home_url%" target="_blank" title="%description%">%blogname%</a> 自动发送,请勿直接回复。<br />如果此邮件不是您请求的,请忽略并删除!</td> </tr> </tbody> </table> <p><a href="%%user_defined_unsubscribe_link%%" style="background: #1ABC9C;border:1px solid #13A386;padding:8px 20px;color: #fff;text-decoration:none;border-radius:4px">不想再收到此类邮件</a></p> |
调用名称填写blog。
WordPress代码
将以下代码粘贴到wordpress的functions.php中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
/** ** WordPress集成Sendloud邮件代发函数 ** 原创地址:https://zhang.ge/5045.html ** Ps:转载不保留出处 and 篡改版权的都木有小JJ。 **/ function SendCloud_mail($from,$fromname,$to,$subject,$message,$template) { $api_user = "这里填写sendcloud的app_user"; //注意保留英文双引号! $api_key = "这里填写Sendloud的api_key"; $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_URL, 'http://sendcloud.sohu.com/webapi/mail.send_template.json'); $substitution_vars = json_encode(array('to' => array($to),'sub' => $message)); $data = array( 'api_user' => $api_user, 'api_key' => $api_key, 'from' => $from, 'fromname' => $fromname, 'template_invoke_name'=> $template, 'subject' => $subject, 'substitution_vars'=> $substitution_vars ); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $result = curl_exec($ch); if($result === false) { echo curl_error($ch); } curl_close($ch); return $result; } //下面是修改版的WordPress发邮件代码(支持嵌套评论邮件) //适用于Sendloud,你们看张戈多厚道,任何时候都保留出处,不像某些小人! /* 邮件通知 by Qiqiboy */ function comment_SendCloudMail_notify($comment_id) { $comment = get_comment($comment_id);//根据id获取这条评论相关数据 $comment_approved=$comment->comment_approved; if ($comment_approved != 1) { return; } $content=$comment->comment_content; //对评论内容进行匹配 $match_count=preg_match_all('/<a href="#comment-([0-9]+)?" rel="nofollow">/si',$content,$matchs); if($match_count>0){ //如果匹配到了 foreach($matchs[1] as $parent_id){//对每个子匹配都进行邮件发送操作 SimPaled_send_email($parent_id,$comment); } } elseif ($comment->comment_parent!='0'){//以防万一,有人故意删了@回复,还可以通过查找父级评论id来确定邮件发送对象 $parent_id=$comment->comment_parent; SimPaled_send_email($parent_id,$comment); } else return; } add_action('comment_post', 'comment_SendCloudMail_notify'); function SimPaled_send_email($parent_id,$comment){//发送邮件的函数 by Qiqiboy.com $admin_email = get_bloginfo ('admin_email');//管理员邮箱 $parent_comment=get_comment($parent_id);//获取被回复人(或叫父级评论)相关信息 $author_email=$comment->comment_author_email;//评论人邮箱 $to = trim($parent_comment->comment_author_email);//被回复人邮箱 $spam_confirmed = $comment->comment_approved; if ($spam_confirmed != 'spam' && $to != $admin_email && $to != $author_email) { $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); // e-mail 發出點, no-reply 可改為可用的 e-mail. $subject = '您在 [' . get_option("blogname") . '] 的留言有了新的回复!'; $fromname = get_option('blogname'); $message = array( "%conent_title%"=>array(get_the_title($comment->comment_post_ID)), "%comment_content1%"=>array(trim(get_comment($parent_id)->comment_content)), "%comment_content2%"=>array(trim($comment->comment_content)), "%comment_author1%"=>array(trim(get_comment($parent_id)->comment_author)), "%comment_author2%"=>array(trim($comment->comment_author)), "%comment_link%"=>array(htmlspecialchars(get_comment_link($parent_id,array("type" => "all")))), "%blogname%"=>array(get_option('blogname')), "%description%"=>array(get_bloginfo('description')), "%home_url%"=>array(get_option('home')) ); if( $to != '' && is_email($to)){ SendCloud_mail( $wp_email, $fromname, $to, $subject, $message, '此处请修改为模板调用名称'); } } } |
$admin_email = get_bloginfo ('admin_email');这里把admin_email修改成你的wordpress的邮箱,一定要相同!
$wp_email = 'no-reply@' . preg_replace('#^www.#', '', strtolower($_SERVER['SERVER_NAME'])); no-reply@是自定义邮件地址,只可以修改@前面的,@后面不要写任何东西。其他的看代码注释。
测试发送
发送相关=>测试发送(左边导航栏)
当你一切都配置好之后可以在这里测试一下发送,如果发送成功证明你的sendcloud设置没有问题,然后你自己模拟博客评论,你再去回复,去sendcloud的数据中心看看有没有发送成功,如果成功则证明全部ok!
再次去邮件原文查看会发现已经隐藏了真实ip
2019年7月20日 下午4:57 板凳
这不是张戈的么,嘿嘿
2019年7月22日 上午11:48 1层
@小石 嗯嗯,就是张戈大佬的,我用我自己的顺序写一篇,后面忘记了自己来看也好再次记住。
2019年7月12日 下午10:31 沙发
可惜免费用户量有点少
2019年7月15日 下午5:31 1层
@心灵博客 还好吧,现在我的50每天,一般的个人博客应该够用了。