Khi tôi thử gửi qua ./manage.py, phải mất vài phút để gửi một email. Khi tôi cố gắng gửi email xác minh người dùng sau khi gửi biểu mẫu trong trình duyệt, trình duyệt sẽ hết thời gian với 504, nhưng email cuối cùng cũng được gửi. Điều gì có thể xảy ra?Django send_mail thông qua gmail rất chậm
settings.py
...
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
EMAIL_HOST_PASSWORD = os.environ.get('PASSWORD')
...
views.py
class SignUpView(CreateView):
model = User
template_name = 'eventMap/register.html'
form_class = RegistrationForm
success_url="/"
def form_valid(self, form):
form.save()
username = form.cleaned_data['username']
email = form.cleaned_data['email']
salt = hashlib.sha1(str(random.random())).hexdigest()[:5]
activation_key = hashlib.sha1(salt+email).hexdigest()
key_expires = datetime.datetime.today() + datetime.timedelta(2)
#Get user by username
user=User.objects.get(username=username)
# Create and save user profile
new_profile = UserProfile(user=user, activation_key=activation_key,
key_expires=key_expires)
new_profile.save()
# Send email with activation key
email_subject = 'Account confirmation'
email_body = "Hey %s, thanks for signing up. To activate your account, click this link within \
48hours http://mywebsite.com/accounts/confirm/%s" % (username, activation_key)
send_mail(email_subject, email_body, '[email protected]',
['[email protected]'], fail_silently=False)
return super(SignUpView, self).form_valid(form)
Tôi đã xem qua bài viết này về một cái gì đó tương tự nhưng các bản ghi không đề cập đến bất cứ điều gì về một hostname vv không đủ tiêu chuẩn /var/log /mail.log
Jul 27 16:26:04 django postfix/qmgr[5975]: CAF7C1226F2: from=<>, size=3063, nrcpt=1 (queue active)
Jul 27 16:26:34 django postfix/smtp[12874]: connect to example.com[2606:2800:220:1:248:1893:25c8:1946]:25: Connection timed out
Jul 27 16:27:04 django postfix/smtp[12874]: connect to example.com[93.184.216.34]:25: Connection timed out
Jul 27 16:27:04 django postfix/smtp[12874]: CAF7C1226F2: to=<[email protected]>, relay=none, delay=368178, delays=368118/0.02/60/0, dsn=4.4.1, status=deferred (connect to example.com[93.184.216.34]:25: Connection timed out)
Tôi cũng gặp sự cố này. Sử dụng codebase từ django 1.6, email được gửi trong vài giây, cùng mã cơ sở trên django 1.8 mất 1-5 phút. Tôi quyết định chỉ cần mở một chuỗi mới để giải quyết vấn đề. Đây là mã tôi đang sử dụng https://github.com/ui/django_asynchronous_send_mail – arctelix