功能:python 接收邮件获取邮件内容并标记邮件已读后,触发jenkins构建。

下面代码通过接收邮件标题123456 ,触发url调用jenkins 。 也可以获取邮件内容。

代码并且不完善还需要改进,暂时够用。

说明:脚本添加到crontab 分钟执行,也可以写一个死循环实时获取。

环境:python2.7     centos7

触发jenkins地址:

http://10.2.7.157:8080/job/test/build?token=123456

环境可能需要用到的:

yum -y install epel-release

yum -y install python-pip

yum install qt4 qt4-devel qt4-x11his

yum install python-devel.x86_64

yum install cmake

yum install gcc-c++

pip install IMAPClient

pip install imapclient

pip install -U protobuf

############################### 以下是代码 ##############################

#-*- encoding: utf-8 -*-

#-*- encoding: gbk -*-

import urllib

import urllib2

#import urllib.request=>import urllib

import ssl

import getpass, email, sys

from imapclient import IMAPClient

hostname = 'imap.qq.com'

c = IMAPClient(hostname, ssl= True)

c.login('email@qq.com', 'password')

######### 只读方式 打开收件箱  ##########

c.select_folder('INBOX', readonly = True)

####### 获取未读邮件  #########

result = c.search('UNSEEN')

msgdict = c.fetch(result, ['BODY.PEEK[]'] )

print(result)

############  判断是否有邮件   ###############

############## 没有邮件 退出程序  ##############

if len(result):

print("true")

else:

print("fffff")

exit()

print("exit")

for message_id, message in msgdict.items():

e = email.message_from_string(message['BODY[]'])

subject = e['SUBJECT']

mail_from = e['From']

maintype = e.get_content_maintype()

for part in e.get_payload():

if part.get_content_maintype() == 'text':

mail_content = part.get_payload(decode=True).strip()

print(subject)

##print(mail_content)

####c.search()

#############标记已读 ############

set_r=result

set_flage=c.set_flags(set_r,b'\\seen')

print(set_flage)

############## 触发Jenkins  #######################

url = ("http://10.2.7.157:8080/job/test/build?token=" + subject)

print("url:" + url)

req = urllib2.Request(url)

print req

res_data = urllib2.urlopen(req)

res = res_data.read()

print res

############################### 代码结束 #####################################

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐