-
شنبه, ۲۳ اسفند ۱۳۹۹، ۰۴:۰۶ ب.ظ
-
۵۲۹
سلام دوستان :)
امروز میخواستم برنامه فرستنده ایمیل با پایتون رو بهتون نشون بدم
کار این برنامه اینه که شما داخلش ایمیل خودت و پسورد ایمیلتون رو وارد میکنید و ایمیل هدف رو بعد برای ایمیلتون subject و body رو تایین میکنید و دکمه send رو میزنید و برنامه ایمیل رو میفرسته
خب اگه شما یک حساب gmail داشته باشید میتونید با استفاده از آدرس سرور smtp به اون متصل شین
اما متاسفانه گوگل برای امنیت بیشتر اجازه چنین کاریو نمیده
پس برای حل این مشکل به این لینک مراجعه کنید و وضعیت less secure apps را به ON تغییر دهید.
خب برای اینکار به ماژول tkinter برای گرافیک برنامه مون و به smtplib برای فرستادن ایمیل
from tkinter import *
from tkinter.scrolledtext import ScrolledText
import smtplib
بعدش button ها label ها textbox ها و... رو باید تعریف کینم پس:
root = Tk()
root.title("gmail Sender")
label_g = Label(root, text="Your Gmail-Address: ")
label_g.grid(row=0, column=0)
entry1 = Entry(root)
entry1.grid(row=0, column=1)
pass_label = Label(root, text="Your Password: ")
pass_label.grid(row=1, column=0)
entry2 = Entry(root)
entry2.grid(row=1, column=1)
label_target = Label(root, text="Your Target-Gmail-Address: ")
label_target.grid(row=2, column=0)
entry3 = Entry(root)
entry3.grid(row=2, column=1)
lbl = Label(root, text="Subject: ")
lbl.grid(row=3, column=0)
sub = Entry(root)
sub.grid(row=3, column=1)
label_text = Label(root, text="Your Message: ")
label_text.grid(row=4)
textbox = ScrolledText(root)
textbox.grid(row=5)
بعدش باید یک شئ smtp برای اتصال به سرور و یک شی برای فرستادن پیام به سمت سرور ایجاد می کنیم
def but():
message = """From Person <{0}>
To: To Person <{1}>
MIME-Version: 1.0
Content-type: text/html
Subject: {2}
{3}""".format(entry1.get(), entry3.get(), sub.get(), textbox.get(0.0, END))
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(entry1.get(), entry2.get())
smtpObj.sendmail(entry1.get(), entry3.get(), message)
خب قسمت اصلی برنامه رو نوشتیم فقط باید یک دکمه تعریف کنیم که وقتی کاربر روش کلیک میکنه ایمیل رو بفرسته.
b1 = Button(root, text="send", command=but)
b1.grid(row = 6)
آخرش هم این رو اضافه میکنیم تا برنامه بسته نشه
mainloop()
ابن هم کد کامل:
from tkinter import *
from tkinter.scrolledtext import ScrolledText
import smtplib
root = Tk()
root.title("gmail Sender")
label_g = Label(root, text="Your Gmail-Address: ")
label_g.grid(row=0, column=0)
entry1 = Entry(root)
entry1.grid(row=0, column=1)
pass_label = Label(root, text="Your Password: ")
pass_label.grid(row=1, column=0)
entry2 = Entry(root)
entry2.grid(row=1, column=1)
label_target = Label(root, text="Your Target-Gmail-Address: ")
label_target.grid(row=2, column=0)
entry3 = Entry(root)
entry3.grid(row=2, column=1)
lbl = Label(root, text="Subject: ")
lbl.grid(row=3, column=0)
sub = Entry(root)
sub.grid(row=3, column=1)
label_text = Label(root, text="Your Message: ")
label_text.grid(row=4)
textbox = ScrolledText(root)
textbox.grid(row=5)
def but():
message = """From Person <{0}>
To: To Person <{1}>
MIME-Version: 1.0
Content-type: text/html
Subject: {2}
{3}""".format(entry1.get(), entry3.get(), sub.get(), textbox.get(0.0, END))
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.ehlo()
smtpObj.starttls()
smtpObj.login(entry1.get(), entry2.get())
smtpObj.sendmail(entry1.get(), entry3.get(), message)
b1 = Button(root, text="send", command=but)
b1.grid(row = 6)
mainloop()
خب حالا برنامه رو اجرا کنین و نتیجه کار رو ببینین
امیدوارم براتون مفید بوده باشه :)