Skip to content

โปรแกรมส่งอีเมล์โดยใช้ 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.SMTP('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  ครับ ขอบคุณครับ

Published on Categories ไม่มีหมวดหมู่

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *