前几天空闲,觉得独立博客除了友链,有些朋友来访之外,其实都是孤岛。这也很像所谓的深网(Deep Web),各种搜索引擎的权重都不高,主要在自娱自乐。
想想写了一个功能,叫做博友大召唤术——可以在任意有留言功能的地方@博友,可以很便捷一键@友链中的朋友。
提醒他们:快点来看,劳资更新了!
先感受一下例子吧,滑到这篇文章的末尾,点击评论框处的@按钮。
手机上隐藏了这个功能
不知道试用了之后博友们有没有什么想法,可以聊聊。
授人以鱼不如授人以渔,肯定会有博友让我发个源文件来感受一下,不是我不愿意,然而这不是通用的,首先你的友链要存数据库,可以猜想很多博友的友链都是写死的。其次我没有写成插件,这想必友情链接的功能也要写上去,就只写了个可以自己用的。
很久以前我写过一个自用的系统,为了避免重复造轮子,写了一个收集信息的系统,可以创建表单,然后做管理和统计,也做了各种数据调用接口。可以理解为类似「问卷星」,但是不同的是我可以调用数据,你用问卷星不行。
其实说起来很简单,只要了解过类似模式就应该一眼能看懂。我博客中的友情链接、读书记录就是用的这个,就免得重复写这些接口了。
要实现不手动输入来@博友,那必须要有数据,无论是不是有一个类似我这样的系统都无所谓,只要存数据库了。当然写一个Json也是可行的。就比如以下格式:
linkDate = [{
name: "孤斗",
Email: "550444405@qq.com",
Pic:"xxxxx.jpg",
url:'http://d-d.design'
},{
name: "孤斗2",
Email: "xxxx@xx.xx",
Pic:"xxxxx.jpg",
url:'http://xx.xx'
}]
要@别人,大家的博客都是独立的网站,怎么通知对方呢?没有什么东西可以推送,也不可能发短信,那只能是邮件了。
用SMTP进行邮件传输非常简单,网上也会有很多方法。这里我就直接把自己写的代码给大家。
<!-- 作者:孤斗 -->
<?php
header("Access-Control-Allow-Origin: *"); // 允许任意域名发起的跨域请求
$emailName = $_POST['emailName'];
$toEmail = $_POST['toEmail'];
$toTitle = $_POST['toTitle'];
$toWord = $_POST['toWord'];
function sendMail($to,$title,$content){
//引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告
require_once("./class.phpmailer.php");
require_once("./class.smtp.php");
$mail = new PHPMailer();//实例化PHPMailer核心类
// $mail->SMTPDebug = 1;//是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
$mail->isSMTP();//使用smtp鉴权方式发送邮件
$mail->SMTPAuth=true;//smtp需要鉴权 这个必须是true
$mail->Host = 'smtp.qq.com';//链接qq域名邮箱的服务器地址
$mail->SMTPSecure = 'ssl';//设置使用ssl加密方式登录鉴权
$mail->Port = 465;//设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587
$mail->CharSet = 'UTF-8';//设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
$mail->FromName = $emailName;//设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
$mail->Username ='xxxx@qq.com';//smtp登录的账号 这里填入字符串格式的qq号即可
$mail->Password = 'xxxx';//smtp登录的密码 使用生成的授权码(就刚才叫你保存的最新的授权码)【非常重要:在网页上登陆邮箱后在设置中去获取此授权码】
$mail->From = 'xxxx@qq.com';//设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”
$mail->isHTML(true);//邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
$mail->addAddress($to);//设置收件人邮箱地址
$mail->Subject = $title;//添加该邮件的主题
$mail->Body = $content;//添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件
//简单的判断与提示信息
if($mail->send()) {
return true;
}else{
return false;
}
}
header("Content-Type:text/html;charset=utf-8");
$flag = sendMail($toEmail,$emailName,$toWord);
if($flag){
echo "发送邮件成功!";
}else{
echo "发送邮件失败!";
}
?>
引用的两个文件
在前端如何调用就不用说了吧。
可能没有人问这个问题,但是还是说一下😂,因为孤斗这个博客我的设计中有蛮多弹框的,普通的Alert肯定是满足不了我的,自己写弹窗还要传事件还要传对象的,想想要封装个能通用的还是比较麻烦,避免造轮子,找到了SweetAlert,非常的好用。API文档也很清晰,大家可以去试一试。
综上,就可以实现@了别人,在提交留言的时候发送邮件通知@的人的功能了,嘿嘿。
我喜欢你的blog,交换下友链吧
我喜欢你的自信
很不错的东西,有空我得测试一下。
真不戳,我之前想过在文章里提到博友然后邮件通知谁在哪篇文章里提到了你但是技术浅薄啥也没整出来,没想到孤斗也写了这个@的文章,出来吧阿森!!!—— @「森木志」
你是不是闲的慌👻