自己本身常常写一些小程序,包括但不限于爬虫, 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-07-12 22:09:04 +08:00
很有用,不少主机上封了 smtp ,只能通过 API 发信
|
3
lhbc 2016-07-12 22:30:19 +08:00 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-07-12 23:07:26 +08:00
|