0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 42

SMTP почтовый клиент

20.04.2023, 17:33. Показов 1041. Ответов 2

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане.

Вопрос не совсем в нужном разделе, но нужного я не нашел. Извините, лапки и 0.1f извилин.

В связи с дефицитом бумаги возникла необходимость написать почтовый клиент-рассылятор PDF адресатам.
Софт написал на питоне, рассылает.

Но в любом SMTP-сервисе натыкаюсь на невидимые, нигде не прописанные ограничения.
Например, мейловский дает примерно 50 сообщений/час
гугловский - это вообще аншлаг содомии, рандома и бессимптомных тупиков.

Так вот, может кто посоветовать стабильный smtp-сервис? Или подсказать способ обойти эти невидимые ограничения.
Или, возможно, при общении с сервисом нужно соблюдать какие-то правила? (задержку между запросами делать или еще что)

Прилагаю код, чтоб совсем уж за несоблюдение темы не забананили (:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import shutil
import smtplib
import os
import csv
import mimetypes
from email.encoders import encode_base64
from email.message import EmailMessage
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
 
 
import configparser
 
from future.utils import python_2_unicode_compatible
 
ini = configparser.ConfigParser()
ini.read(r'config.ini')
 
@python_2_unicode_compatible
class mail:
    login=''
    password=''
    def __init__(self, log, passw):
        login=log
        password=passw
 
 
def sendMail(to, msg):
    server = smtplib.SMTP(ini.get("SMTPSettings", "smtpServerAddress"), int(ini.get("SMTPSettings", "port")))
    server.starttls()
    try:
        server.login(ini.get("AccSettings", "username"), ini.get("AccSettings", "password"))
        server.sendmail(ini.get("AccSettings", "username"), to, msg.as_string())
        return True
    except Exception as _ex:
        return _ex
 
 
def sendfiles(dir_name):
    dbpath=dir_name + ini.get("PathSettings","db")
    docspath = dir_name + ini.get("PathSettings","kvits")
    logs_path = dir_name + ini.get("PathSettings","log")
    sent_path = dir_name + ini.get("PathSettings", "sent")
    reader_object = csv.reader(dbpath, delimiter=',')
    with open(logs_path, 'w') as logfile:
        with open(dbpath, encoding='utf-8') as r_file:
            file_reader = csv.reader(r_file, delimiter=',')
            for row in file_reader:
                for root, dirs, files in os.walk(docspath):
                    for file in files:
                        sent = False
                        purefilename=file.split('.')[0].split('_')[0]
                        if (row[0] == purefilename):
                            message = MIMEMultipart()
                            message["Subject"] = ini.get("MessageSettings", "subject")
                            message["From"] = ini.get("AccSettings", "username")
                            message["Reply-to"] = username
                            message['To'] = row[1]
                            message.attach(MIMEText(ini.get("MessageSettings", "message")))
                            # pdf_part = MIMEApplication(base64.decodestring(email_obj.attachments["pdf_report"]), "pdf")
                            # attachedfile.add_header('content-disposition', 'attachment', filename=file)
                            # message.attach(attachedfile)
                            binary_pdf = open(docspath+'\\'+file, 'rb')
                            payload = MIMEBase('application', 'octate-stream', Name=file)
                            payload.set_payload((binary_pdf).read())
                            # enconding the binary into base64
                            encoders.encode_base64(payload)
                            # add header with pdf name
                            payload.add_header('Content-Decomposition', 'attachment', filename=file)
                            message.attach(payload)
                            x = sendMail(row[1], message)
                            if(x == True):
                                print(f' Файл {file} успешно отправлен на {row[1]}..')
                                logfile.write(f' Файл {file} успешно отправлен на {row[1]}..\n')
                                shutil.copy(docspath+'\\'+file, sent_path+file)
                                binary_pdf.close()
                                os.remove(docspath+'\\'+file)
                            else:
                                print(f' Ошибка отправки файла {file} на {row[1]}..')
                                logfile.write(f' Ошибка отправки файла {file} на {row[1]}:\nОписание ошибки:{x}..\n')
 
 
def main():
    sendfiles(ini.get("PathSettings", "dir"))
    os.system("pause")
 
 
 
if __name__ == '__main__':
    main()

ЗЫ: Самый продвинутый HelloWorld за мою бытность программистером.
ЗЫЫ: Не спам, не реклама - деловые документы. Опустите биты и арматуры
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2023, 17:33
Ответы с готовыми решениями:

Smtp, почтовый клиент
Пишу программу для отправки почты используя протокол SMTP. Как я могу в программе получить служебный заголовок письма, где указана вся...

Почтовый клиент (SMTP)
подскажите как сделать авторизацию с SMTP клиентом (хорошо бы живые примеры) использую SmtpClient^; порылся в MSDN-е нашел что за...

Почтовый клиент (SMTP)
Написал код почтового клиента, но отправки писем так и не добился. Пробовал и с яндекса и с рамблера - результат тот же. Может кто...

2
 Аватар для kazak
3592 / 2734 / 353
Регистрация: 11.03.2009
Сообщений: 6,284
23.04.2023, 18:11
https://help.mail.ru/developer... /technical
https://support.google.com/mai... #auth-reqs
0
5021 / 1047 / 147
Регистрация: 29.01.2013
Сообщений: 6,149
27.04.2023, 10:33
Fantasm0001, Возможно проще поднять свой сервер
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2023, 10:33
Помогаю со студенческими работами здесь

Почтовый клиент с поддержкой SMTP
Добрый день , кто знает , что можно использовать для SMTP ...какую прогу . Я юзал MaxBulk Mailer . Но нужно , что то другое . smtp...

SMTP,POP3,IMAP Почтовый клиент
Во общем smtp клиентское приложение должно отправлять письма на сервер(насколько я понял)а с этого сервера письмо уже будет отправлено...

Почтовый клиент не может подключиться к smtp серверу
Добрый день! Есть почтовый сервер на базе postfix, который крутится на CentOS. После переезда на другой сервер почтовые клиенты...

Нужна open source - библиотека - почтовый клиент (SMTP, POP3 и IMAP) для .NET 4.0 (C# или VB)
Привет всем! Подскажите, пожалуйста, кто сталкивался, существует ли бесплатная библиотека для работы с SMTP, POP3 и IMAP протоколами...

Enc 28J60 telnet клиент или SMTP клиент
Всем привет. Если ли работающие библиотеки и скетчи для этой платы? В основном все для W5100 (( Спасибо


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Тестирование Pull Request в Kubernetes с vCluster
Mr. Docker 19.07.2025
Часто сталкиваюсь с серьезной дилемой при настройке тестовых окружений для проверки Pull Request в Kubernetes. С одной стороны, каждый PR требует изолированной среды — только так можно гарантировать,. . .
Мой 7 минутный ролик с крамольным предложением про шахматы, предлагаю заценить
_Ivana 18.07.2025
p2UhJNMGY94
Десять Middleware Node.js для эффективного кодинга
Reangularity 18.07.2025
Когда я только начинал работать с Node. js, количество пакетов в npm меня буквально парализовало. Сегодня их больше 1,3 миллиона — попробуй разберись, что стоит твоего внимания, а что нет. Я потратил. . .
Context и глубины Android
mobDevWorks 18.07.2025
В Android разработки Context напоминает воздух - он везде, жизненно необходим, но мало кто может детально объяснить его природу. Мы привыкли получать его как параметр, передавать дальше и. . .
Результаты исследования от команды MCM (июль 2025 г.)
Programma_Boinc 18.07.2025
Результаты исследования от команды MCM (июль 2025 г. ) Как сообщалось в наших предыдущих публикациях, мы изучаем гены, которые имеют наибольший рейтинг и ассоциируются с различными видами рака, в. . .
ИИ-чатбот на React с OpenAI и LangChain.js
Reangularity 17.07.2025
React давно стал для меня золотым стандартом фронтенд-разработки. Его компонентная структура, виртуальный DOM и однонаправленный поток данных идеально подходят для создания динамичных интерфейсов. . .
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru