登錄
手機訪問
街坊 · 留言 關於我 小遊戲 FlagList
为了更好的体验请切换为竖屏
回到顶部
分享页面
生成海报
邮箱订阅
今日访问
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
正在创建海报

博客功能:博友@ | 大召唤术

2020-04-25
伍子蛇 发布在 雜文
2584
7min
431 °C
下一篇: 已是最新文章

前几天空闲,觉得独立博客除了友链,有些朋友来访之外,其实都是孤岛。这也很像所谓的深网(Deep Web),各种搜索引擎的权重都不高,主要在自娱自乐。

想想写了一个功能,叫做博友大召唤术——可以在任意有留言功能的地方@博友,可以很便捷一键@友链中的朋友。

伍子蛇 say:

提醒他们:快点来看,劳资更新了!

先感受一下例子吧,滑到这篇文章的末尾,点击评论框处的@按钮。

手机上隐藏了这个功能

不知道试用了之后博友们有没有什么想法,可以聊聊。

授人以鱼不如授人以渔,肯定会有博友让我发个源文件来感受一下,不是我不愿意,然而这不是通用的,首先你的友链要存数据库,可以猜想很多博友的友链都是写死的。其次我没有写成插件,这想必友情链接的功能也要写上去,就只写了个可以自己用的。

首先要有数据

很久以前我写过一个自用的系统,为了避免重复造轮子,写了一个收集信息的系统,可以创建表单,然后做管理和统计,也做了各种数据调用接口。可以理解为类似「问卷星」,但是不同的是我可以调用数据,你用问卷星不行。

登录界面
在表单中创建推广者
创建表单
手持端的效果

其实说起来很简单,只要了解过类似模式就应该一眼能看懂。我博客中的友情链接、读书记录就是用的这个,就免得重复写这些接口了。

要实现不手动输入来@博友,那必须要有数据,无论是不是有一个类似我这样的系统都无所谓,只要存数据库了。当然写一个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文档也很清晰,大家可以去试一试。

综上,就可以实现@了别人,在提交留言的时候发送邮件通知@的人的功能了,嘿嘿。

送TA咖啡
- 请作者喝一杯咖啡吧!速溶的也可以 -
点点广告也是支持作者哦
討論區
  1. 森木志 says:

    评论@插件 – AT 0.1.1 FOR TYPECHO 0.9
    这里好像有一个项目跟你这个好像(σ゚∀゚)σ⁶⁶⁶⁶⁶⁶⁶⁶⁶⁶

    1. 伍子蛇 says:

      是有些许类似哦~
      但这个功能最主要的问题就是只能@预设好的人,没有一个所有博友的数据库支持,不太友好

  2. Andalue says:

    挺好挺好,就是右键禁用想开新标签页很不方便。。

    1. 伍子蛇 says:

      按住ctrl键再点标签就是新窗口,嘿嘿。
      确实是,很多人都觉得不方便,我隔天还是把右键限制取消了

  3. 菜鸟之志 says:

    我试试这个@功能,但是我看了你的几个友链,我都不认识,总不能@他们吧。

    1. 伍子蛇 says:

      是比较局限,要@我这里没有的博友只能自己输入名字和email了。
      要是有一个站点收录站,就可以做一个@所有博友的插件了

      1. 菜鸟之志 says:

        是的,这些都需要一个标准化,但是这个功能确实好!

      2. xoyo says:

        那还说什么,整个收录站。

        1. 伍子蛇 says:

          哈哈,我也想过,等有空的时候想想~

  4. 匿名 says:

    花里胡哨的。—— @「伍子🐍」

    1. 伍子蛇 says:

      哈哈,爱你我的涛~

  5. 随望淡思 says:

    手机端浏览器上边也能实现就完美了

    1. 伍子蛇 says:

      可以实现的,只是样式我没想好,想想就隐藏了不写了😂

  6. 伍子蛇 says:

    哈哈,我又优化了一下,再召唤一次你~

    —— @「xoyo」

  7. 伍子蛇 says:

    哈哈,来召唤一下我这位朋友,感受一波新功能。

    —— @「安忆」

    1. 安忆 says:

      还行,就是发件地址是 QQ 号,正文也是纯文本,感觉有点儿不显眼(没有特征)。

      1. 伍子蛇 says:

        嗯,确实,空闲我再来完善下

Leave a Reply

Your email address will not be published.

@
+
=
取消
發送
最新文章
Latest articles
构建梦境的库,GoodNight.js
2020-06-06 26 °C
回顾一下刚认识叉叉的时候
2020-05-31 101 °C
一念为佛一念为魔
2020-05-30 169 °C
瓦坎呐假沙滩森林
2020-05-14 388 °C
最新活动
Latest events
随机推送 / Random push
434 °C
前天买的体彩超级大乐透,中了一等奖?! 丨 信天翁
198 °C
送液的大爷 丨 陳老茂
582 °C
一个非常奇怪的梦 丨 夢境
197 °C
晨殇 丨 陳老茂
×
当前选择的是支付宝