解决SMTPDataError: (550, ‘5.7.60 SMTP; Client does not have permissions to send as this sender‘)

最近邮件发送失败,报错信息如下:

SMTPServerDisconnected('Connection unexpectedly closed')

找了IT的管理员,发现原来使用的邮箱的账号被封了使用状态。给到我的原因是改成 smtp 服务,随后我修改了配置信息:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.local'
EMAIL_PORT = 25
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'pwd'
DEFAULT_FROM_EMAIL = '[email protected]'

然后进行发邮件测试,报错如下:

SMTPAuthenticationError: (535, '5.7.3 Authentication unsuccessful')

最后,找到原因是 EMAIL_HOST_USER 的账号,应该去掉后缀,变成:‘user’,这样就解决了认证问题。
接下来继续测试又遇到了新的问题:

SMTPDataError: (550, '5.7.60 SMTP; Client does not have permissions to send as this sender)

上面的报错信息是:客户端没有发送邮件的权限
网上有说的原因是:

活动目录服务有个处理过程是为了保证受保护组的安全描述符不被改动。
如果一个属于受保护组的账号的安全描述符跟AdminSDHolder object的安全描述符不匹配的话,
那样这个账号的安全描述符会被AdminSDHolder object的安全描述符所覆盖。

由于修改Send As权限是通过修改用户的安全描述符来实现的,因此假如一个用户是属于某个受保护组的话,上述修改会在一个小时左右执行,即把AdminSDHolder object的安全描述符覆盖到这个用户的安全描述符,因为Send As属于安全描述符的其中的一个权限,所以同时也会被覆盖,最终导致NT AUTHORRITY/SELF 权限丢失。

但我的原因不在于此,不废话,我的原因是:

from django.core import mail
mail.send_mail(subject='subject', message='test', from_email=DEFAULT_FROM_EMAIL, recipient_list=['[email protected]'], html_message="html")

这里有个重点是 from_email 的值 要跟 EMAIL_HOST_USER 的值(加上后缀后)要一致,所以最后的正确配置如下:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.local'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'user'
EMAIL_HOST_PASSWORD = 'pwd'
DEFAULT_FROM_EMAIL = '[email protected]'  # 要与 EMAIL_HOST_USER + 后缀 一致


from django.core import mail
mail.send_mail(subject='subject', message='test', from_email=DEFAULT_FROM_EMAIL, recipient_list=['[email protected]'], html_message="html")

猜你喜欢

转载自blog.csdn.net/dqchouyang/article/details/125666723