I want to send bulk email but their are some problems:
- my SMTP have limit of 50 mails/hour, so to solve this I created 100 mails.
- but the problem now is switching mails after 50 sends and switching recipient each time and also adding time delay of 0.6 seconds in between of each send
- and also this is so slow, so I want to send mails parallel like sending 4 mails at a time with 1 SMTP.
How can I send mails parallel and also how to switch recipient and SMTP?
I created a program but not working good
import time
import threading
t = time.time()
file1 = open('100_leads.txt', 'r')
line1 = file1.readlines()
file2 = open('smtp.txt', 'r')
line2 = file2.readlines()
total_leads = len(line1) + 1
count = 1
receiver_number = 0
sender_number = 0
def email1(sender,receiver):
print(f"sending mail to {receiver} by {sender}\n{count}\n")
count += 1
time.sleep(0.6)
def email2(sender,receiver):
print(f"sending mail to {receiver} by {sender}\n{count}\n")
count += 1
time.sleep(0.6)
def email3(sender,receiver):
print(f"sending mail to {receiver} by {sender}\n{count}\n")
count += 1
time.sleep(0.6)
def email4(sender,receiver):
print(f"sending mail to {receiver} by {sender}\n{count}\n")
count += 1
time.sleep(0.6)
for i in range(1,total_leads):
if count%50 == 0:
sender_number += 1
print(f"EMAIL CHANGED TO {line2[sender_number]}\n\n")
else:
t1 = threading.Thread(target=email1, args=(line2[sender_number],line1[receiver_number]))
t2 = threading.Thread(target=email2, args=(line2[sender_number],line1[receiver_number+1]))
t3 = threading.Thread(target=email3, args=(line2[sender_number],line1[receiver_number+2]))
t4 = threading.Thread(target=email4, args=(line2[sender_number],line1[receiver_number+3]))
t1.start()
t2.start()
t3.start()
t4.start()
receiver_number += 4
# email(line2[sender_number],line1[receiver_number])
# receiver_number += 1
file1.close()
file2.close()
print("time taken: ",time.time()-t)
print("SENDING OPERATION COMPLETED!!!")