Python发送邮件的实例代码讲解
一、邮件发送示例
邮件发送示例
flask_email及smtplib原生邮件发送示例,适用于基于Flask框架开发,但是内部设置的定时任务发送邮件/或提供离线接口发送邮件操作
1.flaskconfig配置
#QQ邮箱配置 MAIL_DEBUG=True#开启debug,便于调试看信息 MAIL_SUPPRESS_SEND=False#发送邮件,为True则不发送 MAIL_SERVER='smtp.qq.com'#邮箱服务器 MAIL_PORT=465#端口 MAIL_USE_SSL=True#重要,qq邮箱需要使用SSL MAIL_USE_TLS=False#不需要使用TLS MAIL_USERNAME='@qq.com'#填邮箱 MAIL_PASSWORD=''#填授权码 FLASK_MAIL_SENDER='@qq.com'#邮件发送方 FLASK_MAIL_SUBJECT_PREFIX=''#邮件标题 MAIL_DEFAULT_SENDER='@qq.com'#填邮箱,默认发送者
2.示例代码
importsmtplib importconstant#定义常量文件 fromemail.headerimportHeader fromemail.mime.textimportMIMEText constant.SMTP_SERVER='smtp.qq.com' constant.PORT=465 classEmailSender(object): def__init__(self,subject,receivers,sender='ss@qq.com',password='123456',offline=False,html_body=None, text_body=None,**kwargs): self.subject=subject self.receivers=receivers self.sender=sender self.password=password ifoffline: ifhtml_body: self.send_body=html_body self._subtype='html' eliftext_body: self.send_body=text_body self._subtype='plain' self.send_email_offline() else: fromflask_mailimportMail self.mail=Mail() dic=dict(kwargs) self.send_email(html_body,text_body,attachments=dic.get("attachments"),sync=dic.get("sync")) defsend_email_offline(self): try: message=MIMEText(self.send_body,self._subtype,'utf-8') message['From']=self.sender message['To']=','.join(self.receivers) message['Subject']=Header(self.subject,'utf-8') smtpObj=smtplib.SMTP_SSL(constant.SMTP_SERVER,constant.PORT) smtpObj.login(self.sender,self.password) smtpObj.sendmail( self.sender,self.receivers,message.as_string()) smtpObj.quit() exceptsmtplib.SMTPException: return"smtp服务器发送异常>>无法发送邮件" exceptExceptionase: returnf"邮件发送失败>>{e}" defsend_email(self,text_body,html_body,attachments=None,sync=False): fromthreadingimportThread fromflaskimportcurrent_app fromflask_mailimportMessage try: msg=Message(self.subject,recipients=self.receivers) msg.body=text_body msg.html=html_body ifattachments: forattachmentinattachments: msg.attach(*attachment) ifnotsync: self.mail.send(msg) else: Thread(target=self.send_async_email,args=(current_app._get_current_object(),msg)).start() exceptExceptionase: returnf"邮件发送失败>>{e}" defsend_async_email(self,app,msg): withapp.app_context(): try: self.mail.send(msg) exceptExceptionase: print(f"邮件发送错误信息:{e}")
3.使用
err=EmailSender(subject='吃货询问',receivers=["123@qq.com","1234@qq.cn"],text_body='吃了没呀?',offline=True) iferr: print(err)
以上3点就是关于Python发送邮件的全部知识点,感谢大家的学习和对毛票票的支持。