记录维维的每一篇Hello World

使用到的模板/库
import osimport smtplibimport email
获取QQ邮箱授权码
填入信息
获取到授权码后,复制到以下代码中,也相应更改其他内容
if __name__ == '__main__':u = '*******@qq.com' # 邮箱(本代码仅用于QQ邮箱)pwd = '*******' # 授权码(QQ邮箱中获取到的授权码)to = '*******@qq.com' # 收件人邮箱(想要发送的人)sub = 'python' # 邮箱主题(选填)from_n = '维维' # 发件人昵称(选填)to_n = '坠梦者' # 收件人昵称(选填)msg = '人生苦短,我用python' # 发送的消息# 附件路径(如果想要发送附件,填入相对应的绝对路径)path = 'D:\\python\\help.docx'
完整源码
# -*- coding : utf-8-*-# Project: qq-email# Created byimport osimport smtplibfrom email.mime.application import MIMEApplicationfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.utils import formataddrclass SendEmail:def __init__(self, user: str, password: str, user_name: str = "", subject: str = "") -> None:self.__user = userself.__password = passwordself.__fromName = user_nameself.__subject = subjectdef send(self, to_people: str, message: str, to_name: str = "", subject: str = None, file_path: str = None):try:flag = Truesend_msg = MIMEMultipart()text = MIMEText(message, "plain", "utf-8")send_msg.attach(text)if file_path:enclosure = MIMEApplication(open(file_path, 'rb').read())enclosure.add_header('Content-Disposition', 'attachment', filename=os.path.split(file_path)[1])send_msg.attach(enclosure)send_msg['From'] = formataddr((self.__fromName, self.__user))send_msg['To'] = formataddr((to_name, to_people))send_msg['Subject'] = self.__subject if subject is None else subjectsend_srv = smtplib.SMTP_SSL("smtp.qq.com", 465)send_srv.login(self.__user, self.__password)send_srv.sendmail(self.__user, to_people, send_msg.as_string())# send_srv.quit()except Exception:# 会引发异常的情况太多,就采用最宽泛的写法flag = Falsefinally:# 不管成功与否,都退出send_srv.quit()return flagif __name__ == '__main__':u = '*******@qq.com' # 邮箱(本代码仅用于QQ邮箱)pwd = '*******' # 授权码(QQ邮箱中获取到的授权码)to = '*******@qq.com' # 收件人邮箱(想要发送的人)sub = 'python' # 邮箱主题(选填)from_n = '维维' # 发件人昵称(选填)to_n = '坠梦者' # 收件人昵称(选填)msg = '人生苦短,我用python' # 发送的消息# 附件路径(如果想要发送附件,填入相对应的绝对路径)path = 'D:\\python\\help.docx'# 实例化mail = SendEmail(user=u, password=pwd, user_name=from_n, subject=sub)# 发送result = mail.send(to_people=to, message=msg, to_name=to_n, file_path=path)r = '发送成功' if result else '发送失败'print(r)
python环境
电脑:Windows10
python:3.8.8(建议3.7以上)



