Задать вопрос
Molodoj
@Molodoj
Инжынер

Как автоматизировать отправку почты с разными вложениями по разным адресам?

Есть задача рассылать почту с определёнными файлами для определённых адресов. Т.е. вложения для каждого адреса разные и хранятся в отдельной директории. Подскажите, как реализовать подобное, чтобы не делать это в ручную?
  • Вопрос задан
  • 188 просмотров
Подписаться 2 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@Wordstat202323
Для реализации подобной задачи вам понадобиться использовать скрипт на языке программирования, например, Python. Он должен считывать список адресов, а также иметь доступ к файлам, сохраненным в отдельной директории. Для этого скрипт должен иметь метод для отправки почты, который будет использовать адрес получателя и файл для прикрепления. Вот пример кода для реализации этого:

import smtplib

# List of emails
emails = ['example1@example.com', 'example2@example.com']

# Path to files
files = ['path/to/file1.txt', 'path/to/file2.txt']

# Connect to mail server
with smtplib.SMTP('smtp.example.com', 587) as server:
server.ehlo()
server.starttls()
server.ehlo()

# Login
server.login('username', 'password')

# Send mail for each recipient
for email, file in zip(emails, files):
with open(file, 'rb') as f:
file_data = f.read()
file_name = f.name

message = 'Subject: Attachment\n\nThis is an attachment.'

server.sendmail(
'from@example.com',
email,
message.encode('utf-8'),
{'From': 'from@example.com',
'To': email,
'Subject': 'Attachment',
'MIME-Version': '1.0',
'Content-Type': 'multipart/mixed; boundary="----------=_MESSAGE_BOUNDARY_$"',
'Content-Disposition': 'attachment; filename="{}"'.format(file_name),
'Content-Transfer-Encoding': 'base64',
'Content-Description': 'Attachment'
},
'\n\n----------=_MESSAGE_BOUNDARY_$\nContent-Type: application/octet-stream; name="{}"\nContent-Transfer-Encoding: base64\nContent-Disposition: attachment; filename="{}"\n\n{}\n\n----------=_MESSAGE_BOUNDARY_$--'.format(file_name, file_name, file_data.decode('utf-8'))
)

# Close connection
server.quit()

Я надеюсь, что это поможет вам решить поставленную задачу. Удачи!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы