Kürzlich ist der E-Mail-Versand fehlgeschlagen und die Fehlermeldung lautet wie folgt:
SMTPServerDisconnected('Connection unexpectedly closed')
Ich ging zum IT-Administrator und stellte fest, dass die Verwendung des Kontos des ursprünglichen Postfachs gesperrt war . Als Grund wurde mir der Wechsel zum SMTP-Dienst genannt, und dann habe ich die Konfigurationsinformationen geändert:
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]'
Senden Sie dann eine Test-E-Mail. Der Fehler lautet wie folgt:
SMTPAuthenticationError: (535, '5.7.3 Authentication unsuccessful')
Finden Sie abschließend heraus, dass der Grund das Konto von EMAIL_HOST_USER ist. Das Suffix sollte entfernt werden und zu „user“ werden, wodurch das Authentifizierungsproblem gelöst wird.
Als nächstes testeten wir weiter und stießen auf neue Probleme:
SMTPDataError: (550, '5.7.60 SMTP; Client does not have permissions to send as this sender)
Die obige Fehlermeldung lautet: Der Client hat keine Berechtigung zum Senden von E-Mails.
Der Grund wird im Internet angegeben:
活动目录服务有个处理过程是为了保证受保护组的安全描述符不被改动。
如果一个属于受保护组的账号的安全描述符跟AdminSDHolder object的安全描述符不匹配的话,
那样这个账号的安全描述符会被AdminSDHolder object的安全描述符所覆盖。
由于修改Send As权限是通过修改用户的安全描述符来实现的,因此假如一个用户是属于某个受保护组的话,上述修改会在一个小时左右执行,即把AdminSDHolder object的安全描述符覆盖到这个用户的安全描述符,因为Send As属于安全描述符的其中的一个权限,所以同时也会被覆盖,最终导致NT AUTHORRITY/SELF 权限丢失。
Aber mein Grund ist nicht hier, kein Unsinn, mein Grund ist:
from django.core import mail
mail.send_mail(subject='subject', message='test', from_email=DEFAULT_FROM_EMAIL, recipient_list=['[email protected]'], html_message="html")
Ein wichtiger Punkt hierbei ist, dass der Wert von from_email mit dem Wert von EMAIL_HOST_USER (nach dem Hinzufügen des Suffixes) übereinstimmen muss , sodass die endgültige korrekte Konfiguration wie folgt lautet:
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")