How to send a photo to Python mail
You need to send a screenshot made with PIL + text to the mail. I looked through the documentation, the text is easy to send, but problems start with the png image.(mail.ru, gmail)
1
1 answers
import os
import smtplib
from email.mime.image import MIMEImage
from email.mime.audio import MIMEAudio
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
class SendMessageEmail:
def setting(self, server, port, login, password):
self.server = smtplib.SMTP_SSL(server, port) # Создаем объект SMTP
self.server.login(login, password) # Получаем доступ
self.message = MIMEMultipart() # Создаем сообщение
self.message['From'] = login # Адресат
def tls(self):
self.server.starttls() # Начинаем шифрованный обмен по TLS
def whom(self, email):
self.message['To'] = email # Получатель
def topic(self, string):
self.message['Subject'] = string # Тема сообщения
def addText(self, text):
self.message.attach(MIMEText(text, 'plain'))
def addHtml(self, html, encoding):
self.message.attach(MIMEText(html, 'html', encoding)) # Добавляем в сообщение HTML-фрагмент
def addImage(self, path, file_type):
path = os.path.abspath(path)
file_name = path.split('\\')[-1]
with open(path, 'rb') as file:
file = MIMEImage(file.read(), file_type)
file.add_header('Content-Disposition', 'attachment', filename=file_name) # Добавляем заголовки
self.message.attach(file)
def addAudio(self, path, file_type):
path = os.path.abspath(path)
file_name = path.split('\\')[-1]
with open(path, 'rb') as file:
file = MIMEAudio(file.read(), file_type)
file.add_header('Content-Disposition', 'attachment', filename=file_name) # Добавляем заголовки
self.message.attach(file)
def send(self):
self.server.send_message(self.message) # Отправляем сообщение
def debug(self, boolean):
self.server.set_debuglevel(boolean)
def quit(self):
self.server.quit()
def main():
sending_message_email = SendMessageEmail()
sending_message_email.setting()
sending_message_email.whom()
sending_message_email.topic("Скриншот")
sending_message_email.addImage('screen.png', 'PNG')
sending_message_email.addText('Сообщение')
sending_message_email.send()
sending_message_email.quit()
if __name__ == '__main__':
main()
1
Author: Александр, 2020-05-12 01:35:39