事實上在鄉下家的 Raspberry Pi 3 裡面就一直在跑著一支 Python 程式, 用來不斷監視 ADSL 外網 IP 是否有變動, 有的話就會透過我的 Hinet 郵件主機寄一封 E-mail 通知我, 方便我隨時從外地連線回去, 參考 :
不過那程式是參考網路上別人分享的範例修改來的, 當時對 smtplib 還不熟, 只要程式修改後能跑會正常運作即可. 既然現在摸得較熟了, 應該模仿 Gmail 做一個較完整的測試才對.
用 Python 程式透過 Gmail 寄信的測試參考 :
# Python 學習筆記 : 以 Gmail 寄送郵件的方法 (一)
# Python 學習筆記 : 以 Gmail 寄送郵件的方法 (二)
模組 smtplib 詳細文件參考 :
# https://docs.python.org/3/library/smtplib.html
本篇測試主要參考了下列書籍 :
# Python 入門邁向高手之路-王者歸來 (深石, 洪錦魁) 第 26 章
# Python:網路爬蟲與資料分析入門實戰 (博碩, 林俊瑋) 第 8 章
測試 1 : 傳送 HTML
import smtplib
from email.mime.text import MIMEText
html="""
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<title>HTML mail</title>
</head>
<body>
<b>HTML 郵件測試</b>
</body>
</html>
"""
mime=MIMEText(html, "html", "utf-8")
mime["Subject"]="Hinet mail sent by Python scripts(HTML)"
mime["From"]="Your best friend"
mime["To"]="mailgroup"
mime["Cc"]="myyahoomail@yahoo.com"
msg=mime.as_string()
print(msg)
smtp=smtplib.SMTP("msr.hinet.net")
smtp.ehlo()
smtp.starttls()
smtp.login("myhinetmail@ms5.hinet.net", "hinetmailpassword")
from_addr="myhinetmail@ms5.hinet.net"
to_addr=["mygmail@gmail.com", "mycompanymail@blablabla.com.tw"]
status=smtp.sendmail(from_addr, to_addr, msg)
if status=={}:
print("郵件傳送成功!")
else:
print("郵件傳送失敗!")
smtp.quit()
測試 2 : 傳送文字檔
import smtplib
from email.mime.text import MIMEText
with open("test.txt", "rb") as file:
filecontent=file.read()
mime=MIMEText(filecontent, "base64", "utf-8")
mime["Content-Type"]="application/octet-stream"
mime["Content-Disposition"]='attachment; filename="test.txt"'
mime["Subject"]="Hinet mail sent by Python scripts(TEXT)"
mime["From"]="Your best friend"
mime["To"]="mailgroup"
mime["Cc"]="myyahoomail@yahoo.com"
msg=mime.as_string()
print(msg)
smtp=smtplib.SMTP("msr.hinet.net")
smtp.ehlo()
smtp.starttls()
smtp.login("myhinetmail@ms5.hinet.net", "hinetmailpassword")
from_addr="myhinetmail@ms5.hinet.net"
to_addr=["mygmail@gmail.com", "mycompanymail@blablabla.com.tw"]
status=smtp.sendmail(from_addr, to_addr, msg)
if status=={}:
print("郵件傳送成功!")
else:
print("郵件傳送失敗!")
smtp.quit()
測試 3 : 傳送圖片
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
with open("桌面_海灣.jpg", "rb") as file:
filecontent=file.read()
mime=MIMEImage(filecontent, "image/jpeg")
mime["Content-Type"]="image/jpeg"
mime["Content-Disposition"]='attachment; filename="桌面_海灣.jpg"'
mime["Subject"]="Hinet mail sent by Python scripts(圖片附檔測試)"
mime["From"]="Your best friend"
mime["To"]="mailgroup"
mime["Cc"]="myyahoomail@yahoo.com"
msg=mime.as_string()
print(msg)
smtp=smtplib.SMTP("msr.hinet.net")
smtp.ehlo()
smtp.starttls()
smtp.login("myhinetmail@ms5.hinet.net", "hinetmailpassword")
from_addr="myhinetmail@ms5.hinet.net"
to_addr=["mygmail@gmail.com", "mycompanymail@blablabla.com.tw"]
status=smtp.sendmail(from_addr, to_addr, msg)
if status=={}:
print("郵件傳送成功!")
else:
print("郵件傳送失敗!")
smtp.quit()
沒有留言:
張貼留言