import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import traceback
import sys
def send_email(subject, receiver, html_message):
msg = MIMEMultipart('alternative')
html_message = "你好"
subject = "测试"
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = "我是谁"
msg['To'] = "XXXX@163.com"
html = MIMEText(html_message.encode('utf-8'), 'plain', 'utf-8')
# 一开始想用html格式的邮件,但是编码死活弄不对,试了试plain还是不行
msg.attach(html)
try:
smtp_obj = smtplib.SMTP()
smtp_obj.connect(DefaultConfig.MAIL_HOST, 25) # 25 为 SMTP 端口号
smtp_obj.login(xxx, *****)
smtp_obj.sendmail(xxxx, xxxxx, msg.as_string())
smtp_obj.quit()
logger.info("邮件发送成功")
except smtplib.SMTPException as e:
logger.error(e)
logger.error("Error: 无法发送邮件")
except Exception as e:
exc_type, exc_value, exc_traceback_obj = sys.exc_info()
traceback.print_tb(exc_traceback_obj)
报错信息为:
File "E:\Coding\tools\backend\lextool\utils\send_email.py", line 36, in send_email
smtp_obj.sendmail(DefaultConfig.MAIL_USER, receiver, msg.as_string())
File "D:\win10\ANACONDA\lib\smtplib.py", line 855, in sendmail
msg = _fix_eols(msg).encode('ascii')
127.0.0.1 - - [11/Jun/2020 19:04:59] "POST /user/register HTTP/1.1" 200 -
File "E:\Coding\tools\backend\lextool\utils\send_email.py", line 36, in send_email
smtp_obj.sendmail(DefaultConfig.MAIL_USER, receiver, msg.as_string())
File "D:\win10\ANACONDA\lib\smtplib.py", line 855, in sendmail
msg = _fix_eols(msg).encode('ascii')
127.0.0.1 - - [11/Jun/2020 19:05:08] "POST /user/register HTTP/1.1" 200 -
邮件正文有汉语的时候就会报错,全是英语的时候就不报错了,有哪位大神帮忙看下呀