Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 28, 2016 17:37:13

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка электронных писем

Здравствуйте? Помогите пожалуйста разобраться с отправкой электронных писем в Django.

Я создал файл

management/commands/testsend.py:

from django.core.mail import send_mail
send_mail('subj', 'message', 'from@mail.ru', ['megoloman@ukr.net'])


Затем в конфигах добавил:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = 'user@domain.com'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'user@domain.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = 587


Но после запуска
python manage.py testsend
происходит ошибка:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 75, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/pc2/megoloman/realtyboard/board/management/commands/testprint.py", line 14, in <module>
    send_mail('subj', 'message', 'from@mail.ru', ['megoloman@ukr.net'])
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/mail/__init__.py", line 50, in send_mail
    connection=connection).send()
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/mail/message.py", line 255, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 88, in send_messages
    new_conn_created = self.open()
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 49, in open
    local_hostname=DNS_NAME.get_fqdn())
  File "/usr/lib/python2.7/smtplib.py", line 256, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 316, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket
    return socket.create_connection((host, port), timeout)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 111] Connection refused



Офлайн

#2 Апрель 28, 2016 19:06:10

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Отправка электронных писем

С сервером соединиться не может - проверяйте почему.
Еще важно чтобы имя отправителя совпадало c EMAIL_HOST_USER

Офлайн

#3 Апрель 29, 2016 10:27:46

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка электронных писем

Изменил, появилась другая ошибка:


Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/base.py", line 324, in handle
    raise NotImplementedError()
NotImplementedError

Офлайн

#4 Апрель 29, 2016 11:28:12

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2586
Репутация: +  60  -
Профиль   Отправить e-mail  

Отправка электронных писем

from django.core.mail import send_mail
send_mail('Subject here', 'Here is the message.', 'from@example.com',
    ['to@example.com'], fail_silently=False)



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Апрель 29, 2016 11:42:46

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка электронных писем

Если указывать

fail_silently=False
, то появляется изначальная ошибка:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 75, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/pc2/megoloman/realtyboard/board/management/commands/test_send.py", line 7, in <module>
    class Command(BaseCommand):
  File "/home/pc2/megoloman/realtyboard/board/management/commands/test_send.py", line 15, in Command
    send_mail('test message', 'At laaaaaaaast!!!!', 'noreply@ci.ua', ['megoloman@ukr.net'], fail_silently=False)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/mail/__init__.py", line 50, in send_mail
    connection=connection).send()
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/mail/message.py", line 255, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 88, in send_messages
    new_conn_created = self.open()
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 49, in open
    local_hostname=DNS_NAME.get_fqdn())
  File "/usr/lib/python2.7/smtplib.py", line 256, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 316, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket
    return socket.create_connection((host, port), timeout)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 111] Connection refused


А если указывать
fail_silently=True
, то появляется следующая ошибка:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/home/pc2/.virtualenvs/megoloman/local/lib/python2.7/site-packages/django/core/management/base.py", line 324, in handle
    raise NotImplementedError()
NotImplementedError

Офлайн

#6 Апрель 29, 2016 11:51:26

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Отправка электронных писем

Если в питоне юзать smtplib, то при подключении к гуглу, указывать почту нужно без @gmail.com. может и здесь так же нужно?
Например

EMAIL_HOST_USER = 'username'

Офлайн

#7 Апрель 29, 2016 11:53:32

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка электронных писем

Попробовал, те же ошибки остались

Офлайн

#8 Апрель 29, 2016 12:16:10

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Отправка электронных писем

А если порт поменять на 25?

Офлайн

#9 Апрель 29, 2016 12:24:47

megoloman
Зарегистрирован: 2015-10-26
Сообщения: 113
Репутация: +  0  -
Профиль   Отправить e-mail  

Отправка электронных писем

Все равно не помогает, на текущей момент у меня следующие настройки:

settings.py:

EMAIL_HOST = 'localhost'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'noreply'
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
DEFAULT_FROM_EMAIL = 'noreply@ci.ua'


testsend.py:

# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand, CommandError
from django.core.mail import send_mail
class Command(BaseCommand):
    send_mail('test message', 'At laaaaaaaast!!!!', 'noreply@ci.ua', ['megoloman@ukr.net'], fail_silently=True)

Офлайн

#10 Май 1, 2016 00:10:55

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2586
Репутация: +  60  -
Профиль   Отправить e-mail  

Отправка электронных писем

telnet smtp.gmail.com 587
что говорит?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version