自己本身常常写一些小程序,包括但不限于爬虫, 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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.