【发布时间】:2014-02-03 05:14:59
【问题描述】:
我正在开发一个带有 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 连接的情况下发送邮件(“like php”)?
【问题讨论】:
-
也许 1&1 正在过滤传出的 smtp 连接。您需要了解如何配置 PHP 以发送邮件(我猜它是通过
sendmail命令直接完成的?);也许检查phpinfo()... -
您是否正确导入了
send_mail?from django.core.mail import send_mail