Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- #coding: utf-8
- """
- Ehlo World - Mini interface para envio de e-mails feita em python e tkinter
- """
- import email
- import smtplib
- import mimetypes
- from Tkinter import *
- from ScrolledText import *
- import email.mime.application
- import Tkinter, tkFileDialog, tkFont, tkMessageBox
- files = list()
- wordlist = str()
- def set_flood():
- if flood_chk.get() == 1:
- num_flood.delete(0, END)
- num_flood.config(state=NORMAL)
- else:
- num_flood.delete(0, END)
- num_flood.config(state=DISABLED)
- def add_file():
- file = tkFileDialog.askopenfile(parent=opcoes, mode="rb", title="Escolher Arquivo")
- if file != None:
- files.append(file.name)
- file_msg.config(text="Arquivos adicionado: "+str(len(files)), width=370, fg="green", font=("Helvetica", 10), justify=CENTER )
- file_msg.grid(row=5, sticky=W, columnspan=2)
- file.close()
- else:
- pass
- def add_list():
- if list_chk.get() == 0:
- to_entry.config(state=NORMAL)
- list_text.delete(1.0, END)
- list_chk.set(0)
- else:
- lista = tkFileDialog.askopenfile(parent=opcoes, mode="rb", title="Escolher Lista")
- if lista != None:
- data = lista.read()
- list_text.insert(END, data)
- to_entry.delete(0, END)
- to_entry.config(state=DISABLED)
- wordlist = lista.name
- lista.close()
- else:
- to_entry.config(state=NORMAL)
- list_chk.set(0)
- def send_email():
- if list_chk.get() == 0:
- body = email.mime.Multipart.MIMEMultipart()
- body["From"] = from_entry.get()
- fromaddr = from_entry.get()
- body["To"] = to_entry.get()
- to = str(to_entry.get())
- body["Subject"] = subject_entry.get()
- data = email.mime.Text.MIMEText(msg_text.get(1.0, END))
- body.attach(data)
- for file in files:
- fp = open(file, "rb")
- if fp != None:
- slash = fp.name.split("/")
- name = slash[-1].lower()
- dot = name.split(".")
- ext = dot[-1].lower()
- att = email.mime.application.MIMEApplication(fp.read(),_subtype=ext)
- att.add_header("Content-Disposition","attachment",filename=name)
- body.attach(att)
- fp.close()
- else:
- pass
- if ssl_chk.get() == 1:
- s = smtplib.SMTP_SSL(server_entry.get(), int(port_entry.get()))
- else:
- s = smtplib.SMTP(server_entry.get(), int(port_entry.get()))
- username = login_entry.get()
- password = password_entry.get()
- s.login(username, password)
- if flood_chk.get() == 1:
- for num in range(0, int(num_flood.get())):
- s.sendmail(fromaddr, to, body.as_string())
- print "[ {} ] e-mail enviado para [ {} ]".format(num, to)
- else:
- print
- print "[ {} ] e-mail enviado para [ {} ]".format(num, to)
- s.quit()
- del(body)
- else:
- fp = open(wordlist, "r")
- if fp != None:
- for mail in fp.readlines():
- body = email.mime.Multipart.MIMEMultipart()
- body["From"] = from_entry.get()
- fromaddr = from_entry.get()
- body["To"] = mail
- to = str(mail)
- body["Subject"] = subject_entry.get()
- data = email.mime.Text.MIMEText(msg_text.get(1.0, END))
- body.attach(data)
- for file in files:
- fp = open(file, "rb")
- if fp != None:
- slash = fp.name.split("/")
- name = str(slash[-1])
- dot = name.split(".")
- ext = str(dot[-1])
- att = email.mime.application.MIMEApplication(fp.read(),_subtype=ext.lower())
- att.add_header("Content-Disposition","attachment",filename=name)
- body.attach(att)
- fp.close()
- else:
- pass
- if ssl_chk.get() == 1:
- s = smtplib.SMTP_SSL(server_entry.get(), int(port_entry.get()))
- else:
- s = smtplib.SMTP(server_entry.get(), int(port_entry.get()))
- username = login_entry.get()
- password = password_entry.get()
- s.login(username, password)
- if flood_chk.get() == 1:
- for num in range(0, int(num_flood.get())):
- s.sendmail(fromaddr, to, body.as_string())
- print "[ {} ] e-mail enviado para [ {} ]".format(num, to)
- else:
- print
- print "[ {} ] e-mail enviado para [ {} ]".format(num, to)
- s.quit()
- del(body)
- else:
- pass
- root = Tkinter.Tk()
- root.config(width=800, height=600, bg="gray")
- #root.iconbitmap("ehlo.ico")
- root.title(" EHLO WORLD")
- login = Tkinter.Frame(root, bd=1, bg="gray")
- login.config(width=400, height=600, padx=5)
- login.pack(fill=BOTH, side=LEFT, padx=5, pady=5)
- login_label = Label(login, text="Email:", font=("Helvetica"), bg="gray")
- login_label.grid(row=0, sticky=W)
- login_entry = Entry(login)
- login_entry.delete(0, END)
- login_entry.insert(END, "")
- login_entry.grid(row=0, column=1, sticky=W)
- password_label = Label(login, text="Senha:", font=("Helvetica"), bg="gray")
- password_label.grid(row=1, sticky=W)
- password_entry = Entry(login)
- password_entry.delete(0, END)
- password_entry.insert(END, "")
- password_entry.grid(row=1, column=1, sticky=W)
- server_label = Label(login, text="Servidor:", font=("Helvetica"), bg="gray")
- server_label.grid(row=2, sticky=W)
- server_entry = Entry(login)
- server_entry.delete(0, END)
- server_entry.insert(END, "")
- server_entry.grid(row=2, column=1, sticky=W)
- port_label = Label(login, text="Porta:", font=("Helvetica"), bg="gray")
- port_label.grid(row=3, sticky=W)
- port_entry = Entry(login)
- port_entry.delete(0, END)
- port_entry.insert(END, "")
- port_entry.grid(row=3, column=1, sticky=W)
- ssl_chk = IntVar()
- ssl_box = Checkbutton(login, text="Habilitar SSL", font=("Helvetica"), bg="gray", onvalue=1, offvalue=0, variable=ssl_chk)
- ssl_box.grid(row=4, sticky=W)
- write_msg = Label(login, text="Escrever mensagem:", font=("Helvetica"), bg="gray")
- write_msg.grid(sticky=W)
- msg_text = ScrolledText(login, width=50, height=22)
- msg_text.grid(pady=5, columnspan=3, sticky=W)
- opcoes = Tkinter.Frame(root, bd=1, bg="gray")
- opcoes.config(width=400, height=600, padx=5, pady=5)
- opcoes.pack(fill=BOTH, side=LEFT, padx=5)
- from_label = Label(opcoes, text="De: ", font=("Helvetica"), bg="gray" )
- from_label.grid(row=0, sticky=W)
- from_entry = Entry(opcoes)
- from_entry.delete(0, END)
- from_entry.insert(END, "")
- from_entry.grid(row=0, column=1, sticky=W)
- to_label = Label(opcoes, text="Para: ", font=("Helvetica"), bg="gray")
- to_label.grid(row=1, sticky=W)
- to_entry = Entry(opcoes)
- to_entry.delete(0, END)
- to_entry.insert(END, "")
- to_entry.grid(row=1, column=1, sticky=W)
- subject_label = Label(opcoes, text="Assunto: ", font=("Helvetica"), bg="gray")
- subject_label.grid(row=2, sticky=W)
- subject_entry = Entry(opcoes)
- subject_entry.delete(0, END)
- subject_entry.insert(END, "")
- subject_entry.grid(row=2, column=1, sticky=W)
- flood_chk = IntVar()
- flood_box = Checkbutton(opcoes, text="Flood", font=("Helvetica"), bg="gray", onvalue=1, offvalue=0, variable=flood_chk, command=set_flood)
- flood_box.grid(row=3, sticky=W)
- num_flood = Entry(opcoes, width=2, state=DISABLED)
- num_flood.grid(row=3, column=1, sticky=W)
- add_file_label = Label(opcoes, text="Adicionar arquivos: ", font=("Helvetica"), bg="gray")
- add_file_label.grid(row=4, sticky=W)
- file_btn = Button(opcoes, text="Pesquisar", font=("Helvetica"), width=12, height=1, command=add_file)
- file_btn.grid(row=4, column=1, padx=5, sticky=W)
- file_msg = Message(opcoes)
- list_chk = IntVar()
- list_box = Checkbutton(opcoes, text="Adicionar lista", font=("Helvetica"), bg="gray", onvalue=1, offvalue=0, variable=list_chk, command=add_list)
- list_box.grid(row=6, sticky=W)
- list_text = ScrolledText(opcoes, width=50, height=20)
- list_text.grid(row=7, columnspan=3, sticky=W)
- file_btn = Button(opcoes, text="Enviar", font=("Helvetica"), width=6, height=1, command=send_email)
- file_btn.grid(row=8, padx=5)
- file_btn = Button(opcoes, text="Sair", font=("Helvetica"), width=6, height=1, command=root.quit)
- file_btn.grid(row=8, column=1, padx=5)
- root.resizable(width=False, height=False)
- root.mainloop()
- root.destroy()
- # code by cm9vdA
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement