6 กรกฎาคม 2557

Published กรกฎาคม 06, 2557 by with 0 comment

โปรแกรมส่งอีเมล์โดยใช้ smtplib ผ่านโพรโทคอล SMTP

สวัสดีครับทุกท่าน วันนี้ผมขอนำเสนอตัวอย่างโปรแกรมส่งอีเมล์โดยใช้ smtplib วิ่งผ่านโพรโทคอล SMTP ครับ การที่จะทำแบบนั้นได้โดยใช้ Python 3 ต้องใช้ smtplib ครับ


ตัวอย่างที่1

#!/usr/bin/env python3


import smtplib


from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText


# me == อีเมล์ของผู้อ่าน
# you == อีเมล์ของคนที่ต้องการส่งถึง
me = "[email protected]"
you = "[email protected]"
 
# Create message container - the correct MIME type is multipart/alternative.
msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = me
msg['To'] = you


# Create the body of the message (a plain-text and an HTML version).

text = "สวัสดี!\n คุณสบายดีไหม?\n"

html = """\
<html>
  <head></head>
  <body>
    <p>สวัสดีครับ!<br>
       คุณสบายดีไหม?<br>
    </p>
  </body>
</html>
"""

# Record the MIME types of both parts - text/plain and text/html.
part1 = MIMEText(text, 'plain') #ส่งแบบ text
part2 = MIMEText(html, 'html') # ส่งแบบ html

# Attach parts into message container.
# According to RFC 2046, the last part of a multipart message, in this case
# the HTML message, is best and preferred.
msg.attach(part1)
msg.attach(part2)
 
# ส่งโดยใช้  SMTP
s = smtplib.('localhost')
# sendmail function takes 3 arguments: sender's address, recipient's address
# and message to send - here it is sent as one string.
s.sendmail(me, you, msg.as_string())
s.quit()

---------------------------
ตัวอย่างที่ 2 ส่งอีเมลโดยผ่านผู้ให้บริการอีเมล์โพรโทคอล SMTP เช่น Gmail Yahoo! เป็นต้น
import smtplib
import os
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders


mail_user = "[email protected]"
mail_pwd = "รหัสผ่าน"


def mail(to, subject, text, attach):
   msg = MIMEMultipart()

   msg['From'] = mail_user
   msg['To'] = to
   msg['Subject'] = subject
   msg.attach(MIMEText(text))


   part = MIMEBase('application', 'octet-stream')
   part.set_payload(open(attach, 'rb').read())
   encoders.encode_base64(part)
   part.add_header('Content-Disposition','attachment; filename="%s"' % os.path.basename(attach))
   msg.attach(part)


   mailServer = smtplib.SMTP("smtp.gmail.com", 587) #ผู้อ่านสามารถตั้งค่า SMTP ตามที่ผู้ให้อีเมล์กำหนดครับ
   mailServer.ehlo()
   mailServer.starttls()
   mailServer.ehlo()
   mailServer.login(mail_user, mail_pwd)
   mailServer.sendmail(mail_user, to, msg.as_string())
   # Should be mailServer.quit(), but that crashes...
   mailServer.close()



mail("ชื่ออีเมล์ที่ต้องการส่ง","ชื่อหัวข้อเมล์","ข้อความ","ไฟล์ที่ต้องการแนบไปด้วย ขนาดไฟล์ต้องไม่เกินกว่าที่ผู้ให้บริการกำหนดไว้")


การนำไปพัฒนาต่อ

ผู้อ่านสามารถลอองนำไปพัฒนาต่อ เช่น ส่งอีเมล์ตามรายชื่อในไฟล์ txt หรือนำไปประยุกต์ใช้เป็น GUI  ครับ

ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)