python 實現提取Confluence網頁內容發送郵件

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)

0x02 Done

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章