VPS准备添加一个发件功能。把一些定期运行的程序结果发给自己。 最基础的就是如何发信了。反复挑选之后,我选择以SMTP登录自己的谷歌邮箱,再给自己发邮件(可以是本地址)。 语言是python,(这次借用了为python3编写的代码,所以需要以下都是3的)环境是- ubuntu-13.10-x86_64 “用户名+密码”的登录,是需要调低谷歌账户安全等级的,否则会被直接拒绝,而OAuth登录Gmail的资料不多。尤其中文资料。昨天终于成功了. 以下是记录也是经验分享 *注意2和3例里print 略有差异。以下实例中有部分混用
1.准备
首先你需要
安装好的python3,安装好需要的库
一个谷歌账户
2.谷歌API的设置
申请谷歌API,创建正确类别的应用,得到一个client ID,client key;然后用自己的账户授权给它,得到refresh token;
这里谷歌采取的并不是customer ID+customer key,只有一个有效期1小时的Access Token 以及可得新Access Token 的Refresh Token,
所以我们记录下refresh token,配合邮箱地址,就可以写出长期有效的程序了
编写程序登录,发送。
参见:http://blog.macuyiko.com/post/2016/how-to-send-html-mails-with-oauth2-and-gmail-in-python.html
文中脚本(下称 macuyiko.py )测试发件内容非常简单,但是框架都有。包括MIMEText
我们需要更改的是开头2个,也就是自己的Client ID和 Client Key;以及最后的发、收件人地址(send_mail后的第1、2个’——–@gmail.com’)
按文章提示得到refresh token后,把开头的none改掉。
之后每次 python macuyiko.py,都可以发件成功了。没有的话检查垃圾邮件。
3.改动邮件内容
3.1.在邮件通知不多的情况下,可以为每一个相同内容、收件人的发邮件写一个独立的程序。之后配合定时功能,指定时间运行该程序即可
一条简单的发送日期程序作为示范
import macuyiko from datetime import datetime today=datetime.now() Toaddr='[email protected]' Subject='[Harriet]A mail to tell you date' Message=today.day macuyiko.send_mail('[email protected]', Toaddr, Subject, str(Message)) |
3.2每次手动从命令行读取参数,并且添加入内容
个人倾向于raw_input。这里是getopts的练习
(关于getopts模块的资料不多,但是它本身也非常简单。我有一个结合datetime的小例子)
import macuyiko from datetime import datetime import getopt, sys today=datetime.now() #以下三行设定默认的收件人、主题、正文 Toaddr='[email protected]' Subject='[Harriet]A mail from your VPS' Message=today.day try: opts, args = getopt.getopt(sys.argv[1:],"ho:v" , [ "Toaddr=",'Message=','Subject=']) except getopt.GetoptError: print ('Error') for opt,val in opts: # print opts,val if opt == '--Toaddr': Toaddr=str(val) elif opt=='--Message':Message=str(val) elif opt=='--Subject':Subject=str(val) macuyiko.send_mail('[email protected]', Toaddr, Subject, str(Message)) |
PuTTy使用截图
成功。第一行为激活Anaconda配置的,版本的python 3.4的虚拟环境
当然往后的4、5就是linux的定时任务等等。