【发布时间】:2015-03-29 02:02:17
【问题描述】:
我最近使用 Apache 和 mod_wsgi 在我的 Ubuntu 12.04 服务器上建立了一个 Django 1.7.3 网站。除了邮件发送之外,Everythink 工作正常。我不明白为什么这不起作用,因为我一直在以前的 PHP 网站上使用相同的配置(端口、主机等)并且有效。所以它一定是来自 Python 的东西。代码和电子邮件发送也在本地工作。
在我的settings.py 文件中,我已经编写了我的 SMTP 托管配置:
EMAIL_HOST = 'SSL0.OVH.NET'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'contact@mywebsite.com'
EMAIL_HOST_PASSWORD = 'mypassword'
这是我的联系功能:
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
sender = form.cleaned_data['sender']
recipients = ['contact@mywebsite.com']
try:
send_mail(subject,message,sender, recipients)
return redirect('myapp:index')
except BadHeaderError:
return HttpResponse('Invalid header found.')
else:
form = ContactForm()
return render(request, 'myapp/form.html', {'form': form})
(我遇到与send_mail('hello','a simple text message', 'me@gmail.com', ['contact@mywebsite.com']) 相同的错误)
我的错误信息:
SMTPDataError at /contact/
(554, b'mail server permanently rejected message (#5.3.0)')
Request Method: POST
Request URL: http://mywebsite.com/contact/
Django Version: 1.7
Exception Type: SMTPDataError
Exception Value: (554, b'mail server permanently rejected message (#5.3.0)')
Exception Location: /usr/lib/python3.2/smtplib.py in sendmail, line 761
Python Executable: /usr/bin/python
Python Version:3.2.3
Python Path:
['/opt/.virtualenvs/my_env/lib/python3.2/site-packages/distribute-0.6.24-py3.2.egg',
'/opt/.virtualenvs/my_env/lib/python3.2/site-packages/pip-1.1-py3.2.egg',
'/var/www/mywebsite',
'/opt/.virtualenvs/my_env/lib/python3.2/site-packages',
'/usr/lib/python3.2',
'/usr/lib/python3.2/plat-linux2',
'/usr/lib/python3.2/lib-dynload',
'/usr/local/lib/python3.2/dist-packages',
'/usr/lib/python3/dist-packages']
非常感谢您的帮助!
更新 我使用 gmail 作为 smtp 服务器获得了成功的结果,所以问题出在 OVH 上? (但这很奇怪,因为同一个OVH邮件帐户的设置相同,我在同一台服务器上的PHP网站没有问题)。我已经联系了他们,会及时通知您。
【问题讨论】:
-
这可能是您的服务器将邮件视为垃圾邮件(参考:e-pyfan.com/content/SMTPDATAERROR1/en)。
标签: python django email web-hosting django-1.7