python - Django - 发送电子邮件在 shell 中有效,但在本地主机上无效 - ConnectionRefusedError

标签 python django email localhost connection-refused

我是 Django 的新手,但我已经阅读了大约 50 页(主要是 SO 和 Django 文档),但没有找到适合我的情况的内容。

我只是想通过 Django 中的 send_mail 函数发送电子邮件;虽然我希望通过 Gmail 上的 SMTP 使它工作,但现在它甚至不能通过本地主机工作。当我运行测试此 send_mail 函数的 test_email.py 文件时,出现以下错误:

ConnectionRefusedError: [WinError 10061] 由于目标机器主动拒绝,无法建立连接

当我在 shell 中运行相同的 send_mail 调用时(通过 python manage.py shell),它完全没问题,并按照我的预期显示电子邮件。只有一次我尝试在 Django 中运行它时才会弹出错误。请注意,无论我在 settings.py 文件中放入以下 ​​2 组设置的哪种排列,我都会收到上述错误:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025
EMAIL_HOST_USER = 'myemail@gmail.com'
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False

我还在我的 settings.py 文件中尝试了以下设置,以及这些设置与之前设置的各种混合(尽管我想我已经超前看到 localhost 是如何不工作的):

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'myemail@gmail.com' # Note I'm using my actual gmail address here in real life
EMAIL_HOST_PASSWORD = '****' # Note I'm using my actual gmail password here in real life

DEFAULT_FROM_EMAIL = 'myemail@gmail.com' # Note I'm using my actual gmail address here in real life
SERVER_EMAIL = 'myemail@gmail.com' # Note I'm using my actual gmail address here in real life

当我尝试运行本地主机路由时,我在旁边的 CMD 提示符下运行以下命令:

python -m smtpd -n -c DebuggingServer localhost:1025

这是我尝试在 Django 中运行的 test_email.py 文件,我在其中遇到连接被拒绝的错误:

from django.core.mail import send_mail,EmailMessage

from django.conf import settings
settings.configure()

# Create your tests here.

# Email test #1: send email from my personal email to myself
send_mail(
    'Email Test #1',
    'Test if I can send email from my personal Gmail account to another email account via Django project.',
    settings.EMAIL_HOST_USER,
    ['myemail@gmail.com'],
    fail_silently=False
    )

任何关于为什么这甚至不能通过本地主机工作的想法或关于其他尝试的建议都将不胜感激。

谢谢!

最佳答案

我认为 gmail smtp 服务有问题。尝试使用 smtp 服务表单 sendgrid .它的基本使用也是免费的。我之前也遇到过同样的问题。

项目settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'sendgridusername'
EMAIL_HOST_PASSWORD = 'sedgridpasseord'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'yourmail@site.com'

still error

Try if `smtp` service is working on your your server.

关于python - Django - 发送电子邮件在 shell 中有效,但在本地主机上无效 - ConnectionRefusedError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46166699/

相关文章:

通过 IMAP 读取带附件的电子邮件的 PHP 类

python - 如何让 python 代码在时间 y 和 z 之间每隔 x 分钟循环一次?

python - Pandas DataFrame 根据值获取 header 名称

python - Pandas ,计算分组值(即计算多重性)

python - PySide6 中 QTimer() 函数的问题该函数不循环

python - 确定将什么添加到 PYTHONPATH 以解决导入问题的一般过程/概念是什么?

django - 将 Django +1.10 与 MongoDB 连接起来

python - 如何将 .png 嵌入到 HTML 电子邮件中?

swift - 单击“取消”或“删除草稿”后关闭邮件 View Controller

python - 渲染时未捕获语法错误 : invalid syntax