在即時通訊軟體如此發達的今天,電子郵件仍然是網際網路上使用最為廣泛的應用之一,公司向應聘者發出錄用通知、**向使用者傳送乙個啟用賬號的鏈結、銀行向客戶推廣它們的理財產品等幾乎都是通過電子郵件來完成的,而這些任務應該都是由程式自動完成的。
就像我們可以用http(超文字傳輸協議)來訪問乙個**一樣,傳送郵件要使用smtp(簡單郵件傳輸協議),smtp也是乙個建立在tcp(傳輸控制協議)提供的可靠資料傳輸服務的基礎上的應用級協議,它規定了郵件的傳送者如何跟傳送郵件的伺服器進行通訊的細節,而python中的smtplib模組將這些操作簡化成了幾個簡單的函式。
下面的**演示了如何在python傳送郵件。
from smtplib import smtp
from email.header import header
from email.mime.text import mimetext
def main():
# 請自行修改下面的郵件傳送者和接收者
sender = '[email protected]'
receivers = ['[email protected]', '[email protected]']
message = mimetext('用python傳送郵件的示例**.', 'plain', 'utf-8')
message['from'] = header('王大錘', 'utf-8')
message['to'] = header('駱昊', 'utf-8')
message['subject'] = header('示例**實驗郵件', 'utf-8')
smtper = smtp('smtp.126.com')
# 請自行修改下面的登入口令
smtper.login(sender, 'secretpass')
smtper.sendmail(sender, receivers, message.as_string())
print('郵件傳送完成!')
if __name__ == '__main__':
main()
如果要傳送帶有附件的郵件,那麼可以按照下面的方式進行操作。
from smtplib import smtp
from email.header import header
from email.mime.text import mimetext
from email.mime.image import mimeimage
from email.mime.multipart import mimemultipart
import urllib
def main():
# 建立乙個帶附件的郵件訊息物件
message = mimemultipart()
# 建立文字內容
text_content = mimetext('附件中有本月資料請查收', 'plain', 'utf-8')
message['subject'] = header('本月資料', 'utf-8')
# 將文字內容新增到郵件訊息物件中
message.attach(text_content)
# 讀取檔案並將檔案作為附件新增到郵件訊息物件中
with open('/users/hao/desktop/hello.txt', 'rb') as f:
txt = mimetext(f.read(), 'base64', 'utf-8')
txt['content-type'] = 'text/plain'
txt['content-disposition'] = 'attachment; filename=hello.txt'
message.attach(txt)
# 讀取檔案並將檔案作為附件新增到郵件訊息物件中
with open('/users/hao/desktop/彙總資料.xlsx', 'rb') as f:
xls = mimetext(f.read(), 'base64', 'utf-8')
xls['content-disposition'] = 'attachment; filename=month-data.xlsx'
message.attach(xls)
# 建立smtp物件
smtper = smtp('smtp.126.com')
# 開啟安全連線
# smtper.starttls()
sender = '[email protected]'
receivers = ['[email protected]']
# 登入到smtp伺服器
# 請注意此處不是使用密碼而是郵件客戶端授權碼進行登入
# 對此有疑問的讀者可以聯絡自己使用的郵件伺服器客服
smtper.login(sender, 'secretpass')
# 傳送郵件
smtper.sendmail(sender, receivers, message.as_string())
# 與郵件伺服器斷開連線
smtper.quit()
print('傳送完成!')
if __name__ == '__main__':
main()
傳送簡訊也是專案中常見的功能,**的註冊碼、驗證碼、營銷資訊基本上都是通過簡訊來傳送給使用者的。在下面的**中我們使用了互億無線簡訊平台(該平台為註冊使用者提供了50條免費簡訊以及常用開發語言傳送簡訊的demo,可以登入該**並在使用者自服務頁面中對簡訊進行配置)提供的api介面實現了傳送簡訊的服務,當然國內的簡訊平台很多,讀者可以根據自己的需要進行選擇(通常會考慮費用預算、簡訊達到率、使用的難易程度等指標),如果需要在商業專案中使用簡訊服務建議購買簡訊平台提供的**服務。
# 下面的引數需要填入自己註冊的賬號和對應的密碼
IOS開發之 網路應用
nsdata foundation nsurl nsurlrequest nsurlconeection nsnetservice nsnetservicebrowser core foundation cfnetwork cfnetservice bsd sockets 1 獲取 nsdata d...
day14 卷積網路識別手寫數字
卷積網路的結構為 權重初始化函式 param shape return weight tf.variable tf.random normal shape,seed 0.0,stddev 1.0 return weight def bias variable shape 偏置初始化函式 param ...
web應用開發實戰作業day02
1.屬性和標籤什麼關係?html屬性一般都出現在html標籤中,html屬性是html標籤的一部分。標籤可以有屬性,它包含了額外的資訊,屬性的值一般要在引號中 有時也可以不加引號 標籤可以擁有乙個或多個屬性,也可以沒有屬性 屬性一般由屬性名和值成對出現。屬性選擇器可以挑選帶有特殊屬性的標籤語法 屬性...