@vologodskiy

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

Простой код, отправляет письма по заданным параметрам, в данном виде отправляет их по очереди, а надо одновременно. Как сделать так, чтобы все подготовленные письма уходили в одно и тоже время? Пробовал делать несколько копий кода и запускать процесс - не вышло. Я совсем никакой в питоне - код заказывал.
import smtplib, ssl
from email.mime.text import MIMEText
from email.header    import Header
from datetime import datetime



mails= [['4433@gmail.com','Номер 1','ссылка - '],
      ['5542@gmail.com','Номер 2','ссылка - ']]


mo=4 # мес

d=18 # день
   
h=22 # час

mi=52 # минута

ms=600000 # милисек

sender_email='5549ог@mail.ru' # ваш емеил

password='aafkofdk' # пароль







while datetime.now()<datetime(2019, mo,d,h , mi, 30,0 ):
    print(datetime.now())
        


sent={}
n=1
for i in mails:
        
    tto=i[0]
    message = i[2]
    
    title=i[1]
    
    smttt=sender_email.split('@')[1].split('.')[0]
    
    smtp_server = 'smtp.'+smttt+'.ru'
    
    port = 587
    msg = MIMEText(message, 'plain', 'utf-8')
    msg['Subject'] = Header(title, 'utf-8')
    msg['From'] = sender_email
    msg['To'] = tto
    context = ssl.create_default_context()
    server = smtplib.SMTP(smtp_server,port)
    server.ehlo()
    server.starttls(context=context) 
    server.ehlo()
    server.login(sender_email, password)
    
    sent[n]={'serv':server,'msg':msg,'tto': tto}
    n+=1


while datetime.now()<datetime(2019,  mo,d,h , mi, 59,ms): ###
    print(datetime.now())


for k,v in sent.items():
    print(k)
    print(datetime.now())
    v['serv'].sendmail(sender_email, v['tto'], v['msg'].as_string())
    print(datetime.now())
    print(k)
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 1
h0w4rd
@h0w4rd
Python dev.
Ну начнем с очевидного, зачем именно одновременно? Ну не играют роли эти пускай даже 30 секунд.
И если вы хотите прям за секунду все, может просто не выйти из-за различных абстракций.
Поэтому, можно сделать скрипт-мастер который будет запускать скрипты отправки, допустим так:
python send_mail.py user@example.com Lorem ipsum dolor sit amet.

Где python send_mail.py - вызов скрипта.
user@example.com - кому отправляем.
А дальше идет само "тело" запроса.
Думаю сможете разобраться как это сделать (надеюсь всей душой).
Да и повторюсь, ну нет таких задач где нужно отправить N уведомлений в один момент.
Это не система безопасности атомного реактора, или чего-то крупного.
Думаю суть ясна, есть два варианта:
- Просто смириться, ведь это не критично (Лучший)
- Запариться с os.system, дочерними скриптами и так далее.
Ответ написан
Ваш ответ на вопрос

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

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