Как отправить на почту сообщение: Sorry, this page can’t be found.

руководство для «чайников» / Хабр

В нашем блоге мы много пишем о создании email-рассылок и работе с электронной почтой. В современном мире люди получают множество писем, а у некоторых даже есть несколько почтовых ящиков. Все это усложняет процесс их администрирования, что вынуждает искать пути решения проблемы. Не так давно мы рассказывали о том, как инженер из США упорядочивал свои письма с помощью нейронной сети (1, 2), а сегодня речь пойдет об автоматизации отправки писем для разных почтовых ящиков.

Редактор издания Motherboard Майкл Берн (Michael Byrne) написал материал о том, как отправлять электронные письма для различных почтовых ящиков с помощью Python. Мы представляем вашему вниманию адаптированный перевод этой заметки.

Берн пишет, что у него есть целых пять электронных ящиков: один личный, два университетских и два рабочих. Есть ещё и шестой, который он иногда использует, когда нужно быстро где-то зарегистрироваться. Немалая часть жизни журналиста состоит из быстрого просмотра и сортировки электронных писем, их удаления, добавления в избранное, и даже чтения этих писем и ответа на них.

Берн говорит, что даже не хочет задумываться о том, сколько на все это уходит времени каждый день.

Журналист признается, что однажды в шутку подумал, что ему надо нанять помощника для управления своей электронной почтой. Это, в свою очередь, привело к размышлениям о том, какие указания такому сотруднику надо было бы давать: «Если в письме есть то-то и то-то, сделай одно, или если вот это так, сделай кое-что другое». Это был бы определённый набор правил, применённый к письмам.

Но когда я вижу словосочетание «набор правил», я сразу думаю о написании компьютерных программ. Пролистывая свои письма, я понимаю, что было бы разумно воплотить моего помощника в компьютерном коде.

Тем не менее, чтобы сделать это, необходимо каким-то образом связать электронные ящики с программой для чтения писем. Это делается довольно просто. На самом деле, электронные письма – это набор текстовых протоколов для передачи информации между сетями; как и весь остальной интернет, в общем.

Всё это лишь несколько уровней протоколов. То, как мы представляем себе электронную почту, отображает лишь ее интерфейс.

Даже если вы не хотите создавать сортирующую письма программу, управлять электронными письмами как набором данных довольно интересно. Берн решил использовать для решения задачи Python, так как этот язык действительно хорош для лёгкого и интуитивного создания подобных вещей, и подходит даже для не-программистов. Последующие инструкции частично основаны на главе про автоматизацию электронной почты из книги Эла Свейгарта (Al Sweigart) «Automate the Boring Stuff with Python», которую журналист очень рекомендую и как введение в программирование, и как справочное руководство для тех, кто хочет повеселиться с автоматизацией. Эта книга доступна бесплатно под лицензией Creative Commons на automatetheboringstuff.com.

Для начала потребуется скачать Python (если он еще не установлен). Также потребуется любой простой текстовый редактор. Отлично подойдет Sublime Text — его можно скачать здесь. ST не бесплатный, но в тестовом режиме им можно пользоваться бесконечно, хоть иногда и будет появляться предложение о покупке. Но своих денег он стоит.

Python можно использовать в двух режимах. Первый – это командный интерпретатор, где пользователь вводит команды или сниппеты на Python в консоль, и они сразу же выполняются (например, print(«Hello, World!»)). Второй режим – это скрипты на Python. По сути, это просто набор команд на Python в одном или нескольких файлах, которые могут быть вызваны одновременно из консоли. Фактически, эти файлы – это программы: иногда маленькие и простые (как то, что мы рассмотрим дальше), они могут разрастаться до больших проектов.

Если вы только что скачали Python, вам нужно сделать ещё две вещи перед тем, как начать. Первое: прочтите краткое руководство про написание «Hello, World!» на Python. Второе: уделите пять минут прочтению руководства по использованию модулей в Python. Установка и импорт расширений Python производятся предельно просто.

Итак, начнём.

0) Протоколы для получения почты: краткое руководство

Существуют три основных протокола для работы с электронной почтой. Самый старый из них называется POP (Post Office Protocol). Его суть в том, что программное обеспечение для работы с электронной почтой (не браузер) подключается к удалённому серверу, скачивает письма на компьютер пользователя, и они становятся доступны без подключения к интернету. Это было хорошей идеей в те времена, когда к интернету подключались нечасто, и было нормальным не иметь выхода в Сеть, но в настоящее время такого почти не бывает.

Текущим стандартом доступа к электронным ящикам является протокол IMAP (Internet Message Access Protocol). Он намного быстрее и больше соответствует тому, как интернет используется в наши дни. Он позволяет нескольким пользователям подключаться к одному ящику и поддерживает их соединение в течение всей сессии.
Веб-браузеры получают доступ к электронной почте с помощью дополнительного протокола – HTTP, но в основе лежат всё те же POP и IMAP.

В основном для получения писем с сервера используются POP (актуальная версия POP3) и IMAP. Но для того чтобы отправить письмо, нужен другой протокол – SMTP (Simple Mail Transfer Protocol). Всё потому, что нельзя просто отправить письмо получателю. Его нужно отправить на сервер, с которого получатель это письмо скачает, используя IMAP и POP3.

1) Подключение SMTP-модуля Python

Для начала нам нужен подходящий модуль Python. Smtplib поставляется вместе с Python, поэтому не нужно предпринимать дополнительных действий, достаточно просто ввести эту строку в консоль:

import smtplib

Для получения справки по модулю (и чтобы удостовериться, что он подключился), можно использовать функцию help:

help(smtplib)

Следует отметить, что эта функция работает с любым модулем.

2) Подключение к серверу электронной почты

Прежде всего, нужно создать объект smtplib, который можно рассматривать как некий портал, дающий доступ к подключению и различным инструментам работы с ним из модуля smtplib.

В данном случае функция, возвращающая необходимый объект, принимает два параметра или аргумента. Первый аргумент содержит доменное имя, то есть адрес электронной почты, начинающийся с «smtp», как показано ниже. Второй аргумент – это номер порта, к которому будет осуществляться подключение на сервере электронной почты. Он почти всегда принимает значение 587 в соответствии со стандартом шифрования TLS. Очень редко встречаются сервисы, использующие порт 465.

Итак, нужно написать следующее:

smtpObj = smtplib.SMTP('smtp.gmail.com', 587)

Получается, что переменная smtpObj является объектом типа SMTP. В этом можно убедиться, если ввести имя переменной в консоль и подтвердить ввод. На экране появятся адрес её ячейки памяти и тип (при условии, что вы ввели предыдущую команду правильно). Переменную smtpObj можно назвать, как угодно, лишь бы это было допустимое в Python имя переменной.

3) Шифрование

Следующее, что нужно сделать для установления соединения, это «сказать» SMTP-объекту, что сообщение должно быть зашифровано. Для этого следует ввести в консоль эту строку и нажать Enter:

smtpObj.starttls()

Вот что мы сделали: мы сообщили Gmail, что хотим, чтобы наше соединение шифровалось с помощью протокола TLS (Transport Layer Security), который на сегодняшний день является стандартом для интернет-коммуникаций. Сам по себе TLS не является криптографическим алгоритмом, он скорее сообщает, что необходимо использовать шифрование или соединение не должно быть установлено.

В ответ вы должны получить подтверждение:

2.0.0 Ready to start TLS 

Важный момент — если пропустить этот шаг и сразу перейти к авторизации, то на экране появятся сообщения об ошибках.

Всё потому, что Gmail применяет шифрование с использованием протокола HTTPS, то есть всё тот же НТТР, «обёрнутый» в дополнительный TLS-протокол.

5) Авторизация

Для того чтобы авторизоваться, нужно всего лишь написать

smtpObj.login('[email protected]','just123kidding')

На данном этапе пароль от электронной почты, так сказать, улетает в неизвестность, что довольно опасно. Это не проблема на локальном компьютере, но если вы действительно автоматизируете работу с электронной почтой с помощью скрипта на Python, то нужно проявить осторожность и дважды подумать, прежде чем публиковать код скрипта где-либо или загружать файл с ним на сторонние площадки.

5) Отправка сообщения

Плюс использования сред с командным интерпретатором заключается в том, что даже при отсутствии какой-либо информации — например, описания отправки письма — можно спросить об этом сам интерпретатор.

Для этого нужно просто ввести следующую команду:

help(smtpObj)

Немного поскроллив страницу можно увидеть нужный метод:

Интерпретатор даже выведет пример его использования:

Заметьте, что в примере выше отсутствует команда авторизации. Это связано с тем, что программа подключалась к компьютеру пользователя, а не к удалённому серверу электронной почты. Для нашего случая напишем следующее:

smtpObj.sendmail("[email protected]","[email protected]","go to bed!")

Сработало!

6) Завершение соединения

Для завершения соединения достаточно использовать такую команду:

smtpObj.quit()

Естественно, отправка сообщений – это всего лишь малая часть того, что можно делать с электронной почтой с помощью Python. Берн советует продолжить обучение с книгой Свейгарта, чтобы узнать, как работать с электронной почтой, используя IMAP.

Предупреждаю: кода будет всё так же немного. К утру вы сможете делать с вашей почтой всё, что захотите с помощью скриптов на Python.

И, конечно, нужно понимать, что такая автоматизация должна быть использована лишь для облегчения работы с электронной почтой, а не для заваливания людей ненужным спамом.

Как отправить письмо на почту с помощью Python?

Задать вопрос

Вопрос задан

Изменён 1 год 6 месяцев назад

Просмотрен 4k раз

Подскажите, понадобилось на python отправлять сообщение на почту yandex.
Нашел код, но вылетает ошибка.
Почитал, написано что ошибка может вылетать, так как пароль может быть не в кодировке utf-8.
Пишу в коде для password, addr_from, addr_to это: encode(encoding=’utf-8′) — ноль эмоций.
Подскажите, как тогда исправить ошибку?

import smtplib  # Импортируем библиотеку по работе с SMTP
# Добавляем необходимые подклассы - MIME-типы
from email.mime.multipart import MIMEMultipart  # Многокомпонентный объект
from email.mime.text import MIMEText  # Текст/HTML
addr_from = "[email protected]"
addr_to = "[email protected]"
password = "pass"  # пароль от почты addr_from
msg = MIMEMultipart()  # Создаем сообщение
msg['From'] = addr_from  # Адресат
msg['To'] = addr_to  # Получатель
msg['Subject'] = 'Тема сообщения'  # Тема сообщения
body = "Текст сообщения"
msg.attach(MIMEText(body, 'plain'))  # Добавляем в сообщение текст
server = smtplib.SMTP_SSL('smtp.yandex.ru', 465)  # Создаем объект SMTP
# server.starttls()             # Начинаем шифрованный обмен по TLS
server.login(addr_from, password)  # Получаем доступ
server.send_message(msg)  # Отправляем сообщение
server.quit()  # Выходим

Ошибка:

smtplib. SMTPAuthenticationError: (535, b'5.7.8 Error: authentication failed: This user does not have access rights to this service')
  • python
  • python-3.x
  • email
  • smtp

5

Только что была идентичная ошибка с почтовым акком на yandex для локального гитлаба. Исходя из гугления, обычно связана с использованием фичи, отключенной в настройках yandex аккаунта.

В моём случае помогло включить опцию «Портальный пароль».

Путь к опции:

  1. Нажать на иконку шестерёнки в правом верхнем углу
  2. В выпадающем меню: «Прочие»
  3. На новой странице в списке слева выбрать «Почтовые программы»
  4. Поставить галочку на чекбоксе «Портальный пароль»

Была такая же проблема, тут ответ — https://searchengines.guru/ru/forum/1037543.

Настроить ящик нужно:

перепробовал всякое, решение оказалось не очевидным — помогла простановка галок в настройках ящика, с которого осуществляется отправление: Почта->все настройки->почтовые программы

разрешить доступ к почтовому ящику с помощью почтовых клиентов, раздел imap, я на всякий поставил там все галки в том числе в разделе pop3

1

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Отправка писем в Slack | Slack

NextPrevious

Действия, активность, журналы доступа, доступность, добавление, добавление приложения, добавление участников, добавление в Slack, администраторов, все пароли, аналитика, android, объявление, объявления, каталог приложений, значок приложения, Apple Watch, утверждение приложений, архив, Asana, Atlassian, приложения для автоматизации, значок, платежные данные, выставление счетов, Bitbucket, пользователь бота, поле, просмотр, звонки, звонки:, отмена, изменения, каналы, канал мгновенно, управление каналами, уведомление о канале, предложения каналов ,заявить домены,закрыть,культура компании,экспорт соответствия,составить,компьютеры,разговоры,преобразовать,подключить,подключенные учетные записи,подключение,подключение,копировать сообщения,создать,настроить,настроить,индивидуальный SAML,специализированный,группы поддержки клиентов,экспорт данных, безопасность данных, деактивация, каналы по умолчанию, удаление, удаление, развертывание Slack, рабочий стол, прямые сообщения, каталог, отключение, обнаружение и присоединение, API-интерфейсы обнаружения, отображаемое имя, DM, «Не беспокоить», домен, домены, понижение версии, Dropbox, дубликаты учетных записей ,редактирование,редактирование,образование,адрес электронной почты,электронная почта,эмодзи,смайлики, Enterprise Grid, Enterprise Mobility Management, руководители, экспорт, неудачные платежи, справедливое выставление счетов, часто задаваемые вопросы, поиск, форматирование, форматирование, платформа для приложений, бесплатные пробные версии, общие, начало работы, giphy, интеграция github, организация github, github, глоссарий, google приложения, календарь google, диск google, гости, основные моменты, хипчат, человеческие ресурсы, IFTTT, импорт, входящие веб-хуки, интеграции, ios, приглашение, ИТ-команды, JIRA, присоединиться, не отставать, раскладка клавиатуры, сочетания клавиш, доступ к связке ключей, ключевое слово уведомления, язык, языки, выход, предварительный просмотр ссылок, загрузка, ограничения, ссылки, Linux, Mac, управление рабочей областью, управление приложениями, управление участниками, маркетинг, упоминание, слияние, действия с сообщениями, сообщения отображаются, отображение сообщений, продукты Microsoft, мобильный, мобильный push, перемещение каналов, перемещение рабочих пространств, несколько, отключение звука, имя, имена, шум, некоммерческие организации, уведомление, OneDrive, бортовой, владельцы, пароль, оплата, платежи, разрешения, телефоны, PIN-код, план, планы, плюс план, опросы,основной владелец,политика конфиденциальности,приоритезация задач,частный,частный канал,личные заметки и файлы,проект управление, общедоступный канал, цель, Quick Switcher, цитирование, повторная активация, чтение, набор, информация о реферере, напоминание, удаление, переименование, удержание, запрос новой рабочей области, роль, роли, RSS, продажи, Salesforce, SAML, SCIM, обеспечение SCIM ,программа чтения с экрана,поиск,отправка,длительность сеанса,обмен сообщениями,общий доступ,общий канал,общие каналы,боковая панель,вход,выход,режим регистрации,единый вход,Slack Day,Slack for Teams,Slack уведомления,Сохранить заметки и файлы, соглашения об уровне обслуживания, ServiceNow, регистрация, слабый статус, slackbot, слэш-команды, фрагмент, повтор, разработчики программного обеспечения, звезда, статистика, шаг, синхронизация, планшеты, налоги, потоки, часовой пояс, советы, списки дел ,тема,каналы сортировки,Условия обслуживания,Trello,устранение неполадок,устранение неполадок при получении,тур,твиттер,двухфакторная аутентификация,непрочитанные сообщения,обновления,обновление,загрузка,имя пользователя,группы пользователей,URL,отпуск,Продавец и денежные переводы,видео, голосовой вызов,голос,что есть,что важно,белый список,Windows Phone,Windows,работа в,приложения рабочей области,запросы на создание рабочей области,обнаружение рабочей области,работы настройки темпа, список чудес, ваши действия, Zapier, масштабирование, функции, # общее, хранилище файлов, сообщения, темный режим, тема, построитель рабочих процессов, голос, видео, демонстрация экрана, рабочие процессы, календарь Outlook, приглашенные участники, передача прав собственности, белый список, Управление корпоративными ключами, безопасность транспортного уровня, надежная аутентификация клиентов, CSV, текстовый файл, рабочие часы,

Поиск «[термин]» См. [n]+ больше результатов →

Кто может использовать эту функцию?

  • Все участников (по умолчанию)
  • Доступно на всех планах

Slack поможет вам хранить всю рабочую информацию, включая электронную почту, в одном месте. Есть несколько способов отправить электронное письмо в Slack, в зависимости от вашего плана и того, как вы хотите использовать электронные письма после их отправки в вашу рабочую область.

Как отправить электронное письмо в Slack
Метод Описание Доступность плана
Создайте адрес электронной почты для канала или прямого сообщения (DM) Настройте выделенный адрес электронной почты для отправки писем в этот разговор Платные планы
Использовать надстройку электронной почты Установите надстройку электронной почты, чтобы отправлять отдельные электронные письма из Gmail или Outlook в каналы или DM Все планы
Пересылка электронной почты на ваш DM с помощью Slackbot Создайте адрес пересылки для отправки отдельных электронных писем вашему DM с помощью Slackbot Все планы


Создать адрес электронной почты для канала или прямой переписки

По умолчанию любой может создать адрес электронной почты для канала или прямой переписки. После создания адреса электронной почты для разговора любой, у кого есть адрес электронной почты, может использовать его для отправки электронной почты в Slack.

Примечание: Если вы работаете с людьми из других организаций в каналах, каждая организация может создать уникальный адрес электронной почты для канала. Любое электронное письмо, отправленное на этот канал, будет видно всем участникам.

 

Создайте адрес электронной почты
  1. На рабочем столе откройте канал или DM, на который вы хотите отправить электронное письмо.
  2. Щелкните имя канала или участника в заголовке беседы.
  3. Нажмите Интеграция таб.
  4. Выберите  Отправлять электронные письма на этот [канал] или [цепочку сообщений] .
  5. Нажмите  Получить адрес электронной почты .
  6. Если вы хотите настроить правило автоматической переадресации от поставщика электронной почты или добавить электронное письмо в свою адресную книгу, нажмите Копировать рядом с адресом электронной почты.
  7. Если вы создали адрес электронной почты для канала, Slackbot опубликует сообщение, видимое только вам, с приглашением сообщить участникам, что адрес электронной почты был создан. Нажмите Поделитесь адресом электронной почты , чтобы опубликовать сообщение на канале с любыми подробностями, которые вы хотите. В противном случае нажмите Отклонить .

Примечание: Владельцы и администраторы могут управлять возможностью участников создавать адреса электронной почты для каналов и личных сообщений. Если вы не видите эту опцию, найдите владельца или администратора, чтобы попросить о помощи.

 

Настроить внешний вид электронной почты

При желании вы можете добавить изображение и собственное имя для сообщений электронной почты, публикуемых в Slack, чтобы людям было легче их распознавать.

  1. На рабочем столе откройте канал или DM с адресом электронной почты.
  2. Щелкните имя канала или участника в заголовке беседы.
  3. Перейдите на вкладку Интеграция .
  4. Выберите  Отправлять электронные письма на этот [канал] или [цепочку сообщений] .
  5. Нажмите   Настроить внешний вид электронной почты .
  6. Под значком электронной почты откройте раскрывающееся меню, чтобы загрузить изображение, или выберите смайлик, который будет отображаться вместе с электронными письмами, отправленными в Slack.
  7. Ниже Имя электронной почты введите метку для ваших электронных писем.
  8. Щелкните Сохранить изменения .


Удалить адрес электронной почты

Владельцы, администраторы и участники с разрешением на создание адресов электронной почты для разговоров могут удалить адрес электронной почты для любого канала или DM, частью которого они являются. Если адрес электронной почты разговора удален, письма, отправленные на него, не будут публиковаться в Slack.

  1. С рабочего стола откройте канал или DM.
  2. Щелкните имя канала или участника в заголовке беседы.
  3. Перейдите на вкладку Интеграция .
  4. Выберите  Отправлять электронные письма на этот [канал] или [диалог ] .
  5. Под адресом электронной почты нажмите Удалить адрес .
  6. Нажмите Удалить адрес электронной почты для подтверждения.


Используйте надстройку электронной почты

Gmail

Outlook

Отправить письмо в Slack
  1. Перейдите на страницу Slack для Gmail в Google Workspace Marketplace, чтобы установить надстройку Slack для Gmail. Если вам не удается установить надстройку, попросите администратора Google Workspace в вашей компании утвердить Slack для Gmail из консоли администратора Google Workspace.
  2. После установки надстройки щелкните значок Slack на правой боковой панели, чтобы подключить свою учетную запись Gmail к Slack. При появлении запроса откройте электронное письмо и нажмите Подключиться к Slack .
  3. Чтобы отправить электронное письмо в Slack, щелкните значок Slack на правой боковой панели и выберите Поиск каналов и людей . Выберите рабочую область в раскрывающемся меню, затем введите имя канала или человека и нажмите . Введите или , выберите его имя .
  4. Нажмите Отправить на [имя] . Нажмите Посмотреть , чтобы увидеть свою электронную почту в Slack.


Отключить Gmail и Slack
  1. Перейдите на Google Workspace Marketplace.
  2. Щелкните Управление приложениями .
  3. Найдите Slack, затем выберите Управление .
  4. Щелкните Удалить .

Совет:  Если вы не используете Google Workspace, вы можете удалить надстройку из раздела Дополнения в настройках Gmail.

Чего ожидать
  • Надстройка электронной почты Outlook доступна только для Office 365. Она не поддерживается для локальных клиентов Microsoft Exchange.
  • Поддерживается только почтовый протокол Exchange, поэтому вы не сможете использовать надстройку, если ваш клиент Outlook настроен на получение сообщений по протоколу POP/IMAP.
  • Локальные установки SharePoint или планы Office 365, размещенные в национальном облаке Майкрософт (включая Office 365 для государственных организаций США, Office 365 в Германии и Office 365 под управлением 21Vianet в Китае), в настоящее время не поддерживаются.


Отправить письмо в Slack
  1. Перейдите на страницу Slack для Outlook в Microsoft AppSource. Нажмите Получить сейчас и следуйте инструкциям. Если вам не удается установить надстройку самостоятельно, обратитесь за помощью к администратору Office 365 в вашей компании.
  2. После установки надстройки подключите Outlook к рабочей области Slack. Если вы используете настольное приложение Outlook, щелкните значок Slack на панели инструментов и выберите Подключиться к Slack . Если вы используете Outlook в браузере, откройте сообщение электронной почты и щелкните значок 9.0142   значок с тремя точками , затем выберите Slack для Outlook .
  3. Чтобы отправить электронное письмо в Slack из настольного приложения Outlook, откройте электронное письмо и щелкните значок Slack, чтобы выбрать имя канала или человека в раскрывающемся меню. Нажмите Отправить в Slack , чтобы отправить электронное письмо.
  4. Чтобы отправить электронное письмо в Slack из Outlook в браузере, откройте электронное письмо и щелкните значок с тремя точками   и выберите Отправить в Slack . Выберите имя канала или человека в раскрывающемся меню, затем нажмите Отправить в Slack .

Примечание: Если у вас возникли проблемы с подключением Slack и Outlook, попробуйте использовать Google Chrome или Mozilla Firefox, а затем перезапустите настольное приложение Outlook.

Отключить Outlook и Slack
  1. Войдите в настольное приложение Outlook.
  2. Щелкните Получить надстройки с панели инструментов.
  3. Нажмите Мои надстройки .
  4. Найдите Slack для Outlook и щелкните значок с тремя точками   .
  5. Щелкните Удалить .


Настройте адрес пересылки Slackbot
  1. На рабочем столе щелкните изображение своего профиля в правом верхнем углу.
  2. Выберите Предпочтения в меню.
  3. Нажмите Сообщения и мультимедиа .
  4. Прокрутите вниз до Перенесите электронные письма в Slack , затем нажмите Получить адрес для пересылки . Slack создаст адрес электронной почты для пересылки.
  5. Нажмите Скопируйте и используйте адрес пересылки, чтобы настроить правило переадресации в почтовом клиенте, если хотите.

Если вам нужно прекратить переадресацию электронной почты, перейдите в раздел Сообщения и мультимедиа ваших предпочтений. Под вашим адресом переадресации нажмите Отключить этот адрес .

Примечание: Если электронные письма, которые вы отправляете в Slack, не доставляются, входящие электронные письма могут быть отключены для вашей рабочей области или организации. Найдите владельца или администратора, чтобы попросить о помощи.

Отправка электронной почты | Документация Django

Хотя Python предоставляет интерфейс отправки почты через smtplib module, Django предоставляет несколько легких оболочек над ним. Эти обертки предоставляется, чтобы сделать отправку электронной почты очень быстрой, чтобы помочь протестировать отправку электронной почты во время разработки и для обеспечения поддержки платформ, которые не могут использовать SMTP.

Код находится в модуле django.core.mail .

Краткий пример

В две строки:

 из django.core.mail импортировать send_mail
Отправить письмо(
    'Тема здесь',
    'Вот сообщение.',
    'от@example.com',
    ['[email protected]'],
    fail_silently = Ложь,
)
 

Почта отправляется с использованием хоста SMTP и порта, указанных в EMAIL_HOST и EMAIL_PORT настройки. EMAIL_HOST_USER и EMAIL_HOST_PASSWORD настройки, если set, используются для аутентификации на SMTP-сервере, а EMAIL_USE_TLS и EMAIL_USE_SSL настройки управляют тем, используется защищенное соединение.

Примечание

Набор символов электронной почты, отправленный с django.core.mail , будет установлен на значение вашего параметра DEFAULT_CHARSET .

send_mail()
send_mail ( тема , сообщение , from_email , список_получателей , fail_silently = False , auth_user = None , auth_user_password = None , , 0143, соединение=Нет , html_message=Нет )[источник]

В большинстве случаев вы можете отправить электронную почту, используя django. core.mail.send_mail() .

Тема , сообщение , from_email и Receiver_list параметры необходимы.

  • субъект : Строка.
  • сообщение : Строка.
  • from_email : Строка. Если Нет , Django будет использовать значение Настройка DEFAULT_FROM_EMAIL .
  • получатель_список : Список строк, каждая из которых является адресом электронной почты. Каждый член списка получателей увидит других получателей в поле «Кому:» поле сообщения электронной почты.
  • fail_silently : логическое значение. Когда это False , send_mail() поднимет smtplib.SMTPException в случае возникновения ошибки. См. smtplib документы для списка возможных исключений, все из которых являются подклассами Исключение SMTPException .
  • auth_user : необязательное имя пользователя для аутентификации на SMTP сервер. Если это не указано, Django будет использовать значение EMAIL_HOST_USER настройка.
  • auth_password : Необязательный пароль для аутентификации на SMTP-сервер. Если это не указано, Django будет использовать значение EMAIL_HOST_PASSWORD настройка.
  • соединение : Дополнительный сервер электронной почты, используемый для отправки почты. Если не указано, будет использоваться экземпляр бэкенда по умолчанию. См. документацию по бэкэндам электронной почты. Больше подробностей.
  • html_message : если указано html_message , результирующее электронное письмо будет multipart/alternative электронная почта с сообщением в качестве text/plain тип содержимого и html_message в качестве text/html тип содержимого.

Возвращаемое значение будет количеством успешно доставленных сообщений (которые может быть 0 или 1 , так как он может отправить только одно сообщение).

send_mass_mail()
send_mass_mail ( datatuple , fail_silently = False , auth_user = None , auth_password = None , connection = None ) [37] 904

django.core.mail.send_mass_mail() предназначен для обработки массовой рассылки по электронной почте.

datatuple — это кортеж, в котором каждый элемент имеет следующий формат:

 (тема, сообщение, from_email, список_получателей)
 

сбой_молча , auth_user и auth_password имеют одинаковые функции как в send_mail() .

Каждый отдельный элемент кортежа данных приводит к отдельному сообщению электронной почты. Как и в send_mail() , получатели в одном и том же получатель_список все увидят другие адреса в сообщениях электронной почты Поле «Кому:».

Например, следующий код отправит два разных сообщения на два разных набора получателей; однако только одно подключение к почтовый сервер будет открыт:

 message1 = ('Тема здесь', 'Вот сообщение', 'from@example. com', ['[email protected]', '[email protected]'])
message2 = ("Другая тема", "Вот еще одно сообщение", "[email protected]", ['[email protected]'])
send_mass_mail((сообщение1, сообщение2), fail_silently=False)
 

Возвращаемое значение будет числом успешно доставленных сообщений.

send_mass_mail() и send_mail()

Основное различие между send_mass_mail() и send_mail() это то send_mail() открывает соединение с почтовым сервером каждый раз, когда он выполняется, в то время как send_mass_mail() использует одно соединение для всех его сообщений. Это делает send_mass_mail() немного эффективнее.

mail_admins()
mail_admins ( тема , сообщение , fail_silently=False , соединение=нет , html_message=нет )[источник]

django.core.mail.mail_admins() — это ярлык для отправки электронной почты на администраторы сайта, как определено в настройке ADMINS .

mail_admins() добавляет к теме префикс со значением Параметр EMAIL_SUBJECT_PREFIX , который по умолчанию равен "[Django] " .

Заголовок «От:» электронной почты будет значением SERVER_EMAIL настройка.

Этот метод существует для удобства и удобочитаемости.

Если указано html_message , результирующее электронное письмо будет multipart/alternative электронная почта с сообщением в качестве text/plain тип содержимого и html_message в качестве text/html тип содержимого.

mail_managers()
mail_managers ( тема , сообщение , fail_silently=False , соединение=нет , html_message=нет )[источник]

django.core.mail.mail_managers() аналогичен mail_admins() , за исключением того, что отправляет электронное письмо менеджерам сайта, как определено в МЕНЕДЖЕРЫ параметр.

Примеры

Это отправляет одно электронное письмо на адреса [email protected] и [email protected] вместе с ними оба появляются в «Кому:»:

 send_mail(
    'Предмет',
    'Сообщение.',
    'от@example.com',
    ['[email protected]', '[email protected]'],
)
 

Это отправляет сообщение на адреса [email protected] и [email protected] с обоими получение отдельного письма:

 datatuple = (
    ('Тема', 'Сообщение.', '[email protected]', ['[email protected]']),
    ('Тема', 'Сообщение.', '[email protected]', ['[email protected]']),
)
send_mass_mail (данные)
 

Серверные части электронной почты

Фактическая отправка электронной почты обрабатывается серверной частью электронной почты.

Класс серверной части электронной почты имеет следующие методы:

  • open() создает долгоживущее соединение для отправки электронной почты.
  • close() закрывает текущее соединение для отправки электронной почты.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *