Jump to content

[Python] Отправить большой файл по почте


TidalPoo
 Share

Recommended Posts

Привет!

Не так давно, хоть на дворе и 21 век, но мне понадобилось, по работе, отправить большой файл (1Гб+) почтой. И в виду того, что рабочей Exchange блокировал всё, что весит больше 20Мб, в голову сразу пришла идея «нарезать» файл через архиватор на куски по 20Мб.

Ок, я это сделал, но файлов оказало более 50шт. Сидеть и создавать 50 писем, добавлять адресата, прикреплять файл — перспектива трудозатрат была не очень приемлема.

Но, на ум сразу пришло написать скрипт на python

В общем, кому надо ловите:

from os import walk
import smtplib
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

mail_content = 'Текст Письма'

sender_address = 'Отправитель@гмайл.ком'
sender_pass = 'ПарольОтЯщикаОтправителя'
receiver_address = 'Получатель@майл.ру'


filenames = next(walk('data'), (None, None, []))[2]

for file in filenames:
    message = MIMEMultipart()
    message['From'] = sender_address
    message['To'] = receiver_address
    message['Subject'] = 'Тема письма'
    message.attach(MIMEText(mail_content, 'plain'))

    attachment = open('data/' + file, "rb")
    p = MIMEBase('application', 'octet-stream')
    p.set_payload(attachment.read())
    encoders.encode_base64(p)
    p.add_header('Content-Disposition', "attachment; filename= %s" % file)
    message.attach(p)

    session = smtplib.SMTP('smtp.gmail.com', 587)
    session.starttls()
    session.login(sender_address, sender_pass)
    text = message.as_string()
    session.sendmail(sender_address, receiver_address, text)
    session.quit()

    print('Файл', file, 'отправлен')

Что делает код?

1) Просматривает папку data

2) Собирает все файлы которые там лежат

3) В цикле отправляет файлы отдельными письмами.

Удобно и просто. Код настроен на работу с gmail.com, для других сервисов меняем stmp в коде.

Код на GitHub

  • Like 2
Link to comment
Share on other sites

В 15.02.2022 в 13:58, Booblik сказал:

мучаться скачивая их все

тундерберд, вроде может скачать разом все вложения с выделенных писем.
Да и оутлук тоже по-моему могёт)

Не уверен, но гмаил, да и яндекс из браузера тоже могут)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...