您的位置:

关于django的ValueError("EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive, so only set ""one of those settings to True.")

  发布时间:2023-03-06 10:42:42
报错的原因Django出现错误的原因是在配置邮件发送时,EMAIL_USE_TLS和EMAIL_USE_SSL被设置为True。在Django中,EMAIL_USE_TLS和EMAIL_USE_SSL是两个相互排斥的设置,分别用于指定使用TLS或SSL加密连接的邮件服务器。这里的例子只是展示了如何避免EMAIL_USE_TLS和EMAIL_USE_SSL被同时设置为True的错误的方法,具体的操作还要根据实际情况来决定。请参考Django的文档了解更多细节。

报错的原因

Django出现"ValueError("EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive, so only set ""one of those settings to True.")错误的原因是在配置邮件发送时,EMAIL_USE_TLS和EMAIL_USE_SSL被设置为True。

在Django中,EMAIL_USE_TLS和EMAIL_USE_SSL是两个相互排斥的设置,分别用于指定使用TLS或SSL加密连接的邮件服务器。

如果在配置邮件发送时,EMAIL_USE_TLS和EMAIL_USE_SSL都被设置为True,就会出现"ValueError("EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive, so only set ""one of those settings to True.")错误。

解决办法:

要解决这个错误,需要在配置邮件发送时,只设置其中一个设置为True,例如:


EMAIL_BACKEND = 'django.core.mail.backends.smtp.Email

Backend'

EMAIL_USE_TLS = True # OK

EMAIL_USE_SSL = False



或者:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_USE_TLS = False

EMAIL_USE_SSL = True # OK



这样就可以避免"ValueError("EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive, so only set ""one of those settings to True.")错误的出现。

注意:这里的例子只是展示了如何避免EMAIL_USE_TLS和EMAIL_USE_SSL被同时设置为True的错误的方法,具体的操作还要根据实际情况来决定。

如何解决

要解决Django出现"ValueError("EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive, so only set ""one of those settings to True.")错误,需要在配置邮件发送时,只设置其中一个设置为True。

例如,在设置使用TLS加密的邮件服务器时:


EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True  # OK
EMAIL_USE_SSL = False

或者,在设置使用SSL加密的邮件服务器时:


EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = False
EMAIL_USE_SSL = True  # OK

这样就可以避免"ValueError("EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive, so only set ""one of those settings to True.")错误的出现。

这里的例子只是展示了如何避免EMAIL_USE_TLS和EMAIL_USE_SSL被同时设置为True的错误的方法,具体的操作还要根据实际情况来决定。

如果你的应用程序需要发送邮件,可以在Django的设置文件"settings.py"中配置邮件发送的参数。

例如,要使用SMTP服务器发送邮件,可以在"settings.py"中设置以下参数:


# 邮件发送后端
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

# SMTP服务器地址
EMAIL_HOST = 'smtp.example.com'

# SMTP服务器端口
EMAIL_PORT = 587

# 发件人地址
EMAIL_HOST_USER = 'sender@example.com'

# 发件人密码
EMAIL_HOST_PASSWORD = 'password'

# 是否使用TLS加密
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False

# 默认的发件人地址
DEFAULT_FROM_EMAIL = 'webmaster@example.com'

# 默认的收件人地址
SERVER_EMAIL = 'webmaster@example.com'

这样,Django就可以使用SMTP服务器发送邮件了。

注意:如果你的SMTP服务器需要使用SSL加密,可以将"EMAIL_USE_TLS"设置为False,"EMAIL_USE_SSL"设置为True。

例如:


# 邮件

发送后端

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

# SMTP服务器地址

EMAIL_HOST = 'smtp.example.com'

# SMTP服务器端口

EMAIL_PORT = 465

# 发件人地址

EMAIL_HOST_USER = 'sender@example.com'

# 发件人密码

EMAIL_HOST_PASSWORD = 'password'

# 是否使用TLS加密

EMAIL_USE_TLS = False

EMAIL_USE_SSL = True

# 默认的发件人地址

DEFAULT_FROM_EMAIL = 'webmaster@example.com'

# 默认的收件人地址

SERVER_EMAIL = 'webmaster@example.com'



这样,Django就可以使用SSL加密的SMTP服务器发送邮件了。

注意:配置邮件发送的参数还有很多,请参考Django的文档了解更多细节。

使用例子

下面是一个使用Django发送邮件的例子:

首先,在"settings.py"文件中配置邮件发送的参数:


# 邮件发送后端
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

# SMTP服务器地址
EMAIL_HOST = 'smtp.example.com'

# SMTP服务器端口
EMAIL_PORT = 587

# 发件人地址
EMAIL_HOST_USER = 'sender@example.com'

# 发件人密码
EMAIL_HOST_PASSWORD = 'password'

# 是否使用TLS加密
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False

# 默认的发件人地址
DEFAULT_FROM_EMAIL = 'webmaster@example.com'

# 默认的收件人地址
SERVER_EMAIL = 'webmaster@example.com'

然后,在你的应用程序中使用"send_mail()"函数发送邮件:


from django.core.mail import send_mail

# 发件人地址
from_email = 'webmaster@example.com'

# 收件人地址
to_email = 'user@example.com'

# 邮件主

subject = 'Welcome to My Site'

# 邮件正文

message = 'Thank you for signing up for My Site!'

# 发送邮件

send_mail(subject, message, from_email, [to_email])



这样,Django就会使用SMTP服务器发送一封邮件给"user@example.com"。

注意:这只是一个简单的例子,实际应用中还有很多细节需要注意。比如,你可能需要设置邮件标题、正文格式等。请参考Django的文档了解更多细节。