Рубрики
Без рубрики

Как отправлять электронные письма с Python

Отправка электронного письма с Python Отправка электронной почты – очень распространенная задача в любой системе. Вы, вероятно, … помечены с пифтонтуриальными, Python, Pythonsmtplib, Учебник.

Отправка электронного письма с Python

Отправка электронной почты – очень распространенная задача в любой системе. Вы, вероятно, нашли это руководство, потому что вы хотите отправить электронные письма с помощью Python. В этом руководстве мы узнаем, как отправлять электронные письма и без привязанности/HTML содержимого в Python.

После завершения учебника я объединил весь пример кода к одному красивому CLI. Проверьте Репозиторий проекта Чтобы получить полный код примера, и вы можете увидеть красивый CLI, как показано ниже:

Отправка электронной почты с Python CLI

Начиная

Чтобы начать работу с учебником, мы должны настроить SMTP-сервер и войдите в систему, чтобы отправить электронную почту. Для целей обучения у нас есть два варианта SMTP-сервера, которые являются локальным SMTP-сервером или подключитесь к стороннему SMTP-сервису. В этом посте мы будем использовать Gmail SMTP, если вы хотите использовать другую услугу, такую как Outlook, MailChimp и т. Д., Просто оставьте комментарий, чтобы сообщить нам.

1. Запустите локальный SMTP-сервер

Для отладки Python предлагает нам инструмент для запуска локального SMTP, который установлен вместе с Python. Используя SMTPD Мы запустим локальный SMTP-сервер. Сервер не отправит электронное письмо в Интернет. Вместо этого он будет распечатать электронное письмо на вашу консоль.

Откройте консоль/терминал и выполните команду ниже, чтобы запустить локальный SMTP-сервер:

python -m smtpd -c DebuggingServer -n localhost:1025

2. Настройка учетной записи Gmail

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

Создание безопасного подключения к Gmail SMTP

Всякий раз, когда подключение к Gmail SMTP, убедитесь, что мы всегда используем безопасное соединение. С помощью безопасного соединения ваше сообщение и учетные данные будут зашифрованы, поэтому другие ребята не легко связаны с вашей конфиденциальной информацией.

Gmail SMTP позволяет устанавливать безопасное соединение с использованием SSL (Secure Sockets Layer) или TLS (безопасность транспортных слоев) протокола. После этого smtplib Модуль также дает нам два способа подключения к любому SMTP-сервису с протоколом SSL/TLS, используя Smtp_ssl () и .starttls () Отказ

Использование протокола SSL.

Ниже приведен код примера того, как установить соединение SSL на SMTP-сервер. Gmail SMTP-сервер – smtp.gmail.com. и порт SSL по умолчанию составляет 465

Убедитесь, что вы изменили » test@pethongeeks.net.net. ” на вашем собственном электронном письме

import smtplib, ssl

context = ssl.create_default_context()
password = input("Your password: ")
with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server:
    server.login("test@pythongeeks.net", password)
    # TODO: Sending your email here

Использование протокола TLS

Чтобы настроить TLS-соединение, мы сначала настроим необеспеченное SMTP-соединение. После этого зашифровать необеспеченное соединение с помощью .starttls () Отказ Он сильно отличается от SSL, пока мы напрямую устанавливаем защищенную связь.

import smtplib, ssl

password = input("Your password: ")
context = ssl.create_default_context()
with smtplib.SMTP("smtp.gmail.com", 587) as server:
    server.starttls(context=context) # Secure the connection with TLS
    server.login("test@pythongeeks.net", password)
    # TODO: Sending your email here

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

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

Мы поставим функцию .Отправить почту () Именно в положении Todo в приведенном выше примере TODO: отправка вашего письма здесь

body = """
    Hi there,

    This message is sent from Python Geeks.
    Have a good day!
"""

server.sendmail(from_email, to_email, body)

По электронной почте с содержимым HTML

Большую часть времени, когда вы отправляете электронное письмо, вы хотели бы отправить необычную почту. Иногда он содержит красивый HTML, иногда у него есть вложение. Как разработчик Backend, нам даже приходится иметь дело с функцией, отправив маркетинговую почту подписчикам списка. Чтобы иметь дело с этим, Python дает нам Email модуль.

Прежде всего, мы используем оба Email Модуль и smtplib Модуль для отправки электронного письма с содержимым HTML.

import smtplib, ssl

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

password = input("Your password: ")
context = ssl.create_default_context()

msg = MIMEMultipart('alternative')
msg['Subject'] = "[Python Geeks] Sending Email With Python"
msg['From'] = "test@pythongeeks.net"
msg['To'] = "receiver@pythongeeks.net"
# Plain-text version of content
plain_text = """\
    Hi there,
    This message is sent from Python Geeks.
    Visit us here https://pythongeeks.net
    Have a good day!
"""
# html version of content
html_content = """\
    
    
    
        

Hi there,

This message is sent from Python Geeks.

Visit us here Python Geeks

""" text_part = MIMEText(plain_text, 'plain') html_part = MIMEText(html_content, 'html') msg.attach(text_part) msg.attach(html_part) with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server: server.login("test@pythongeeks.net", password) server.send_message(msg)

В этом примере мы создаем MimemultiPART («Альтернатива») сообщение. Это означает, что мы создаем сообщение электронной почты в рамках простой текстовой версии и альтернативной версии – HTML-версия. Следовательно, мы определили двухчазную контент отдельно и прикрепите его к главному сообщению с помощью .прикреплять()

Примечание. Быть замечена, что вам нужно заменить учетную запись входа ( test@pethongeeks.net.net. ) самостоятельно.

По электронной почте с приложением

После отправки HTML-адреса электронной почты мы хотели бы попробовать больше, прикрепив электронное письмо на это письмо, прежде чем отправлять его. Код ниже покажет вам, как иметь дело с приложением:

import mimetypes
import smtplib, ssl

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

password = input("Your password: ")
context = ssl.create_default_context()

msg = MIMEMultipart('alternative')
msg['Subject'] = "[Python Geeks] Sending Email With Python"
msg['From'] = "test@pythongeeks.net"
msg['To'] = "receiver@pythongeeks.net"
# Plain-text version of content
plain_text = """\
    Hi there,
    This message is sent from Python Geeks.
    Visit us here https://pythongeeks.net
    Have a good day!
"""
# html version of content
html_content = """\
    
    
    
        

Hi there,

This message is sent from Python Geeks.

Visit us here Python Geeks

""" text_part = MIMEText(plain_text, 'plain') html_part = MIMEText(html_content, 'html') msg.attach(text_part) msg.attach(html_part) # Define MIMEImage part # Remember to change the file path file_path = '../assets/level_up_your_python.png' ctype, encoding = mimetypes.guess_type(file_path) maintype, subtype = ctype.split('/', 1) with open(file_path, 'rb') as fp: img_part = MIMEImage(fp.read(), _subtype=subtype) # Set the filename for the attachment img_part.add_header('Content-Disposition', 'attachment', filename='level_up_your_python') msg.attach(img_part) with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server: server.login("test@pythongeeks.net", password) server.send_message(msg)

В примере мы легко прикрепите изображение для электронной почты, используя MimeImage Отказ Мы также прилагаем множество типов файлов в электронном письме. Например, используя Мимедио Для аудиофайла или MimeBase для данных базового64.

Резюме

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

  • Использование smtplib Чтобы настроить SMTP-соединение в протоколе SSL/TLS.
  • Используя Email Модуль, особенно MimemUltiPART, мы можем хорошо иметь дело с сложными электронными письмами, такими как вложение или содержимое HTML.

Для получения дополнительных учебников Python, пожалуйста, посетите наши Учебники Python Страница и наслаждайтесь и поделиться и поделись этим с другими гутонами-гиками.

использованная литература

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

Пост Отправка электронного письма с Python появился первым на Python Geeks Отказ

Оригинал: “https://dev.to/thepythongeeks/how-to-send-emails-with-python-3lbi”