1. 程式人生 > >python如何發郵件, 附件及呼叫簡訊介面

python如何發郵件, 附件及呼叫簡訊介面

首先,為了讀者能夠更好的去理解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)