1. import smtplib
    2. import sys
    3. from email.mime.text import MIMEText
    4. from email.utils import parseaddr, formataddr
    5. from email.header import Header
    6. def _format_addr(s):
    7. """
    8. 地址解析 :田云 <tianyunperfect@163.com>
    9. :param s:
    10. :return:
    11. """
    12. name, addr = parseaddr(s)
    13. return formataddr((Header(name, 'utf-8').encode(), addr))
    14. class EmailUtils(object):
    15. def sendEmail( name, toEmail, title, content):
    16. """
    17. name,email,title ,content
    18. """
    19. # 设置服务器所需信息
    20. # 163邮箱服务器地址
    21. mail_host = 'smtp.163.com'
    22. fromName = ""
    23. # 163用户名
    24. mail_user = ''
    25. # 密码(部分邮箱为授权码)
    26. mail_pass = ''
    27. sslPort = '587'
    28. # 设置email信息
    29. # 邮件内容设置
    30. message = MIMEText(content, 'plain', 'utf-8')
    31. # 邮件主题
    32. message['Subject'] = Header(title, 'utf-8').encode()
    33. # 发送方信息
    34. message['From'] = _format_addr('%s <%s>' % (fromName, mail_user))
    35. # 接受方信息
    36. message['To'] = _format_addr('%s <%s>' % (name, mail_user))
    37. # 登录并发送邮件
    38. try:
    39. # 连接到服务器
    40. smtpObj = smtplib.SMTP_SSL(mail_host, sslPort)
    41. smtpObj.ehlo()
    42. # 登录到服务器
    43. smtpObj.login(mail_user, mail_pass)
    44. # 发送
    45. smtpObj.sendmail(
    46. mail_user, [toEmail], message.as_string())
    47. # 退出
    48. smtpObj.quit()
    49. print('send email success')
    50. except smtplib.SMTPException as e:
    51. print('send email error', e) # 打印错误
    52. if __name__ == "__main__":
    53. EmailUtils.sendEmail('177', "1777@189.cn", "待复习(10)", "点击复习")