我正在尝试在views.py 文件中的函数中发送电子邮件。我已按照与此处相同的方式在我的设置文件中设置了电子邮件。
Python Django Gmail SMTP 设置 https://stackoverflow.com/questions/19264907/python-django-gmail-smtp-setup
电子邮件发送确实有效,但需要几分钟才能发生,这是我的用户一直抱怨的。我在 var/log/mail.log 文件中收到 gethostbyaddress 错误,我将在此处发布该错误。我曾经遇到过 nginx 超时错误,但输入了“proxy_read_timeout 150;”进入我的 /etc/nginx/sites-enabled/django 文件。
http://www.nginxtips.com/upstream-timed-out-110-connection-timed-out-while-reading-response-header-from-upstream/ http://www.nginxtips.com/upstream-timed-out-110-connection-timed-out-while-reading-response-header-from-upstream/
这解决了与网站交互时的超时错误,但电子邮件仍然需要几分钟才能加载。我正在使用 digitalocean django Droplet,并且我所有的 Droplet 都出现这种缓慢的速度。
这是我的视图功能
@login_required
def AnnouncementPostView(request, leaguepk):
league = League.objects.get(pk=leaguepk)
lblog = league.blog
if request.method == 'POST':
form = AnnouncementPostForm(request.POST)
if form.is_valid():
posttext = request.POST['text']
newAnnouncement = Announcement(text=posttext, poster=request.user)
newAnnouncement.save()
lblog.announce.add(newAnnouncement)
titleText = "%s Announcement" % (league.name)
send_mail(titleText, posttext, settings.EMAIL_HOST_USER, ['[email protected] /cdn-cgi/l/email-protection'], fail_silently=False)
return HttpResponseRedirect(reverse('league-view', args=[league.pk]))
else:
form = AnnouncementPostForm()
return render(request, 'simposting/announcementpost.html', {'form': form, 'league': league})
这已经奏效了,公告被发布到所需的页面,甚至通过电子邮件发送,这只是一个时间问题,人们已经开始期望几乎即时的电子邮件处理,这使得 2-3 分钟是不可接受的,尤其是在注册时也会导致 2-等3分钟。
一个问题可能是,在尝试与 DigitalOcean 支持团队解决此问题时,我将我的 Droplet 名称和主机名更改为我设置的域。
我当前的主机名和 Droplet 名称是 mydomain.com。我在 /etc/hostname 文件中以这种方式设置。我的 /etc/hosts 文件如下所示
127.0.0.1 localhost.localdomain localhost mydomain.com
127.0.1.1 mydomain.com
每当我尝试发送邮件时,我的 var/log/mail.log 文件都会对此做出响应
Oct 6 16:13:24 "oldDropletName" sm-mta[13660]: gethostbyaddr(10.xxx.xx.x) failed: 1
Oct 6 16:13:24 "oldDropletName" sm-mta[13662]: starting daemon (8.14.4): SMTP+queueing@00:10:00
我希望这些信息足以提供帮助,这已经困扰了几个星期,通常我可以通过在这里查找内容或与支持团队合作来解决我的问题,但这让我们陷入困境。感谢您抽出时间来提供帮助!