python - 在 1&1 上通过 Python/django 发送电子邮件

标签 python django email

我正在使用django框架开发一个网站。我最近尝试在 1&1 共享主机上发布它。 我设法使项目运行良好,除了最后一个“细节”:我无法从 django 发送电子邮件。

我几乎尝试了设置中的所有内容(不同的电子邮件、端口等),但每次我都会收到漂亮的“500内部服务器错误”=/(而在免费的alwaysdata服务器上一切正常)

为了找到这个问题的根源,我尝试了不同的方法:

通过 python 解释器测试 send_mail 和 EmailMessage:

>>> send_mail('a subject', 'a test message', 'mymail@gmail.com', ['mymail@gmail.com'])
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: a subject
From: mymail@gmail.com
To: mymail@gmail.com
Date: Tue, 14 Jan 2014 22:12:48 -0000
Message-ID: <20140114221248.6718.86150@infong-fr25.kundenserver.de>

a test message
-------------------------------------------------------------------------------
1

但是...我的收件箱里什么也没有。 我的设置是:

EMAIL_HOST_PASSWORD = 'mypassword'
EMAIL_USE_TLS       = True
EMAIL_HOST          = 'smtp.gmail.com'
DEFAULT_FROM_EMAIL  = 'mymail@gmail.com'
EMAIL_HOST_USER     = 'mymail@gmail.com'
EMAIL_PORT          = 587

通过 python 解释器连接到 SMTP 服务器:

./manage.py shell
>>> from smtplib import SMTP
>>> smtp_conn = SMTP()
>>> smtp_conn.connect('smtp.gmail.com', 25)

什么也没发生(我尝试使用 auth.smtp.1and1.fr 或端口 587...);当我中断该过程时,它告诉我:

^CTraceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.6/smtplib.py", line 295, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.6/smtplib.py", line 273, in _get_socket
    return socket.create_connection((port, host), timeout)
  File "/usr/lib/python2.6/socket.py", line 554, in create_connection
    sock.connect(sa)
  File "<string>", line 1, in connect
KeyboardInterrupt

使用 php 文件进行测试:

有一个基本的:

<?php
  if (mail("mymail@gmail.com", "a subject", "a test")) {
    echo("<p>Email successfully sent!</p>");
  }
  else {
    echo("<p>Email delivery failed…</p>");
  }
?>

邮件已发送!所以,看来没有 SMTP 连接,这是可能的(至少,通过 php)。

结论

所以,我的问题是:你认为我可以设法纠正这个错误,否则是否可以在没有 smtp 连接的情况下发送邮件(“像 php”)?

最佳答案

1and1 does not allow SMTP within 1and1. To send an email when running on 1and1...

#!/usr/bin/python
import os
mail_to = "sam@comcast.net"
mail_from = "steve@example.com"
subject = "test message"
header = """From: {0}
To: {1}
Subject: {2}
""".format(mail_from, mail_to, subject)
msg = header + "a test from me"
sendmail = os.popen("/usr/lib/sendmail -t", "w")
sendmail.write(msg)
sendmail.close()

链接的博客文章显示了一个通过外部计算机通过 1and1 使用 SMTP 发送邮件的示例。也许您可以覆盖 Django 的 send_mail (或者这可能会给您[或其他人]一个关于为什么它不起作用的提示。)无论如何,这应该允许您在 Python 解释器中发送电子邮件。

来源:https://flenniken.net/blog/send-email-using-python-and-1and1/

关于python - 在 1&1 上通过 Python/django 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21125508/

相关文章:

python - MatPlotLib Python - 来自颜色传感器的 RGB 值用于更改线点的颜色

python - Django - 如何获取与另一个字段相关的upload_to目录

python - 在 Django 模板中进行总结

email - Laravel:如何将图像作为内容而非附件嵌入电子邮件中

python - 如何创建一个可以通过 python-telegram-bot 命令随时启动/停止的循环线程?

python - 使用 django 和 gunicorn 进行代理

django - 如果 Managed = False,在 Django 模型的类 Meta 中定义 models.Index 或 models.UniqueConstraint 是否有任何意义

email - 使用mailGun在Meteor应用程序中发送电子邮件-调用方法 'sendEmail'出错

node.js - Nodemailer 错误 : Recipient command failed: 553 5. 7.1:发件人地址被拒绝:不属于用户

python - 如何删除一组字典中所有字典的字典值中某个字符之后的所有内容?