Django [Errno 110] Connection timed out при отправке письма send_mail()
Такая проблема, во время отправки емэйла вылезает ошибка [Errno 110] Connection timed out, все работало на локальном сервере, а когда задеплоил перестало.
Сначала думал что-то с Celery, два дня прошерстил и ничего не нашел.
Потом решил что буду просто отправлять мэйлы без таск менеджера, но не тут то было!
Вот Traceback:
Traceback (most recent call last):
File "/home/kirill/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/home/kirill/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/kirill/bauer_dress/orders/views.py", line 46, in order_create
order_created(order.id)
File "/home/kirill/venv/lib/python3.8/site-packages/celery/local.py", line 188, in __call__
return self._get_current_object()(*a, **kw)
File "/home/kirill/venv/lib/python3.8/site-packages/celery/app/task.py", line 388, in __call__
return self.run(*args, **kwargs)
File "/home/kirill/bauer_dress/orders/tasks.py", line 22, in order_created
mail_sent = send_mail(subject, None, settings.EMAIL_HOST_USER, [order.email, settings.MAIL], html_message=html)
File "/home/kirill/venv/lib/python3.8/site-packages/django/core/mail/__init__.py", line 61, in send_mail
return mail.send()
File "/home/kirill/venv/lib/python3.8/site-packages/django/core/mail/message.py", line 284, in send
return self.get_connection(fail_silently).send_messages([self])
File "/home/kirill/venv/lib/python3.8/site-packages/django/core/mail/backends/smtp.py", line 102, in send_messages
new_conn_created = self.open()
File "/home/kirill/venv/lib/python3.8/site-packages/django/core/mail/backends/smtp.py", line 62, in open
self.connection = self.connection_class(self.host, self.port, **connection_params)
File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python3.8/smtplib.py", line 339, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python3.8/smtplib.py", line 308, in _get_socket
return socket.create_connection((host, port), timeout,
File "/usr/lib/python3.8/socket.py", line 808, in create_connection
raise err
File "/usr/lib/python3.8/socket.py", line 796, in create_connection
sock.connect(sa)
Exception Type: TimeoutError at /orders/create/
Exception Value: [Errno 110] Connection timed out
Параметры хоста, порта, юзера и пароль в настройках есть. Использую почту гугла
Функция отправки письма:
def order_created(order_id):
"""
Task for sending mail if order created
"""
order = Order.objects.get(id=order_id)
subject = 'Заказ #{}'.format(order.id)
html = loader.render_to_string('orders/order/mail2.html', context={
'order': order})
send_mail = send_mail(subject, None, settings.EMAIL_HOST_USER, [order.email, settings.MAIL], html_message=html)
return send_mail
Вьюха в которой вызыватеся ф-ция отправки письма:
def order_create(request):
#initializing cart
cart = Cart(request)
#form for coupon
coupon_apply_form = CouponApplyForm()
if request.method == 'POST':
form = OrderCreateForm(request.POST)
if form.is_valid():
order = form.save(commit=False)
#if coupon is in cart we take coupon's discount and apply to order
if cart.coupon:
order.coupon = cart.coupon
order.discount = cart.coupon.discount.value
order.save()
for item in cart:
OrderItem.objects.create(order=order,
product=item['product'],
product_set=item['product_set'],
price=item['product_set'].price,
quantity=item['quantity'],
size = item['product_set'].size_set,
color = item['color'])
#subscribe user to our news
try:
Subscription.objects.get(email=order.email)
except ObjectDoesNotExist:
Subscription.objects.create(name=order.first_name, surname=order.last_name, email=order.email)
order_created(order.id) #send email
cart.clear() #clear cart
if cart.coupon:
cart.clear_coupon()
return render(request, 'orders/order/created.html', {'order': order})
else:
form = OrderCreateForm()
return render(request, 'orders/order/create_v2.html', {'cart': cart,
'form': form,
'coupon_apply_form': coupon_apply_form})