载行

A Student

VPS邮件通知设定:通过python 以OAuth,SMTP 登录Gmail发邮件的办法 (linux)

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的定时任务等等。

Next Post

Previous Post

Leave a Reply

© 2024 载行

Theme by Anders Norén