
自己本身常常写一些小程序,包括但不限于爬虫, QQ 机器人,邮件提醒都经常非常有用,提醒任务完成情况、 QQ 掉线提示等。但是对于分发给其他用户使用的程序,让用户配置 smtp 有技术门槛并且很麻烦,而自己配置好直接分发又有邮箱密码明文的问题。
于是有了这个想法。在服务器(远程 or 本地)上部署一个配置好的 smtp 服务器,然后使用时只需要对服务器 POST 请求,即可发送邮件,而不需要任何额外的设置与配置。
(然而写完之后才发现想法和 mailgun 撞车了)
所以知道 mailgun 的各位,可以简单的认为这是个简易版的 mailgun 轮子。
sudo pip install Flask DEFAULT_RECEIVER = "" # 缺省的邮件接收邮箱 DEFAULT_SENDER_NAME = "" # 缺省的发送者姓名 MAIL_HOST = "" # SMTP 服务器地址, 如 smtp.126.com MAIL_ADDRESS = "" # 服务器登录的邮箱地址 PASSWORD = "" # 服务器登录的邮箱密码 python run.py import requests respOnse= requests.post('http://www.yourserver.com/mail', data={ 'subject': "PostMail!", 'content': "This mail is sent by PostMail!" }) 修改postmail.py文件开头的秘钥选项
SECRET_KEY = "your_key" # 用于验证身份的 key, 留空表示不启用 key 验证机制 然后你的所有请求都必须包含正确的key才会被执行发送
import requests respOnse= requests.post('http://www.yourserver.com/mail', data={ 'key': "your_key", 'subject': "PostMail!", 'content': "This mail is sent by PostMail!" }) 补充:本项目适合个人使用的邮件发送服务,暂时还没有测试过比较大规模的发送,而且程序本身趋向简洁,没有使用多线程和任务队列来进行发送,所以效率可能不高。当然,在 Flask server 中稍微修改一下就可以实现多线程处理了,只是邮件发送结果的反馈有点难办 XD
如果你担心接口被滥用,这里还提供了一个『自动抄送』的选项,你可以开启这一选项,之后邮件的请求如果没有包含你的默认接收邮箱,会自动抄送给你的默认接收邮箱,这样至少可以尽快的察觉到这一问题然后修改秘钥 XD
项目地址 https://github.com/Yinzo/PostMail
如果你觉得这个项目很棒,欢迎给我点个 Star ;D
1 lemonda 2016 年 7 月 12 日 很有用,不少主机上封了 smtp ,只能通过 API 发信 |
3 lhbc 2016 年 7 月 12 日 via Android 能发 HTML 邮件吗? |
4 Yinz OP @lhbc 帮你加上了;D 刚刚 push 上去,请求里面带一个 subtype 就好了,就像这样, 默认 subtype 是'plain' ``` respOnse= requests.post('http://www.yourserver.com/mail', data={ 'subtype: "html", 'subject': "PostMail!", 'content': "This mail is sent by PostMail!" }) ``` |
5 zhchbin 2016 年 7 月 12 日 |