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发送邮件的全部知识点,感谢大家的学习和对毛票票的支持。