Django中使用163邮箱发送邮件

您所在的位置:网站首页 网易邮箱授权吗 Django中使用163邮箱发送邮件

Django中使用163邮箱发送邮件

2024-07-11 13:54| 来源: 网络整理| 查看: 265

准备工作: 准备一个用于发送邮件的邮箱,比如网易163邮箱;登录邮箱网页版,开通POP3/SMTP/IMAP功能;如下图: 163邮箱设置示例点击上图的新增授权码,这里需要发送验证短信,按照提示一步一步操作即可;如果之前添加过授权码,并且还记得的话,这一步可以忽略;复制下面的SMTP服务器,即:smtp.163.com 代码里面使用: # 在settings.py中添加配置参数: # 用于发送邮件的邮箱 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_TLS = True # 是否使用TLS安全传输协议(用于在两个通信应用程序之间提供保密性和数据完整性) EMAIL_USE_SSL = False # 是否使用SSL加密,qq企业邮箱要求使用,163邮箱设置为True的时候会报ssl的错误 EMAIL_HOST = 'smtp.163.com' # 发送邮件的邮箱的SMTP服务器,这里用的是163邮箱 EMAIL_PORT = 25 # 发件箱的SMTP服务器端口,默认是25 EMAIL_HOST_USER = '[email protected]' # 发送邮件的邮箱地址 EMAIL_HOST_PASSWORD = '准备工作获取的授权码' # 发送邮件的邮箱密码(这里使用的是授权码) 测试发送邮件代码:

可以放在视图或者utils.py等位置,也可以封装成工具用于多处调用;

from django.core.mail import send_mail print("开始发送邮件...") send_mail('邮件主题', '邮件内容', '测试邮箱', ['[email protected]', '[email protected]'], # 这里可以同时发给多个收件人 fail_silently=False ) print("发送邮件成功!") 接收到的邮件效果:

接收到的邮件示例

可能会遇到的错误:

错误一:

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py", line 730, in login raise last_exception File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py", line 721, in login initial_response_ok=initial_response_ok) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/smtplib.py", line 642, in auth raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')

可能原因:EMAIL_HOST_USER配置的用户和授权码不匹配,认证失败; 解决方案:确认邮箱和授权码是否匹配;

错误二:

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 817, in __init__ self.do_handshake() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1077, in do_handshake self._sslobj.do_handshake() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 689, in do_handshake self._sslobj.do_handshake() ssl.SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:852)

可能原因:settings.py中配置的参数"EMAIL_USE_SSL"设置为True但是邮箱服务器不支持导致; 解决方案:将settings.py中配置的参数"EMAIL_USE_SSL"设置为False;

错误三: 内网图片无法显示: 在这里插入图片描述 解决方案:将图片转为base64格式,放在img标签的src属性中,如:

html = """ 测试Base64图片 base64图片 """ send_mail('邮件主题', '邮件内容', '测试邮箱', ['[email protected]'], fail_silently=False, html_message=html)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3