【问题标题】:Django does't send email on the remote serverDjango 不在远程服务器上发送电子邮件
【发布时间】:2022-04-19 19:27:02
【问题描述】:

当用户在我的网站上填写表单时,我正在尝试发送电子邮件。 一切都在我的本地服务器上运行,信件已发送。 在具有相同设置的远程 timeweb.com 服务器上,没有发送信件,我收到了。 试过 DEBUG = False 和 True 我尝试了不同的邮件服务:gmail、mail、yandex、timeweb mail。 在 gmail 中包括“有权访问该帐户的不可靠应用程序”。 在这里我包括https://accounts.google.com/DisplayUnlockCaptcha 没有任何帮助。

谁知道,请告诉我在哪里挖。

'setting.py'

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST_USER = "email@gmail.com"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_PASSWORD = "Your_Password"

【问题讨论】:

标签: django email


【解决方案1】:

当我研究您的错误 ValueError: EMAIL_USE_TLS/EMAIL_USE_SSL.....时,我找到另一个电子邮件发送代码。我建议您阅读此链接SMTP issue in Django web application。你可以试试这个:

import smtplib

def sendEmail():

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login('yourEmailAddress@gmail.com', 'yourEmailPassword')

    try:
        server.sendmail('yourEmailAddress@gmail.com', 'emailAddressBeingSentTo', 'messageBeingSent')
    except:
        print('An error occurred when trying to send an email')

    server.quit()

【讨论】:

  • 此方法有效。太感谢了。但是我有编码问题。 Peaple会用俄语写作。这个问题我该怎么办?
  • 还有什么问题。你能举个例子吗?如果要打开新的stackoverflow错误,我会看看。请把网址发给这个地方
【解决方案2】:

我正在使用这种电子邮件发送情况。这是我的项目。我在https://www.youtube.com/watch?v=UH8oHNDfTyQ 看到了这个方法。如果你想查看这个 url,它可以在你的项目中使用。

'setting.py'
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST_USER = "siberlab01@gmail.com"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_PASSWORD = "Your_Password"

【讨论】:

  • 我有相同的电子邮件设置配置。它不起作用。
  • 我不明白为什么不使用此配置。我的配置与此电子邮件发送情况相同。您可以在 gmail 帐户中查看您的垃圾邮件吗?也许电子邮件来自垃圾邮件区域。
  • 这个配置没问题。但也许你忘记了 gmail 帐户 > 安全性允许不太安全的应用程序部分
  • 我查过垃圾邮件,我尝试过不同的电子邮件服务。
  • 我打开了安全允许不太安全的应用程序
【解决方案3】:

你能在你的终端屏幕上写'python manage.py shell'吗? 之后

  1. 'from django.core.mail import send_mail' 输入
  2. send_mail('django test mail', 'this is django','siberlab01@gmail.com', ['siberlab01@gmail.com'], fail_silently = False )

在第 2 部分更改您的 gmail 帐户。如果你尝试这个实现,你能写出你看到的数字吗? 如果此数字为 0,则将 fail_silently 部分更改为 true。如果您再次看到 0 数字,这将不再有效。

我的答案是相同的配置。看我的图。

enter image description here

【讨论】:

  • ValueError: EMAIL_USE_TLS/EMAIL_USE_SSL 是互斥的,因此只需将其中一个设置设置为 True。我只有 EMAIL_USE_TLS=True
  • 我说改变fail_silently = true or false。我没有说 'EMAIL_USE_TLS = True' 。 send_mail('django 测试邮件', '这是 django','siberlab01@gmail.com', ['siberlab01@gmail.com'], fail_silently = False ) 或 send_mail('django 测试邮件', '这是 django' ,'siberlab01@gmail.com', ['siberlab01@gmail.com'], fail_silently = True)
  • 我想先告诉你你尝试使用shell命令。因为当您的电子邮件发送配置正确时,您的 send_mail 函数在项目中可能不正确。因此,您应该尝试 shell 命令
  • 我这样做了 - send_mail('django test mail', 'this is django','noreply@raketaweb.eu ', ['noreply@raketaweb.eu '], fail_silently = True ) 我仍然有 ValueError: EMAIL_USE_TLS/EMAIL_USE_SSL 是互斥的,因此只需将其中一个设置设置为 True。和
  • 发生了什么 fail_silently = false 像这样:send_mail('django test mail', 'this is django','noreply@raketaweb.eu', ['noreply@raketaweb.eu'], fail_silently =假)
【解决方案4】:

有点晚了,但我是这样解决的:
当我检查我的 Google 帐户时,我看到一个警告,它是关于新登录的。它说:“检测到新登录!”并给了两个选择;是我——不是我。 当我选择“是我”时,我的服务器开始发送电子邮件。

我的设置也和你一样

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-15
  • 1970-01-01
  • 2014-08-12
  • 2021-09-27
  • 1970-01-01
  • 2012-07-21
相关资源
最近更新 更多