python如何發郵件, 附件及呼叫簡訊介面
阿新 • • 發佈:2019-01-03
首先,為了讀者能夠更好的去理解python裡面如何完成這些功能的,我會盡可能的將程式碼簡化!
我們要怎麼完成利用python去發郵件呢?
首先,我們要使用一個郵件伺服器,可以是(126,163,qq,yahoo等),也可以是自己搭建的伺服器(最好),
然後開啟SMTP服務,拿到伺服器給你的授權以後就可以進行下一步操作了.
程式碼如下:
#匯入python裡面的這個stmplib這個庫
import smtplib
#匯入郵件文字模組
from email.mime.text import MIMEText
#設定SMTP伺服器
SMTPServer = "smtp.163.com"
#設定發郵件的地址,也就是自己的郵箱地址.
sender = "nj17**** [email protected]"
#郵箱的密碼,注意這是你自己的密碼哦
passwd = "lalalala**"
#設定傳送的內容
message = "今晚上山打老虎!"
#轉換為郵件文字,也就是用我們匯入的模組email.mime.text的MIMEText方法進行轉換
msg = MIMEText(message)
#設定郵件標題
msg["Subject"] = "來自帥哥的問候"
#設定傳送者的名稱
msg["From"] = sender
#設定好一切基本條件以後,萬事俱備了,開始進行連線了.
#建立STMP伺服器 ,連線STMP的伺服器
mailServer = smtplib.SMTP(SMTPServer, 25)# 25是郵件專用的埠哦.
#登入郵箱
mailServer.login(sender, passwd)
#傳送郵件
mailServer.sendmail(sender, ["957** [email protected]", "4449***[email protected]", "nj17449***[email protected]"], msg.as_string())
#傳送完畢以後,記得退出,怎麼樣,是不是很簡單呢?
mailServer.quit()
知道怎麼發郵件以後,我們來講講怎麼在郵件裡面加附件進行傳送.
先介紹一下下面兩個庫:
email.mime.multipart.MIMEMultipart([_subtype[,boundary]]):生成包括多個部分的郵件體
email.mime.image.MIMEImage():建立包含音訊資料的郵件體
程式碼如下:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from smtplib import SMTP
#以上分別匯入了 MIMEMultipart模組,和SMTP模組,MIMEText郵件文字模組
def main():
sender = SMTP('smtp.163.com') #連線伺服器郵箱
sender.login('nj174***[email protected]', 'n*****58') #輸入賬號密碼進行登入
message = MIMEMultipart() #建立一個郵件體
message['From'] = 'Mr.Liu' #設定來自誰,也就是誰發,俗稱發件人
message['To'] = '瓜西西' #設定傳送給誰 , 俗稱收件人
message['Cc'] = '[email protected]***ne.com' #設定抄送給誰
message['Subject'] = '請查收附件中的資料' #設定郵件的文字內容
text_msg = MIMEText('附件中又本月關鍵資料,請查收!', 'plain', 'utf-8') #利用MIMEText郵件文字模組進行轉化
message.attach(text_msg) #利用郵件體的attach方法將 郵件文字 '粘'上去
att2 = MIMEText(open('1000phonejavaee.pdf', 'rb').read(), 'base64', 'utf-8') # rb是二進位制的,如果要發的是其他的用'r'
att2['Content-Type'] = 'application/pd' #這裡的Content-Type為多用途網際網路郵件擴充套件型別
att2['Content-Disposition'] = 'javaee1000phone.pdf' #設定傳送後附件的名字
message.attach(att2) #將att2郵件文字也'粘'上去
sender.sendmail('[email protected]', ('[email protected]','[email protected]'), message.as_string())
sender.quit()
#這樣就完成附件的添加發送了
if __name__ == '__main__':
main()
關於使用簡訊介面傳送簡訊,在每個服務商那都已經有現成的程式碼了,我在這也就不說明了.
但是需要注意的是,傳送的內容必須是合法有效的,否則簡訊提供商會直接攔截你的請求.
程式碼如下:
# 介面型別:互億無線觸發簡訊介面,支援傳送驗證碼簡訊、訂單通知簡訊等。
# 賬戶註冊:請通過該地址開通賬戶http://sms.ihuyi.com/register.html
# 注意事項:
# (1)除錯期間,請用預設的模板進行測試,預設模板詳見介面文件;
# (2)請使用APIID(檢視APIID請登入使用者中心->驗證碼簡訊->產品總覽->APIID)及 APIkey來呼叫介面;
# (3)該程式碼僅供接入互億無線簡訊介面參考使用,客戶可根據實際需要自行編寫;
# !/usr/local/bin/python
# -*- coding:utf-8 -*-
import http.client #httplib改這個
import urllib
import random
host = "106.ihuyi.com"
sms_send_uri = "/webservice/sms.php?method=Submit"
# 使用者名稱是登入使用者中心->驗證碼簡訊->產品總覽->APIID
account = "C66644311"
# 密碼 檢視密碼請登入使用者中心->驗證碼簡訊->產品總覽->APIKEY
password = "d4bc030daa42ae3dc32ea8cbfa5abf9c"
def send_sms(text, mobile):
params = urllib.parse.urlencode(#使用這個模組功能將內容進行編碼
{'account': account, #賬號,上面已經設定
'password': password, #密碼
'content': text, #傳送的內容
'mobile': mobile, #手機號碼
'format': 'json'}) #預設格式
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"} #設定請求頭
conn = http.client.HTTPConnection(host, port=80, timeout=30) #設定連線的伺服器地址,埠,以及超時時間
conn.request("POST", sms_send_uri, params, headers) #利用請求頭去發起請求,POST是傳送,
response = conn.getresponse() #獲取請求後的結果
response_str = response.read() #讀取結果
conn.close() #關閉coon連線
return response_str #返回結果的字串
if __name__ == '__main__':
mobile = "18202835067"
#生成一個0-9的數字組成的隨機驗證碼
Random6 = str(random.randint(0,9)) + str(random.randint(0,9))+str(random.randint(0,9))+str(random.randint(0,9))+str(random.randint(0,9))
print(Random6)
text = ("您的驗證碼是:%i。請不要把驗證碼洩露給其他人。" % int(Random6))
send_sms(text, mobile)