├── .gitattributes ├── .vscode └── launch.json ├── 1.0.0.zip ├── 1.0.0 ├── README.md ├── contents │ ├── company.txt │ ├── link.txt │ ├── smtp.txt │ └── words.txt ├── log.txt └── main.py ├── README.md └── source ├── __pycache__ └── main.cpython-311.pyc ├── compile.py ├── contents ├── company.txt ├── link.txt ├── smtp.txt └── words.txt └── main.py /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Python: Current File", 9 | "type": "python", 10 | "request": "launch", 11 | "program": "${file}", 12 | "console": "integratedTerminal", 13 | "cwd" : "${workspaceFolder}/${relativeFileDirname}" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /1.0.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hackeinstein/smtp-to-sms/1b1ab95787f3667cede50d3f0b4fdda7ba3f7d42/1.0.0.zip -------------------------------------------------------------------------------- /1.0.0/README.md: -------------------------------------------------------------------------------- 1 | 2 | # SMTP TO SMS SENDER 3 | 4 | This Scripts is used to use sms messages with email services utilizing the email gateway provided by sms carriers 5 | 6 | 7 | ## Authors 8 | 9 | - [@hackeinstein](https://www.github.com/Hackeinstein) 10 | 11 | 12 | ## Installation 13 | 14 | Install the required python modules 15 | 16 | ```bash 17 | pip install colorama 18 | pip install numpy 19 | ``` 20 | 21 | ## Features 22 | 23 | - Multi SMTP / Threading features 24 | - New improved ssl connectivity with certifi 25 | - Hotwords swaping and randomizer 26 | - Message limiter 27 | - Faster and Better 28 | 29 | 30 | ## Demo 31 | The script is easy to use just set your required parameters and run all error would be saves in the log.txt for refernce purposes 32 | 33 | 34 | 35 | ## Key Feature 36 | 37 | - using hot swapable word or randomiser there are only four supported, fill the info of each in the content folder 38 | - [company] [link] [amount] [word] are the only dynamic call tags load your list in the text files associated to each and pass in the parameters for amount 39 | - initate the randomiser by loading the list and putting the call tag in your content the script would detect and do the rest 40 | - 41 | ![App Screenshot](https://i.ibb.co/mFzk2g3/demo.png) 42 | 43 | -------------------------------------------------------------------------------- /1.0.0/contents/company.txt: -------------------------------------------------------------------------------- 1 | walmart 2 | cosco 3 | target 4 | hugo 5 | kuhn's 6 | Lowe 7 | Tops 8 | WinCo 9 | Kroger 10 | Wegmans 11 | Hy Vee 12 | Harvest 13 | Dollar General 14 | H.E.B 15 | Sam's Club 16 | Aldi 17 | Walgreenss -------------------------------------------------------------------------------- /1.0.0/contents/link.txt: -------------------------------------------------------------------------------- 1 | google.com 2 | amazon.com 3 | instagram.com 4 | outlllok.com 5 | strox.com 6 | target.com 7 | walmart.com 8 | shine.com -------------------------------------------------------------------------------- /1.0.0/contents/smtp.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hackeinstein/smtp-to-sms/1b1ab95787f3667cede50d3f0b4fdda7ba3f7d42/1.0.0/contents/smtp.txt -------------------------------------------------------------------------------- /1.0.0/contents/words.txt: -------------------------------------------------------------------------------- 1 | charge 2 | debit 3 | withdrawal 4 | -------------------------------------------------------------------------------- /1.0.0/log.txt: -------------------------------------------------------------------------------- 1 | 2023-12-30 15:13:14.126815 - [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1006) 2 | -------------------------------------------------------------------------------- /1.0.0/main.py: -------------------------------------------------------------------------------- 1 | #import all modules 2 | import random 3 | import os 4 | import ssl 5 | import certifi 6 | from email import message 7 | from time import sleep 8 | from datetime import datetime 9 | from smtplib import * 10 | from threading import Thread 11 | # requirement modules 12 | from colorama import Fore, Back, Style, init 13 | import numpy as np 14 | 15 | 16 | #set super variaables 17 | CONTEXT = ssl.create_default_context(cafile=certifi.where()) 18 | print(Fore.YELLOW+"WELCOME TO SMTP TO SMS TOOL") 19 | print("") 20 | print("This too is used to send messages to sms using smtp") 21 | print("It uses the gateway system provide my sim carrier") 22 | print("plese convert your number leads before use") 23 | print("") 24 | print("") 25 | init() 26 | 27 | #set functions and import lists 28 | #company list 29 | with open("./contents/company.txt","r")as company_file: 30 | company_list=company_file.readlines() 31 | company_list=[company.strip("\n") for company in company_list] 32 | 33 | #list of charge vocubalaries 34 | with open("./contents/words.txt","r")as words_file: 35 | word_list=words_file.readlines() 36 | word_list=[word.strip("\n") for word in word_list] 37 | 38 | #get list of links 39 | with open("./contents/link.txt","r")as links_file: 40 | link_list=links_file.readlines() 41 | link_list=[link.strip("\n") for link in link_list] 42 | 43 | 44 | # functions 45 | #generate random amounts 46 | def random_amount(start:float, end:float) -> float: 47 | return random.randint(start,end) 48 | 49 | # random company 50 | def random_company(company_list:list)->str: 51 | lenght=len(company_list)-1 52 | return company_list[random.randint(0,lenght)] 53 | 54 | # random charge vocubalary 55 | def random_word(word_list:list)->str: 56 | lenght=len(word_list)-1 57 | return word_list[random.randint(0,lenght)] 58 | 59 | # random link 60 | def random_link(word_list:list)->str: 61 | lenght=len(word_list)-1 62 | return word_list[random.randint(0,lenght)] 63 | 64 | #merge text 65 | def randomize(text:str, start:float, end:float)->str: 66 | #replace [company], ['word'], ['amount'], ['link'] keywords 67 | global company_list, word_list, link_list 68 | text = text.replace("[company]",random_company(company_list)) 69 | text = text.replace("[word]",random_word(word_list)) 70 | text = text.replace("[link]",random_link(link_list)) 71 | text = text.replace("[amount]",str(random_amount(start,end))) 72 | return text 73 | # send email 74 | def send_message(smtp: list, _from: str, to: str, subject: str, content: str, reply_to:str) -> str: 75 | global CONTEXT 76 | try: 77 | server = SMTP(host=smtp[0], port=int(smtp[1])) 78 | server.ehlo() 79 | server.starttls(context=CONTEXT) 80 | server.ehlo() 81 | server.login(user=smtp[2], password=smtp[3]) 82 | msg = message.Message() 83 | msg.add_header('from', _from) 84 | msg.add_header('to', to) 85 | msg.add_header('subject', subject) 86 | msg.add_header('reply-to', reply_to) 87 | msg.set_payload(content) 88 | server.send_message(msg, from_addr=_from, to_addrs=[to]) 89 | return Fore.GREEN + f"message sent to {to}" 90 | except Exception as ex: 91 | # try route two ssl email support 92 | try: 93 | server = SMTP_SSL(host=smtp[0], port=int(smtp[1])) 94 | server.ehlo() 95 | server.login(user=smtp[2], password=smtp[3]) 96 | msg = message.Message() 97 | msg.add_header('from', _from) 98 | msg.add_header('to', to) 99 | msg.add_header('subject', subject) 100 | msg.add_header('reply-to', reply_to) 101 | msg.set_payload(content) 102 | server.send_message(msg, from_addr=_from, to_addrs=[to]) 103 | return Fore.GREEN + f"message sent to {to}" 104 | except Exception as ex: 105 | # try route for none secure and raw smtp 106 | try: 107 | server = SMTP(host=smtp[0], port=int(smtp[1])) 108 | server.ehlo() 109 | server.login(user=smtp[2], password=smtp[3]) 110 | msg = message.Message() 111 | msg.add_header('from', _from) 112 | msg.add_header('to', to) 113 | msg.add_header('subject', subject) 114 | msg.add_header('reply-to', reply_to) 115 | msg.set_payload(content) 116 | server.send_message(msg, from_addr=_from, to_addrs=[to]) 117 | return Fore.GREEN + f"message sent to {to}" 118 | except Exception as ex: 119 | with open("log.txt", "a") as log_file: 120 | log_file.write(f"{datetime.now()} - {ex}\n") 121 | return Fore.RED+f"message not sent to {to}" 122 | 123 | # collect config properties 124 | multi_smtp=input(Fore.CYAN + "USE MULTIPLE SMTP [Y/N]: ").lower() 125 | print("") 126 | send_per_hour=int(input(Fore.CYAN + "ENABLE SEND PER HOUR LIMIT [ENTER AMOUNT TO ENABLE / 0 TO DISABLE]: ")) 127 | print("") 128 | # get create a super function for sending and run 129 | 130 | # since it uses default locations for smtps and other files you can process single smtp 131 | if multi_smtp=="y": 132 | _from=input(Fore.CYAN + "SERVICE NAME / FROM NAME: ") 133 | print("") 134 | reply_to=input(Fore.CYAN + "REPLY_TO EMAIL: ") 135 | print("") 136 | subject=input(Fore.CYAN + "ATTENTION CALL / SUBJECT: ") 137 | print("") 138 | content=input(Fore.CYAN + "ENTER YOUR CONTENT/BODY: ") 139 | print("") 140 | file_name=input(Fore.CYAN + "LEADS FILE LOCATION: ") 141 | print("") 142 | start_amount=float(input(Fore.CYAN + "START $ AMOUNT FOR RANDOMIZE [ENTER ZERO TO DISABLE]: ")) 143 | print("") 144 | stop_amount=float(input(Fore.CYAN + "STOP $ AMOUNT FOR RANDOMIZE [ENTER ZERO TO DISABLE]: ")) 145 | print("") 146 | 147 | 148 | 149 | #split smtp 150 | with open("./contents/smtp.txt", "r") as file: 151 | smtp_list = file.readlines() 152 | # strip \n 153 | smtp_list = [item.strip("\n") for item in smtp_list] 154 | # split into indvidual smtp components 155 | smtp_list = [smtp.split("|") for smtp in smtp_list] 156 | 157 | index=len(smtp_list) 158 | #spilt leads 159 | with open(file_name,"r") as leads_file: 160 | leads=leads_file.readlines() 161 | leads=[lead.strip("\n") for lead in leads] 162 | leads=np.array_split(leads,index) 163 | 164 | # sending instructions 165 | def run_send(smtp: list, _from:str, subject:str, content:str, leads:list, start:float, stop:float, reply_to:str): 166 | if send_per_hour > 0: 167 | count=0 168 | slow=(3600/send_per_hour)-2 169 | else: 170 | slow=0 171 | 172 | 173 | for lead in leads: 174 | print(send_message(smtp=smtp, _from=_from, to=lead, subject=subject, content=randomize(content,start,stop)),reply_to) 175 | sleep(slow) 176 | if slow != 0: 177 | if count < send_per_hour: 178 | count=+1 179 | elif count >= send_per_hour: 180 | break 181 | 182 | 183 | #threads config 184 | threads=[] 185 | for i in range(index): 186 | print(Fore.YELLOW + f"STARTING MAILER CHANNEL {i}") 187 | threads.append(Thread(target = run_send, args=(smtp_list[i], _from, subject, content, leads[i], start_amount, stop_amount,reply_to ))) 188 | print(" ") 189 | print(" ") 190 | # start threads 191 | for thread in threads: 192 | thread.start() 193 | # join threads 194 | for thread in threads: 195 | thread.join 196 | input(Fore.CYAN+"DONE....") 197 | 198 | 199 | else: 200 | _from=input(Fore.CYAN + "SERVICE NAME / FROM NAME: ") 201 | print("") 202 | reply_to=input(Fore.CYAN + "REPLY_TO EMAIL: ") 203 | print("") 204 | subject=input(Fore.CYAN + "ATTENTION CALL / SUBJECT: ") 205 | print("") 206 | content=input(Fore.CYAN + "ENTER YOUR CONTENT/BODY: ") 207 | print("") 208 | file_name=input(Fore.CYAN + "LEADS FILE LOCATION: ") 209 | print("") 210 | start_amount=float(input(Fore.CYAN + "START $ AMOUNT FOR RANDOMIZE [ENTER ZERO TO DISABLE]: ")) 211 | print("") 212 | stop_amount=float(input(Fore.CYAN + "STOP $ AMOUNT FOR RANDOMIZE [ENTER ZERO TO DISABLE]: ")) 213 | print("") 214 | 215 | #load leads and send files 216 | with open(file_name,"r") as leads_file: 217 | leads=leads_file.readlines() 218 | leads=[lead.strip("\n") for lead in leads] 219 | 220 | #load smtp file 221 | with open("./contents/smtp.txt", "r") as smtp_file: 222 | smtp_list = smtp_file.readlines() 223 | # strip \n 224 | smtp_list = [item.strip("\n") for item in smtp_list] 225 | # split into indvidual smtp components 226 | smtp_list = [smtp.split("|") for smtp in smtp_list] 227 | if send_per_hour > 0: 228 | count=0 229 | slow=(3600/send_per_hour)-2 230 | else: 231 | slow=0 232 | 233 | 234 | for lead in leads: 235 | print(send_message(smtp=smtp_list[0], _from=_from, to=lead, subject=subject, content=randomize(content,start_amount,stop_amount), reply_to=reply_to)) 236 | sleep(slow) 237 | if slow != 0: 238 | if count < send_per_hour: 239 | count=+1 240 | elif count >= send_per_hour: 241 | break 242 | input(Fore.CYAN+"DONE....") 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # SMTP TO SMS SENDER 3 | 4 | This Scripts is used to use sms messages with email services utilizing the email gateway provided by sms carriers 5 | 6 | 7 | ## Authors 8 | 9 | - [@hackeinstein](https://www.github.com/Hackeinstein) 10 | 11 | 12 | ## Installation 13 | 14 | Install the required python modules 15 | 16 | ```bash 17 | pip install colorama 18 | pip install numpy 19 | ``` 20 | 21 | ## Features 22 | 23 | - Multi SMTP / Threading features 24 | - New improved ssl connectivity with certifi 25 | - Hotwords swaping and randomizer 26 | - Message limiter 27 | - Faster and Better 28 | 29 | 30 | ## Demo 31 | The script is easy to use just set your required parameters and run all error would be saves in the log.txt for refernce purposes 32 | 33 | 34 | 35 | ## Key Feature 36 | 37 | - using hot swapable word or randomiser there are only four supported, fill the info of each in the content folder 38 | - [company] [link] [amount] [word] are the only dynamic call tags load your list in the text files associated to each and pass in the parameters for amount 39 | - initate the randomiser by loading the list and putting the call tag in your content the script would detect and do the rest 40 | - 41 | ![App Screenshot](https://i.ibb.co/mFzk2g3/demo.png) 42 | 43 | -------------------------------------------------------------------------------- /source/__pycache__/main.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hackeinstein/smtp-to-sms/1b1ab95787f3667cede50d3f0b4fdda7ba3f7d42/source/__pycache__/main.cpython-311.pyc -------------------------------------------------------------------------------- /source/compile.py: -------------------------------------------------------------------------------- 1 | import py_compile 2 | py_compile.compile('main.py') 3 | # the compiled file will be saved as yourfile.pyc in a __pycache__ folder, which will be created the same folder as yourfile.py -------------------------------------------------------------------------------- /source/contents/company.txt: -------------------------------------------------------------------------------- 1 | walmart 2 | cosco 3 | target 4 | hugo 5 | kuhn's 6 | Lowe 7 | Tops 8 | WinCo 9 | Kroger 10 | Wegmans 11 | Hy Vee 12 | Harvest 13 | Dollar General 14 | H.E.B 15 | Sam's Club 16 | Aldi 17 | Walgreenss -------------------------------------------------------------------------------- /source/contents/link.txt: -------------------------------------------------------------------------------- 1 | google.com 2 | amazon.com 3 | instagram.com 4 | outlllok.com 5 | strox.com 6 | target.com 7 | walmart.com 8 | shine.com -------------------------------------------------------------------------------- /source/contents/smtp.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hackeinstein/smtp-to-sms/1b1ab95787f3667cede50d3f0b4fdda7ba3f7d42/source/contents/smtp.txt -------------------------------------------------------------------------------- /source/contents/words.txt: -------------------------------------------------------------------------------- 1 | charge 2 | debit 3 | withdrawal 4 | -------------------------------------------------------------------------------- /source/main.py: -------------------------------------------------------------------------------- 1 | #import all modules 2 | import random 3 | import os 4 | import ssl 5 | import certifi 6 | from email import message 7 | import time 8 | from datetime import datetime 9 | from smtplib import * 10 | from threading import Thread 11 | # requirement modules 12 | from colorama import Fore, Back, Style, init 13 | import numpy as np 14 | 15 | 16 | #set super variaables 17 | CONTEXT = ssl.create_default_context(cafile=certifi.where()) 18 | print(Fore.YELLOW+"WELCOME TO SMTP TO SMS TOOL") 19 | print("") 20 | print("This too is used to send messages to sms using smtp") 21 | print("It uses the gateway system provide my sim carrier") 22 | print("plese convert your number leads before use") 23 | print("") 24 | print("") 25 | init() 26 | 27 | #set functions and import lists 28 | #company list 29 | with open("./contents/company.txt","r")as company_file: 30 | company_list=company_file.readlines() 31 | company_list=[company.strip("\n") for company in company_list] 32 | 33 | #list of charge vocubalaries 34 | with open("./contents/words.txt","r")as words_file: 35 | word_list=words_file.readlines() 36 | word_list=[word.strip("\n") for word in word_list] 37 | 38 | #get list of links 39 | with open("./contents/link.txt","r")as links_file: 40 | link_list=links_file.readlines() 41 | link_list=[link.strip("\n") for link in link_list] 42 | 43 | 44 | # functions 45 | #generate random amounts 46 | def random_amount(start:float, end:float) -> float: 47 | return random.randint(start,end) 48 | 49 | # random company 50 | def random_company(company_list:list)->str: 51 | lenght=len(company_list)-1 52 | return company_list[random.randint(0,lenght)] 53 | 54 | # random charge vocubalary 55 | def random_word(word_list:list)->str: 56 | lenght=len(word_list)-1 57 | return word_list[random.randint(0,lenght)] 58 | 59 | # random link 60 | def random_link(word_list:list)->str: 61 | lenght=len(word_list)-1 62 | return word_list[random.randint(0,lenght)] 63 | 64 | #merge text 65 | def randomize(text:str, start:float, end:float)->str: 66 | #replace [company], ['word'], ['amount'], ['link'] keywords 67 | global company_list, word_list, link_list 68 | text = text.replace("[company]",random_company(company_list)) 69 | text = text.replace("[word]",random_word(word_list)) 70 | text = text.replace("[link]",random_link(link_list)) 71 | text = text.replace("[amount]",str(random_amount(start,end))) 72 | return text 73 | # send email 74 | def send_message(smtp: list, _from: str, to: str, subject: str, content: str) -> str: 75 | global CONTEXT 76 | try: 77 | server = SMTP(host=smtp[0], port=int(smtp[1])) 78 | server.ehlo() 79 | server.starttls(context=CONTEXT) 80 | server.ehlo() 81 | server.login(user=smtp[2], password=smtp[3]) 82 | msg = message.Message() 83 | msg.add_header('from', _from) 84 | msg.add_header('to', to) 85 | msg.add_header('subject', subject) 86 | msg.set_payload(content) 87 | server.send_message(msg, from_addr=_from, to_addrs=[to]) 88 | return Fore.GREEN + f"message sent to {to}" 89 | except Exception as ex: 90 | # log error message 91 | with open("log.txt", "a") as log_file: 92 | log_file.write(f"{datetime.now()} - {ex}\n") 93 | 94 | return Fore.RED+f"message not sent to {to}" 95 | 96 | # collect config properties 97 | multi_smtp=input(Fore.CYAN + "USE MULTIPLE SMTP [Y/N]: ").lower() 98 | print("") 99 | send_per_hour=int(input(Fore.CYAN + "ENABLE SEND PER HOUR LIMIT [ENTER AMOUNT TO ENABLE / 0 TO DISABLE]: ")) 100 | print("") 101 | # get create a super function for sending and run 102 | 103 | # since it uses default locations for smtps and other files you can process single smtp 104 | if multi_smtp=="y": 105 | _from=input(Fore.CYAN + "SERVICE NAME / FROM NAME: ") 106 | print("") 107 | subject=input(Fore.CYAN + "ATTENTION CALL / SUBJECT: ") 108 | print("") 109 | content=input(Fore.CYAN + "ENTER YOUR CONTENT/BODY: ") 110 | print("") 111 | file_name=input(Fore.CYAN + "LEADS FILE LOCATION: ") 112 | print("") 113 | start_amount=float(input(Fore.CYAN + "START $ AMOUNT FOR RANDOMIZE [ENTER ZERO TO DISABLE]: ")) 114 | print("") 115 | stop_amount=float(input(Fore.CYAN + "STOP $ AMOUNT FOR RANDOMIZE [ENTER ZERO TO DISABLE]: ")) 116 | print("") 117 | 118 | 119 | 120 | #split smtp 121 | with open("./contents/smtp.txt", "r") as file: 122 | smtp_list = file.readlines() 123 | # strip \n 124 | smtp_list = [item.strip("\n") for item in smtp_list] 125 | # split into indvidual smtp components 126 | smtp_list = [smtp.split("|") for smtp in smtp_list] 127 | 128 | index=len(smtp_list) 129 | #spilt leads 130 | with open(file_name,"r") as leads_file: 131 | leads=leads_file.readlines() 132 | leads=[lead.strip("\n") for lead in leads] 133 | leads=np.array_split(leads,index) 134 | 135 | # sending instructions 136 | def run_send(smtp: list, _from:str, subject:str, content:str, leads:list, start:float, stop:float): 137 | if send_per_hour > 0: 138 | count=0 139 | slow=(3600/send_per_hour)-2 140 | else: 141 | slow=0 142 | 143 | 144 | for lead in leads: 145 | print(send_message(smtp=smtp, _from=_from, to=lead, subject=subject, content=randomize(content,start,stop))) 146 | time.sleep(slow) 147 | if slow != 0: 148 | if count < send_per_hour: 149 | count=+1 150 | elif count >= send_per_hour: 151 | break 152 | 153 | 154 | #threads config 155 | threads=[] 156 | for i in range(index): 157 | print(Fore.YELLOW + f"STARTING MAILER CHANNEL {i}") 158 | threads.append(Thread(target = run_send, args=(smtp_list[i], _from, subject, content, leads[i], start_amount, stop_amount, ))) 159 | print(" ") 160 | print(" ") 161 | # start threads 162 | for thread in threads: 163 | thread.start() 164 | # join threads 165 | for thread in threads: 166 | thread.join 167 | input(Fore.CYAN+"DONE....") 168 | 169 | 170 | else: 171 | _from=input(Fore.CYAN + "SERVICE NAME / FROM NAME: ") 172 | print("") 173 | subject=input(Fore.CYAN + "ATTENTION CALL / SUBJECT: ") 174 | print("") 175 | content=input(Fore.CYAN + "ENTER YOUR CONTENT/BODY: ") 176 | print("") 177 | file_name=input(Fore.CYAN + "LEADS FILE LOCATION: ") 178 | print("") 179 | start_amount=float(input(Fore.CYAN + "START $ AMOUNT FOR RANDOMIZE [ENTER ZERO TO DISABLE]: ")) 180 | print("") 181 | stop_amount=float(input(Fore.CYAN + "STOP $ AMOUNT FOR RANDOMIZE [ENTER ZERO TO DISABLE]: ")) 182 | print("") 183 | 184 | #load leads and send files 185 | with open(file_name,"r") as leads_file: 186 | leads=leads_file.readlines() 187 | leads=[lead.strip("\n") for lead in leads] 188 | 189 | #load smtp file 190 | with open("./ncontents/smtp.txt", "r") as smtp_file: 191 | smtp_list = smtp_file.readlines() 192 | # strip \n 193 | smtp_list = [item.strip("\n") for item in smtp_list] 194 | # split into indvidual smtp components 195 | smtp_list = [smtp.split("|") for smtp in smtp_list] 196 | if send_per_hour > 0: 197 | count=0 198 | slow=(3600/send_per_hour)-2 199 | else: 200 | slow=0 201 | 202 | 203 | for lead in leads: 204 | print(send_message(smtp=smtp_list[0], _from=_from, to=lead, subject=subject, content=randomize(content,start_amount,stop_amount))) 205 | time.sleep(slow) 206 | if slow != 0: 207 | if count < send_per_hour: 208 | count=+1 209 | elif count >= send_per_hour: 210 | break 211 | input(Fore.CYAN+"DONE....") 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | --------------------------------------------------------------------------------