1. 程式人生 > >用 Python 發電子郵件

用 Python 發電子郵件

使用的庫

這個程式涉及兩個庫:smtplibemail

這兩個庫都是Python自帶的,所以不需要額外的下載安裝,此外,這次使用的Python版本為2.7。

思路步驟

總體思路很簡單,就像我們平常上網是通過HTTP協議一樣,我們傳送郵件是通過SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議)來傳輸的,而現在我們需要做的就是

  1. 設定好SMTP伺服器地址
  2. 告訴伺服器我們的郵箱地址和密碼
  3. 設定要傳送的郵件內容,例如傳送者地址,接收者地址,郵件主題,郵件正文,附件等
  4. 將設定好的郵件內容傳給伺服器,併發送

第一步和第二步就是需要使用smtplib

,這是一個幫助我們設定SMTP伺服器的庫,那麼具體如何設定呢?實際上我們需要的就是一個SMTP伺服器的地址,例如QQ郵箱的SMTP伺服器的地址就是:smtp.qq.com,埠號是465587

qq郵箱的SMTP地址
qq郵箱的SMTP地址

server = smtplib.SMTP("smtp.qq.com", 587)

第三步就是使用 email ,這是一個幫助我們設定郵件內容的庫,包括主題、正文等,然後用設定好的伺服器傳送設定好的郵件內容。

用賽克君的QQ郵箱傳送:
這裡寫圖片描述

另一個郵箱接收(outlook郵箱)
這裡寫圖片描述

outlook郵箱內一個帶PDF附件的郵件,可以看到附件被正確的附上了
這裡寫圖片描述

程式原始碼

傳送無附件的郵件

# 注意此處使用QQ郵箱作為傳送郵箱,如果要用其他郵箱請更改 server 中的伺服器地址

import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart

fromaddr = "傳送者的郵箱地址"
toaddr = "接收者的郵箱地址"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
# 郵件主題
msg['Subject'] = "Hooah"
# 郵件正文
body = "HAHAHA!" msg.attach(MIMEText(body, 'plain')) server = smtplib.SMTP("smtp.qq.com") server.starttls() server.login(fromaddr , "傳送者的郵箱密碼") text = msg.as_string() server.sendmail(fromaddr, toaddr, text) server.quit()

傳送有附件的郵件

# 注意此處使用QQ郵箱作為傳送郵箱,如果要用其他郵箱請更改 server 中的伺服器地址

import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email import encoders

fromaddr = "傳送者的郵箱地址"
toaddr = "接收者的郵箱地址"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
# 郵件主題
msg['Subject'] = "Hooah"
# 郵件正文
body = "HAHAHA!"

msg.attach(MIMEText(body, 'plain'))

# 附件
filename = "AttachmentTest/kaiti.pdf"
attachment = open(filename, 'rb')
part = MIMEBase('application', 'octet-stream')
# 這也可以: part = MIMEBase('application', 'pdf')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment', filename=filename)

msg.attach(part)

# 設定SMTP
server = smtplib.SMTP("smtp.qq.com")
server.starttls()
server.login(fromaddr , "傳送者的郵箱密碼")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()

傳送成功就可以看到如下的提示:
這裡寫圖片描述

END