Python Email发送,通知业务完成

Email 发送

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import base64
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr

def crypt(source, key):
    from itertools import cycle
    result=''
    temp=cycle(key)
    for ch in source:
        result=result+chr(ord(ch)^ord(next(temp)))
    return result

sender = '[email protected]'
receivers = ['[email protected]']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
msg = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
# msg['From'] = Header("S", 'utf-8')  # 发送者
# msg['To'] = Header("测试", 'utf-8')  # 接收者
msg['From'] = formataddr(["data_deal", sender])  # 发送者
msg['To'] = formataddr(["recv", receivers[0]])  # 接收者

subject = 'Python SMTP 邮件测试'

def sendMail(subject, key):
    error_msg = None
    try:
        msg['Subject'] = Header(subject, 'utf-8')
        # clint = smtplib.SMTP()
        # EMAIL_HOST, EMAIL_PORT = "smtpdm.aliyun.com", 465
        # clint.connect(EMAIL_HOST, EMAIL_PORT)
        EMAIL_HOST, EMAIL_PORT = "smtp.aliyun.com", 465
        clint = smtplib.SMTP_SSL(EMAIL_HOST, EMAIL_PORT)
        clint.login(sender, crypt('xxx', key))
        clint.sendmail(sender, receivers, msg.as_string())
        clint.quit()
        print("邮件发送成功")
    except smtplib.SMTPConnectError as e:
        error_msg= '邮件发送失败,连接失败'
    except smtplib.SMTPAuthenticationError as e:
        error_msg = '邮件发送失败,认证错误:'
    except smtplib.SMTPSenderRefused as e:
        error_msg = '邮件发送失败,发件人被拒绝:'
    except smtplib.SMTPRecipientsRefused as e:
        error_msg = '邮件发送失败,收件人被拒绝:'
    except smtplib.SMTPDataError as e:
        error_msg = '邮件发送失败,数据接收拒绝:'
    except smtplib.SMTPException as e:
        error_msg = '邮件发送失败, {}'.format(str(e))
    except Exception as e:
        error_msg = '邮件发送异常, {}'.format(str(e))
    if error_msg != None:
        print("Error: 无法发送邮件")
        print(error_msg)

# sendMail('ttttt', '123')

猜你喜欢

转载自www.cnblogs.com/xiaoniu-666/p/10818787.html