פרוטוקול SMTP הוא פרוטוקול להעברת מיילים בין שרתי מייל. לשפת Python יש מודול בשם smtplib אשר מגדיר אובייקט SMTP על מנת שנוכל לשלוח מייל לכל מכונה אינטרנטית בעלת SMTP או ESMTP
שימו לב שעל מנת שתוכלו להבין ולבצע את הכתוב במדריך זה, יש צורך בידע מקדים בשפת Python.
לפניכם התחביר הבסיסי ליצור אובייקט SMTP על מנת שנוכל להשתמש בו לשלוח מייל:
import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
ואלו הם פרטי הפרמטרים:
- host – כתובת המארח, ניתן לרשום את כותבת ה-IP של שרת ה-SMTP, או כתובת אינטרנט, בכל מקרה פרמטר זה הוא אופציונלי
- port – אם הזנו כתובת ל-host, אז נצטרך לציין גם את ה-port שבו מאזין ה-SMTP. ברוב המקרים ה-port יהיה 25
- local_hostname – אם שרת ה-SMTP רץ על המחשב שלנו, אז יש לציין localhost
לאובייקט SMTP יש פונקציה ייחודית שנקראת sendmail שמטרתה לעשות עבורנו את עבודת שליחת המייל, לפי הפרמטרים הבאים:
- השולח – מחרוזת שהיא כתובת השולח
- נמענים – רשימה של מחרוזות שכל אחת מהן היא כתובת של נמען
- ההודעה – מחרוזת שהיא תוכן ההודעה
לפניכם דוגמה לשליחת מייל מה-gmail שלכם באמצעות שפת Python, שימו לב לשורה 20 שבה הגדרנו את gmail.com כמארח SMTP ב-port 587:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText mail_content = '''Hello, This is a simple mail. There is only text, no attachments are there The mail is sent using Python SMTP library. Thank You ''' #The mail addresses and password sender_address = 'sender@gmail.com' sender_pass = '***************' receiver_address = 'reciver@gmail.com' #Setup the MIME message = MIMEMultipart() message['From'] = sender_address message['To'] = receiver_address message['Subject'] = 'A test mail sent by Python. It has an attachment.' #The subject line #The body and the attachments for the mail message.attach(MIMEText(mail_content, 'plain')) #Create SMTP session for sending the mail session = smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port session.starttls() #enable security session.login(sender_address, sender_pass) #login with mail_id and password text = message.as_string() session.sendmail(sender_address, receiver_address, text) session.quit() print('Mail Sent')
fg