В этом очень кратком руководстве я покажу вам, как можно отправлять электронные письма с вложениями, используя учетную запись Google Gmail. Я основал это руководство на своей предыдущей статье Конфигурация сервера Outlook для Python и внес несколько изменений, чтобы они соответствовали целям обработки электронной почты Gmail.
Автоматическая отправка электронных писем с помощью Python может значительно помочь вам оптимизировать ваши приложения. Я сделаю его кратким и понятным, поэтому давайте начнем с импорта некоторых библиотек Python.
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders import os.path
В качестве следующего шага нам нужно написать функцию Python, которая будет обрабатывать весь процесс отправки электронной почты. И поскольку я очень "креативный" парень, я назову это send_email (). Функция имеет 4 аргумента:
- email_recipient как строка
- email_subject как строка
- email_message как строка
- расположение_вложения как строка (необязательный аргумент)
def send_email(email_recipient, email_subject, email_message, attachment_location = ''):
Следующие несколько строк кода в нашей функции будут определять обработку переменных, таких как адрес электронной почты отправителя и состав всего тела электронной почты.
email_sender = ‘your_email_address@your_server.com’ msg = MIMEMultipart() msg[‘From’] = email_sender msg[‘To’] = email_recipient msg[‘Subject’] = email_subject msg.attach(MIMEText(email_message, ‘plain’))
Следующие несколько строк кода позволят нам правильно управлять вложениями файлов.
if attachment_location != '': filename = os.path.basename(attachment_location) attachment = open(attachment_location, "rb") part = MIMEBase('application', 'octet-stream') part.set_payload(attachment.read()) encoders.encode_base64(part) part.add_header('Content-Disposition', "attachment; filename= %s" % filename) msg.attach(part)
И самая последняя часть функции email_send () - это настройка SMPT-сервера Google Gmail и обработка передачи электронной почты. Для правильной работы вам просто нужно добавить данные для входа в строку кода ‘(server.login (‘ your_login_name ’,‘ your_login_password ’)
try: server = smtplib.SMTP('smtp.gmail.com', 587) server.ehlo() server.starttls() server.login('your_login_name', 'your_login_password') text = msg.as_string() server.sendmail(email_sender, email_recipient, text) print('email sent') server.quit() except: print("SMPT server connection error") return True
Чтобы вам было еще проще, вот весь код с примером вызова функции, который вы можете использовать как простое копирование и вставку (не забудьте сначала ввести свои данные для входа в Gmail)
def send_email(email_recipient, email_subject, email_message, attachment_location = ''): email_sender = 'your_email_address@your_server.com' msg = MIMEMultipart() msg['From'] = email_sender msg['To'] = email_recipient msg['Subject'] = email_subject msg.attach(MIMEText(email_message, 'plain')) if attachment_location != '': filename = os.path.basename(attachment_location) attachment = open(attachment_location, "rb") part = MIMEBase('application', 'octet-stream') part.set_payload(attachment.read()) encoders.encode_base64(part) part.add_header('Content-Disposition', "attachment; filename= %s" % filename) msg.attach(part) try: server = smtplib.SMTP('smtp.gmail.com', 587) server.ehlo() server.starttls() server.login('your_login_name', 'your_login_password') text = msg.as_string() server.sendmail(email_sender, email_recipient, text) print('email sent') server.quit() except: print("SMPT server connection error") return True send_email('[email protected]', 'Happy New Year', 'We love Google Gmail', 'C:\Postcard\NYE.gif')
Перед тем, как вы сможете начать использовать этот код, вам нужно будет сделать еще кое-что. Сервер Google Gmail обычно не позволяет использовать сторонние приложения (например, интерпретатор Python) в качестве настройки по умолчанию. Поэтому нам нужно внести некоторые изменения в настройки безопасности вашей учетной записи Gmail.
- Войдите в свою консоль администратора Google.
- На главной странице консоли администратора выберите «Безопасность», а затем «Небезопасные приложения».
- Выберите настройку для менее безопасных приложений:
Разрешить пользователям управлять своим доступом к менее безопасным приложениям
Пользователи могут включать или отключать доступ к менее безопасным приложениям.
Как только вы активировали доступ через сторонние приложения, вы можете начать использовать функцию и наслаждаться свободой Python :-)