import os.path # "Скрывает" ввод в консоли (может не работать в IDE, например, PyCharm) import getpass import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.application import MIMEApplication if __name__ == "__main__": # 1. Данные сервера и письма # 'email_from' : адрес отправителя # 'email_to' : адрес получателя # 'email_from_password': пароль для email_from email_from = input("Адрес отправителя (Ваш): ") email_to = input("Адрес получателя: ") # Для ввода пароля используется функция getpass.getpass, # не отображающая ввод email_from_password = getpass.getpass("Пароль для {}: ".format(email_from)) # Текст сообщения для отправки в HTML-формате. # Возможно использовать и простой текст. html = """\

Привет!

Как дела?

Вот ссылка на сайт Python: http://www.python.org.

А еще к письму прикреплены:.

""" # 2. Создание контейнера с содержимым msg = MIMEMultipart() msg["Subject"] = "Ссылка на сайт Python" msg["From"] = email_from msg["To"] = email_to # 2.1. Текст # Добавление вложения в контейнер, используя метод attach контейнера. # Для MIMEText если вместо HTML используется текст, # вторым параметром будет "plain". msg.attach(MIMEText(html, "html")) # 2.2. Файл - Рисунок img_filename = input("Имя файла с рисунком: ") with open(img_filename, "rb") as image: attachment = MIMEImage(image.read()) # Обозначаем, что это вложение и указываем имя attachment.add_header("Content-Disposition", "attachment", filename=os.path.basename(img_filename)) msg.attach(attachment) # 2.3. Файл - Код with open(__file__, "rb") as f: attachment = MIMEApplication(f.read()) # Необходимо обозначить, что это вложение и его имя attachment.add_header("Content-Disposition", "attachment", filename=os.path.basename(__file__)) msg.attach(attachment) # 3. Подключение к серверу и отправка письма server = smtplib.SMTP("smtp.gmail.com", 587) try: # Установление защищенного соединения и авторизация server.starttls() server.login(email_from, email_from_password) # Отправка сообщения server.send_message(msg) print("Письмо успешно отправлено!") except smtplib.SMTPException as err: print("Ошибка при отправке письма:", err) finally: server.quit() # ------------- # Пример вывода: # # Адрес отправителя (Ваш): YuriPetrov***@gmail.com # Адрес получателя: alex***@gmail.com # Пароль для YuriPetrov***@gmail.com: # Имя файла с рисунком: chuvak.png # Письмо успешно отправлено!