定时发送个性化邮件开发教程 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeanCloud
V2EX    推广

定时发送个性化邮件开发教程

  •  
  •   LeanCloud 2020-02-27 15:30:20 +08:00 2318 次点击
    这是一个创建于 2062 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我们生活中接触到的很多互联网服务都有定时发送个性化邮件提醒的功能,比如信用卡公司会在客户每个月的账单日发出还款提醒,还有项目管理类应用会定期给用户发送即将到期的待办事项的汇总。作为应用开发者,我们该如何去实现这类功能呢?

    很多邮件群发服务商允许你设定时间间隔来自动向用户发送邮件,不过这类服务的缺点是内容无法做到高度定制化。通常你可以在邮件模版中插入能够在用户列表里找到的姓名、称谓等资料,但这些资料都是静态的。如果我们希望邮件内容可以基于用户的实际使用数据来动态生成(比如在还款提醒里面插入还款金额),那么这其中一定需要某种机制从应用的数据库中拉取与用户相关的数据(通常还需进行一定的计算),这是基于模版的群发服务做不到的。另外如果需要在不同时间向不同用户发送提醒(比如不同的信用卡客户有不同的账单日,或者应用允许用户自定义接收提醒的时间和频率),那么如何管理发送时间也成了难题。

    所以如果想要给用户个性化的提醒,就需要独立于邮件群发服务商之外维护一个定时器,这个定时器应该能够主动访问应用数据库并基于获取到的数据执行特定的代码;与此同时,选用一个支持通过 API 调用来传入邮件内容和收件人的邮件服务商,让前面的定时器在需要发送邮件时将相关数据传入 API。

    代码从数据库获取数据,然后基于这些数据编写邮件

    我们制作了一个展示如何实现这些功能的 Demo。这个 Demo 包含了一个最基本的 Todo 应用,用户可以创建 Todo 项目并为每个项目设置一个截止时间,Todo 会被保存在 LeanCloud 的数据存储服务中。这个 Demo 还包含一个云函数(可以在云端执行的代码),用于查询是否有在接下来一定时间内到期但尚未完成的项目,如果有的话就会调用 SendGrid 的 API 给一个固定地址发送一封包含这些项目的邮件。这个云函数会被托管在 LeanCloud 云引擎上面,每隔一段时间执行一次。

    如果大家感兴趣请 点击这里查看具体教程 >>>

    2 条回复    2020-02-27 23:44:52 +08:00
    dingdangnao
        1
    dingdangnao  
       2020-02-27 15:43:49 +08:00
    邮件还是算了吧自己写的 telegram 小机器人 也很好用啊
    CEBBCAT
        2
    CEBBCAT  
       2020-02-27 23:44:52 +08:00
    (一篇真正的好文,应该让一个乏困的旅人也能明白你是谁,你要说什么)

    楼主下次可以尝试用总分总来写软文
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5725 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 08:25 PVG 16:25 LAX 01:25 JFK 04:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86