Как отправить электронную почту через Gmail с помощью Python?

проекты Python Изучение

В этом кратком совете, взятом из книги «Useful Python», которая показывает, как можно использовать Python для отправки электронных писем через Gmail. Это может быть полезно, например, для отправки отчетов.

При написании сценариев для собственного использования полезно иметь возможность отправлять электронные письма из них. Например, если мы создаем скрипт, который регулярно запускается как запланированная задача, отправка итогового отчета нам по электронной почте после запуска может быть хорошим способом проверить, выполнил ли скрипт то, что предполагалось, а также посмотреть, что он нашел. Что-то, что регулярно загружает данные из HTTP API, а затем обрабатывает их, может отправить нам по электронной почте описание того, что оно обнаружило, чтобы мы могли пойти и прочитать его результаты.

Дополнительные сведения о настройке запланированных задач см. в документации по cron для Windows, macOS или Linux.

Существует множество программных почтовых сервисов, таких как SendGrid, Mandrill и Mailgun. Это полезно, если мы генерируем много электронной почты. У них есть официальные API и платные планы, и если мы настраиваем крупномасштабную операцию, безусловно, стоит подумать о регистрации в одном из этих сервисов и использовании их библиотек Python для отправки электронной почты. Но для чего-то небольшого или личного это может потребовать больших усилий, и есть альтернатива, если у нас есть учетная запись Gmail (как у многих людей).

Существует официальный Google Gmail Python API и модуль, но его установка и использование довольно утомительны. Python поставляется с модулями smtplib и электронной почты как часть встроенной библиотеки, и они прекрасно подходят для отправки электронной почты через Gmail после небольшой настройки. Мы даже можем использовать их для отправки электронной почты от себя к себе. Тем не менее, мы не можем отправлять слишком много писем таким образом. Если мы хотим отправить десятки или сотни электронных писем многим разным получателям, лучше всего изучить программные почтовые службы, упомянутые выше. Но в качестве уведомления по электронной почте после запланированной задачи использование Gmail из Python может быть идеальным личным решением.

Существует официальный Google Gma

Чтобы использовать нашу учетную запись Gmail для отправки электронной почты таким образом, нам сначала нужно настроить пароль приложения для использования нашим скриптом Python. Перейдите к паролям приложений своей учетной записи Google и в разделе «Выбрать приложение» выберите «Почта », а в разделе «Выбор устройства» выберите «Другое» (пользовательское имя) и введите имя (например, «Мой скрипт Python»). Нам будет показан экран со списком нашего нового пароля приложения. Запишите где-нибудь этот пароль.

Читайте также:  Сделать строку анти-палиндромом

Чтобы отправить электронное письмо, мы будем использовать smtplibмодуль. Во-первых, нам нужно определить содержание нашего электронного письма. Эта часть — наша работа. Это строка Python, поэтому мы можем подставлять значения, использовать язык шаблонов или создавать ее из списка; как удобно. Здесь мы будем использовать простой пример:

email_text = f"""
Hi! This is the report from our script.

We have added 1 + 2 and gotten the answer {1+2}.

Bye!
"""

Мы также определим две переменные для хранения сведений о нашей учетной записи Gmail: имя учетной записи (которое является частью нашего адреса Gmail до @gmail.com) и пароль приложения, который мы только что создали:

GMAIL_USERNAME = "mygmailaccount12345"
GMAIL_APP_PASSWORD = "yxyloqscucpxdsxq"

Далее мы создадим сообщение как объект с помощью emailмодуля. Электронное письмо может иметь множество различных свойств, но наиболее важными здесь (в дополнение к тексту тела) являются To, Fromи Subject. Fromбудет установлен на наш адрес Gmail, который мы уже определили, и Toдолжен быть строкой, содержащей адрес электронной почты, на который отправляется электронное письмо. Это может быть наш собственный адрес, и если электронная почта отправляется более чем одному человеку, нам нужно разделить адреса запятыми. Мы определим их в списке, потому что нам понадобится список позже:

recipients = ["sil@kryogenix.org"]
msg = MIMEText(email_text)
msg["Subject"] = "Email report: a simple sum"
msg["To"] = ", ".join(recipients)
msg["From"] = f"{GMAIL_USERNAME}@gmail.com"

Наконец, мы будем использовать smtplibдля подключения к почтовому серверу Gmail, входа в систему с предоставленными нами данными и отправки электронной почты. SMTP — это базовый протокол, который используется для отправки электронной почты. Когда мы отправляем электронное письмо из нашего обычного почтового приложения, SMTP — это то, как приложение на самом деле это делает. Здесь мы делаем это непосредственно из нашего собственного кода:

smtp_server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
smtp_server.login(GMAIL_USERNAME, GMAIL_APP_PASSWORD)
smtp_server.sendmail(msg["From"], recipients, msg.as_string())
smtp_server.quit()

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

Оцените статью
bestprogrammer.ru
Добавить комментарий