Django отправляет электронную почту

Я знаю, что есть 20 вопросов, похожих на мои, но я пробовал больше дня, чтобы получить электронную почту для работы с Django.

Я получаю эту ошибку: [Errno 111] Connection refused когда я пытаюсь отправить электронное письмо

Здесь я создаю письмо и пытаюсь отправить его на мой взгляд:

 try: msg = EmailMessage(subject, message, from_email, [receiver]) msg.content_subtype = "html" msg.send() 

Мой файл настроек выглядит следующим образом:

 EMAIL_HOST = "localhost" DEFAULT_FROM_EMAIL = "myemail@gmail.com" EMAIL_PORT = 25 EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" 

Я пробовал выполнить отправку теста с помощью python -m smtpd -n -c DebuggingServer localhost:1025 и имела успех, но когда дело доходит до того, чтобы делать это по-настоящему, успеха нет.

Когда я пытаюсь выполнить send_mail из оболочки, я получаю эту трассировку:

 >>> from django.core.mail import send_mail >>> send_mail('Test', 'Test', 'myemail@gmail.com', ['myemail@gmail.com']) Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/local/lib/python2.6/dist-packages/django/core/mail/__init__.py", line 61, in send_mail connection=connection).send() File "/usr/local/lib/python2.6/dist-packages/django/core/mail/message.py", line 251, in send return self.get_connection(fail_silently).send_messages([self]) File "/usr/local/lib/python2.6/dist-packages/django/core/mail/backends/smtp.py", line 79, in send_messages new_conn_created = self.open() File "/usr/local/lib/python2.6/dist-packages/django/core/mail/backends/smtp.py", line 42, in open local_hostname=DNS_NAME.get_fqdn()) File "/usr/lib/python2.6/smtplib.py", line 239, in __init__ (code, msg) = self.connect(host, port) File "/usr/lib/python2.6/smtplib.py", line 295, in connect self.sock = self._get_socket(host, port, self.timeout) File "/usr/lib/python2.6/smtplib.py", line 273, in _get_socket return socket.create_connection((port, host), timeout) File "/usr/lib/python2.6/socket.py", line 561, in create_connection raise error, msg error: [Errno 111] Connection refused 

Кажется, я ничего не понимаю. Любая помощь или совет будут высоко оценены. благодаря

Кроме того, если есть что-то еще, что вы хотели бы видеть, просто прокомментируйте это.

  • Как заставить SMTPHandler не блокировать
  • Существует ли MTA (агент передачи почты Python)
  • Как отправить электронное письмо нескольким получателям, используя python smtplib?
  • Как отправить почту непосредственно на SMTP-сервер без проверки подлинности?
  • Почему я не могу отправить почту себе, используя python smtplib?
  • Как обрабатывать asyncore внутри класса в python, не блокируя ничего?
  • Нет атрибута «SMTP», ошибка при попытке отправить электронную почту на Python
  • Расширение SMTP AUTH не поддерживается сервером в python 2.4
  • 7 Solutions collect form web for “Django отправляет электронную почту”

    Вы пытаетесь использовать учетную запись gmail? Может быть, попробуй тогда:

     EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = 'your-username@gmail.com' EMAIL_HOST_PASSWORD = 'your-password' EMAIL_PORT = 587 EMAIL_USE_TLS = True 

    Затем попробуйте выполнить тест (django <1.4) на

     python manage.py shell >>> from django.core.mail import send_mail >>> send_mail('test email', 'hello world', to=['test@email.com']) 

    И если вы используете django 1.4, используйте это:

     python manage.py shell >>> from django.core.mail import send_mail >>> send_mail('test email', 'hello world', 'your@email.com', ['test@email.com']) 

    Если вы не используете учетную запись gmail и все еще получаете проблемы, просто попробуйте добавить EMAIL_HOST_USER и EMAIL_HOST_PASSWORD к тому, что у вас есть. Если у вас все еще есть проблемы, возможно, ваша сеть блокирует вас. Брандмауэры на вашей ОС или маршрутизаторе.

    Благодаря knite для обновленного синтаксиса. Бросьте ему +1 и спасибо pranavk за то, что он дал мне знать о синтаксическом изменении в django 1.4

    Сначала создать специальный пароль для приложения

    1. Перейдите на страницу безопасности учетной записи Google .
    2. В поле « 2-Step Verification нажмите « Settings (если ссылка отсутствует, вы можете создать новую, вы можете пропустить шаг 3 и 4).
    3. Нажмите вкладку для App-specific passwords для App-specific passwords .
    4. Нажмите « Manage your application specific passwords .
    5. В разделе « Application-specific passwords » введите описательное имя для приложения, которое вы хотите разрешить, например «Django gmail», затем нажмите « Generate application-specific password кнопку Generate application-specific password .
    6. запишите пароль. например: smbumqjiurmqrywn пароль

    Затем добавьте соответствующие значения в settings.py:

     EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = 'your-username@gmail.com' EMAIL_HOST_PASSWORD = 'Application spectific password(for eg: smbumqjiurmqrywn)' EMAIL_PORT = 587 EMAIL_USE_TLS = True 

    Вы можете использовать оболочку для ее проверки:

     python manage.py shell >>> from django.core.mail import send_mail >>> send_mail('Test', 'This is a test', 'your@email.com', ['toemail@email.com'], fail_silently=False) 

    @mongoose_za имеет отличный ответ, но синтаксис немного отличается от Django 1.4+.

    Вместо:

     send_mail('test email', 'hello world', to=['test@email.com']) 

    использование

     send_mail('test email', 'hello world', 'your@email.com', ['test@email.com']) 

    Требуются первые четыре аргумента: субъект, сообщение, from_email и recipient_list.

    1. Включите pop3 в настройках gmail.
    2. создайте специальный пароль для данного приложения django. (http://support.google.com/accounts/bin/answer.py?hl=en&answer=185833)

    Я бы не стал использовать GMail. Он будет работать для нескольких электронных писем, но после этого вы обнаружите, что все ваши электронные письма отклонены или защищены от спама. Я использовал услугу «SES» от Amazon с Django-SES, чтобы решить эту проблему.

    В settings.py, используйте smtp как backend, а не консоль

     EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 

    поместите следующие минимальные параметры в файл settings.py или local_settings.py на свой сервер.

     EMAIL_HOST = 'localhost' EMAIL_PORT = 587 EMAIL_USE_TLS = True 

    вместо использования smtp.gmail.com, который накладывает множество ограничений, вы можете иметь свой собственный почтовый сервер.

    вы можете сделать это, установив свой собственный почтовый сервер:

     sudo apt-get install sendmail 
    Interesting Posts

    Python ValueError: слишком много значений для распаковки

    Поиск количества раз, когда подстрока существует в строке – Python

    Как запускать команды команд из CMD

    Сокращение Python для нескольких условных выражений в выражении if

    Вызов функции модуля из строки с именем функции

    Запись в текстовое поле easygui как функция выполняется, Python

    «Слишком много значений для распаковки» Исключение

    python – While Loop приводит к сбою всей программы в Tkinter

    Назначение вывода переменной os.system переменной и предотвращение ее отображения на экране

    Как программно выбрать панорамирование / масштабирование в навигации pyqt / matplotlib

    Как я могу использовать python-запрос для захвата ссылки на странице?

    создание совокупного процента из словаря данных

    PhantomJS возвращает пустую веб-страницу (python, Selenium)

    Самый быстрый способ конвертировать файл с latin1 в utf-8 в python

    Панель выполнения текста в консоли

    Python - лучший язык программирования в мире.