Django -邮件不发送,端口更改为25,但在seetings.py中设置为587

e4yzc0pl  于 2023-08-08  发布在  Go
关注(0)|答案(2)|浏览(147)

未发送电子邮件。有趣的是...之前(像3个月前)整个代码工作得很好。

设置:

  1. DEBUG = True
  2. EMAIL_HOST = 'smtp.gmail.com'
  3. EMAIL_PORT: 587
  4. EMAIL_HOST_USER = 'xyz@gmail.com'
  5. EMAIL_HOST_PASSWORD = 'xyz'
  6. EMAIL_USE_TLS = True
  7. ALLOWED_HOSTS = []

字符串

view.py:

  1. def index(request):
  2. """The home page."""
  3. # Send a message.
  4. if request.method != 'POST':
  5. # No data submitted; create a blank form.
  6. form_email = EmailForm()
  7. form_message = EmailMessageForm()
  8. else:
  9. # POST data submitted; proecess data.
  10. form_email = EmailForm(data=request.POST)
  11. form_message = EmailMessageForm(data=request.POST)
  12. if form_email.is_valid() and form_message.is_valid():
  13. try:
  14. email = Email.objects.get(text=request.POST['text'])
  15. except:
  16. form_email.save()
  17. email = Email.objects.last()
  18. message_db = form_message.save(commit=False)
  19. message_db.email = email
  20. message_db.save()
  21. message_owner = (
  22. f'New email on your website from {request.POST["text"]}',
  23. f"Email has been sent from: {request.POST['text']}\n\n"
  24. f"Full message:\n\"{request.POST['message']}\"",
  25. 'settings.EMAIL_HOST_USER',
  26. ['my@gmail.com',],
  27. )
  28. message_guest = ('Your email has been sent',
  29. "Many thanks for getting in contact with me. Your message was "
  30. "successfully sent. I will reach out to you as soon as possible."
  31. f"\n\nYour message:\n\"{request.POST['message']}\"",
  32. 'settings.EMAIL_HOST_USER',
  33. [request.POST['text'],],
  34. )
  35. send_mass_mail((message_owner, message_guest), fail_silently=False)
  36. return redirect('home:contact_thank_you')
  37. # Display a blank or invalid form.
  38. context = {'form_email': form_email, 'form_message': form_message}
  39. return render(request, 'home/index.html', context)

**回溯:**请求方式:后

请求URL:http://127.0.0.1:8000/
Django版本:4.1.5
例外类型:TimeoutError
异常值:[WinError 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应
饲养时间:home.views.index
x1c 0d1x的数据

**我找到了原因,但我找不到任何解决方案来解决它!**这是我收到的电子邮件时收到的:



seetings.py中端口被设置为587(如上所示),但不知何故,在发送电子邮件后,这个值是25而不是587
在文档中你可以看到25是默认值,但是为什么我的设置没有覆盖它呢?

wfveoks0

wfveoks01#

你肯定不想在电子邮件地址周围加上引号。还请注意,与元组不同,创建一个一项列表时不需要结尾逗号:

  1. message_owner = (
  2. f'New email on your website from {request.POST["text"]}',
  3. f"Email has been sent from: {request.POST['text']}\n\n"
  4. f"Full message:\n\"{request.POST['message']}\"",
  5. settings.EMAIL_HOST_USER,
  6. ['my@gmail.com'],
  7. )
  8. message_guest = ('Your email has been sent',
  9. "Many thanks for getting in contact with me. Your message was "
  10. "successfully sent. I will reach out to you as soon as possible."
  11. f"\n\nYour message:\n\"{request.POST['message']}\"",
  12. settings.EMAIL_HOST_USER,
  13. [request.POST['text']],
  14. )

字符串

展开查看全部
ocebsuys

ocebsuys2#

我发现不是最好的解决方案,但它工作...
如果您有同样的问题,请访问:
\AppData\Local\Programs\Python\Python311\Lib\smtplib.py
然后打开这个文件并将port替换为587:100d1x

的字符串
但这不是最好的做法,我希望有人找到更好的解决方案如何修复它。

相关问题