0x00 背景
每天需要對confluence相應內容人工發送郵件處理, 本文記述一種 Python 代碼實現方式
0x01 代碼
import requests
import json
import smtplib
import time
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr
from email.utils import formataddr
mail_host = 'smtp.mydomain.com'
mail_user = 'xxx'
mail_pass = 'xxx'
sender = '郵件服務<[email protected]>'
receivers = [
'"小 王" <[email protected]>',
'"小 炸" <[email protected]>'
]
today = time.strftime("%Y-%m-%d")
def format_address(address):
# 解析郵件地址,以保證郵有別名可以顯示
name, mail = parseaddr(address)
# 防止中文問題,進行轉碼處理,並格式化爲str返回
return formataddr((Header(name, charset="utf-8").encode(), mail))
def send_mail(body):
str_to = list()
for a in receivers:
str_to.append(format_address(a))
message = MIMEText(body, 'html', 'utf-8')
message['From'] = format_address(sender)
message['To'] = ','.join(str_to)
message['Subject'] = Header('每日推送[ ' + today + ' ]', 'utf-8')
try:
mail = smtplib.SMTP_SSL(host= mail_host)
mail.connect(mail_host, 465)
mail.login(mail_user, mail_pass)
mail.sendmail(sender, receivers, message.as_string())
print("Done")
except smtplib.SMTPException as e:
print("Error : failed" + e)
if __name__ == '__main__':
try:
conf_domain = 'conf.domain.com'
url = 'https://%s:%s@%s/rest/api/content?spaceKey=NEWS&title=%s&expand=body.view' % (mail_user, mail_pass, conf_domain, today)
data = requests.get(url).text
j = json.loads(data)
viewContent = j['results'][0]['body']['view']['value']
html = head + viewContent + tail
send_mail(html)
except Exception as e:
print("Something Error:" + e)