配置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 = '182****0231@163.com' # 发送邮件的邮箱地址
EMAIL_HOST_PASSWORD = '' # 发送邮件的邮箱密码(这里使用的是授权码)
这里的授权密码需要开启POP3/SMTP服务,开启步骤如下:
开通完成后,通过以下代码进行测试:
class EmailView(APIView):
def get(self,request):
send_mail('邮件主题',
'邮件内容',
'测试邮箱<182****0231@163.com>',
['40593****@qq.com'], # 这里可以同时发给多个收件人
fail_silently=False # 这里不填可能会报错554
)
return APIResponse(msg="邮件发送成功") # 注意:APIResponse是我自己封装的响应
报错smtplib.SMTPHeloError: (500, b’Error: bad syntax’)
解决方法:win10环境下解决smtp出现(500, b’Error: bad syntax’)
报错smtplib.SMTPDataError: (554, b’DT:SPM 163……)
send_mail('邮件主题',
'邮件内容',
'测试邮箱<182****0231@163.com>',
['40593****@qq.com'], # 这里可以同时发给多个收件人
fail_silently=False # 这里不填可能会报错554
)
在上述代码中未加 fail_silently=False,所以报错554,加上以后发送成功