无法为邮件发送设置smtp

  • 本文关键字:设置 smtp kiwi-tcms
  • 更新时间 :
  • 英文 :


我在docker-composer.yml上为email_settings添加了一个新的.py文件(保存在tcms_settings_dir上(,并重新启动docker容器以刷新设置并获得新文件。email_config文件如下:

import os
import pathlib
import tempfile
from importlib import import_module
import pkg_resources
from django.contrib.messages import constants as messages
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
import tcms
SERVER_EMAIL = DEFAULT_FROM_EMAIL = 'my@emailcom'
# additional Kiwi TCMS setting
EMAIL_SUBJECT_PREFIX = '[Kiwi-TCMS] '
EMAIL_HOST = 'mail.my_server.com'
EMAIL_PORT = 587 
EMAIL_HOST_USER = 'admin@email.com'
EMAIL_HOST_PASSWORD = 'my_pass'
EMAIL_USE_TLS = True

然后我尝试:sudo docker exec-it kiwi_web/Kwi/manage.py发送测试电子邮件my_email@email.com

我得到以下错误:

Traceback (most recent call last):
File "/Kiwi/manage.py", line 12, in <module> execute_from_command_line(sys.argv)
File "/venv/lib64/python3.8/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line utility.execute()
File "/venv/lib64/python3.8/site-packages/django/core/management/__init__.py", line 440, in execute self.fetch_command(subcommand).run_from_argv(self.argv)
File "/venv/lib64/python3.8/site-packages/django/core/management/base.py", line 414, in run_from_argv self.execute(*args, **cmd_options)
File "/venv/lib64/python3.8/site-packages/django/core/management/base.py", line 460, in execute output = self.handle(*args, **options)
File "/venv/lib64/python3.8/site-packages/django/core/management/commands/sendtestemail.py", line 35, in handle
send_mail(File "/venv/lib64/python3.8/site-packages/django/core/mail/__init__.py", line 87, in send_mail return mail.send()
File "/venv/lib64/python3.8/site-packages/django/core/mail/message.py", line 298, in send
return self.get_connection(fail_silently).send_messages([self])
File "/venv/lib64/python3.8/site-packages/django/core/mail/backends/smtp.py", line 124, in send_messages new_conn_created = self.open()
File "/venv/lib64/python3.8/site-packages/django/core/mail/backends/smtp.py", line 80, in open self.connection = self.connection_class(File "/usr/lib64/python3.8/smtplib.py", line 253, in __init__ (code, msg) = self.connect(host, port)
File "/usr/lib64/python3.8/smtplib.py", line 337, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib64/python3.8/smtplib.py", line 308, in _get_socket
return socket.create_connection((host, port), timeout,
File "/usr/lib64/python3.8/socket.py", line 808, in create_connection
raise err
File "/usr/lib64/python3.8/socket.py", line 796, in create_connection
sock.connect(sa)
OSError: [Errno 99] Cannot assign requested address

我已经检查了托管docker容器的计算机是否可以连接到smtp服务器(ping(,并且smtp设置是否正确,因为它们目前正在laravel项目中使用。我不知道是否必须打开docker容器上的端口才能与smtp服务器通信。

你能帮助解决可能导致这种情况的原因吗?

假设您的配置是正确的,则此错误是一般的网络错误。网络层本身可能会出现很多问题。

  • 您是否尝试验证您的设置是否正确
  • 您是否验证了容器和SMTP服务器之间的网络连接?例如使用一些命令行工具
  • 您是否检查了防火墙和实际SMTP配置中是否存在明显的问题,如允许/阻止特定端口和地址

所需操作:如果您想在此处取得任何进展,请在原始问题中提供以上所有信息。

更新:提供的详细信息仍然没有帮助,因为这个错误太过普遍,无法理解发生了什么。这是某种网络问题,但如果不能访问运行容器的系统(并公开电子邮件凭据(,我们就无法调试任何内容。

最新更新