使用python傳送郵件

2021-09-11 20:26:48 字數 2939 閱讀 4650

傳送郵件這個功能非常實用,比如你寫了乙個爬蟲,可以通過郵件來接收程式異常或者任務完成的通知,再比如你搭了乙個**,別人只需留下他的郵箱,你就可以自動給他傳送郵件。

總之我覺得郵件通知非常適合那些處理批量、大量任務,你可以不用守在電腦前等待處理結果,在程式裡配置好郵件通知後,只需留意郵箱通知就好了。

在 python 實現傳送郵件需要兩個模組,分別是 smtplib 和 email,這兩個模組都是內建的,不需要自己安裝,直接 import 匯入即可。

email 主要是用來構建郵件的,比如郵件收發人、郵件標題、郵件正文以及附件啥的,smtplib 則是用來傳送郵件的。

這裡我們使用 qq 郵箱來作為發件郵箱,在使用前,需要簡單的配置下 qq 郵箱。

開啟 qq 郵箱,依次找到 設定 -> 賬戶,然後檢查 pop3/smtp 服 務是否開啟。

如果沒開啟則開啟,根據提示開啟之後我們需要獲取授權碼,這個授權碼下面我們會要用到的,這一步只要獲取到授權碼就行了。

首先就是使用 email 模組構建郵件,plain 即代表文字郵件,郵件構建完後,再使用 smtplib 傳送郵件。

#構建純文字郵件

from email.mime.text import mimetext  

from email.header import header

msg = mimetext('我是郵件正文...', 'plain', 'utf-8') # plain 表示純文字郵件  

msg['from'] = "這裡是發件者郵箱"

msg['to'] = "這裡是收件者郵箱"

msg['subject'] = header("我是郵件的標題", 'utf-8') #郵件標題

#使用smtplib模組傳送郵件

email_client = smtplib.smtp("smtp.qq.com")

email_client.login("這裡是發件者郵箱", "這裡就是上面提到獲取到的授權碼")

email_client.sendmail("這裡是發件者郵箱", "這裡是收件件者郵箱", msg.as_string())

email_client.quit()

傳送郵件的時候有兩個需要注意的地方,乙個是 smtplib.smtp 的郵件伺服器設定。

這裡我們用的 qq 郵箱作為發件郵箱,所以設定為 smtp.qq.com,如果是其他郵箱如網易郵箱,則需要設定為 smtp.163.com。

再乙個需要注意的就是 login 方法了,這個登入方法裡的第二個引數是指上面提到的授權碼,並不是你發件郵箱的登入密碼。

html 郵件主要是可以給郵件內容定義更豐富的樣式,而且可以很方便的插入鏈結。html 郵件和純文字郵件大同小異,把完整的 html 內容作為文字內容就行,再把 plain 改為 html 型別即可。

#構建html郵件

content = '' + '譚某人的部落格

' + '

'puretext = mimetext(content, 'html', 'utf-8')

# coding=utf-8

import smtplib  

from email.mime.text import mimetext  

from email.header import header

from email.mime.multipart import mimemultipart  

#郵件傳送函式

#smtphost 郵件伺服器

#fromaccount 發件郵箱

#frompasswd 發件郵件授權碼,注意並不是郵箱登入密碼

#toaccount 收件郵箱

#subject 郵件標題

#content 郵件正文

def sendmail(smtphost, fromaccount, frompasswd, toaccount, subject, content):    

#構建郵件

msg = mimemultipart()

msg['subject'] = header(subject, 'utf-8')

msg['from'] = fromaccount

msg['to'] = toaccount

content = '' + '譚某人的部落格

' + '

'    puretext = mimetext(content, 'html', 'utf-8')

msg.attach(puretext)

# 附件

#使用smtplib模組傳送郵件

email_client = smtplib.smtp(smtphost)

email_client.login(fromaccount, frompasswd)

email_client.sendmail(fromaccount, toaccount, msg.as_string())

email_client.quit()

#主函式

if __name__ == '__main__':

sendmail(

'smtp.qq.com',

'********@qq.com',#你的郵箱

'**********',#授權碼

使用Python傳送郵件

import smtplib from email.mime.text import mimetext from email.mime.image import mimeimage from email.mime.multipart import mimemultipart 多 處理模組 from ...

學習使用python傳送郵件

使用python傳送郵件 import os import smtplib import mimetypes from email.mimemultipart import mimemultipart from email.mimebase import mimebase from email.mi...

使用python指令碼傳送郵件

import smtplib from email.mime.text import mimetext from email.header import header 傳送方 sender 163.com 接收方 receiver 163.com 中文需要utf 8引數,不好使需要調整 在這裡輸入郵...