1. 程式人生 > >Python學習筆記(十五)——自動傳送對應郵件(表格與郵件)練習

Python學習筆記(十五)——自動傳送對應郵件(表格與郵件)練習

  • 從Excel 電子表格中讀取資料。
  • 找出上個月沒有交費的所有會員。
  • 找到他們的電子郵件地址,向他們傳送針對個人的提醒。

這意味著程式碼需要做到以下幾點:

  • 用openpyxl 模組開啟並讀取Excel 文件的單元格(處理Excel 檔案參煤
  • 建立一個字典,包含會費超期的會員。
  • 呼叫smtplib.SMTP()、ehlo()、starttls()和login(),登入SMTP 伺服器,
  • 針對會費超期的所有會員,呼叫sendmail()方法,傳送針對個人的電子郵件
  • 開啟一個新的檔案編輯器視窗,並儲存為sendDuesReminders.py
#! python3
#-*- encoding: utf-8 -*-
# sendDuesReminders.py - Sends emails based on payment status in spreadsheet # Usage: # # Author : qmeng # MailTo : [email protected] # QQ : 1163306125 # Blog : http://blog.csdn.net/Mq_Go/ # Create : 2018-02-15 15:56:52 # Version: 1.0 # import openpyxl import smtplib import sys from smtplib import
SMTP_SSL from email import encoders from email.header import Header from email.mime.text import MIMEText from email.utils import parseaddr, formataddr def _format_addr(s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr)) #開啟Excel檔案 wb = openpyxl.load_workbook('duesRecords.xlsx'
) sheet = wb.get_sheet_by_name('Sheet1') lastCol = sheet.max_column latestMonth = sheet.cell(row=1,column=lastCol).value #找到未付款成員 unpaidMembers = {} for r in range(2,sheet.max_row+1): payment = sheet.cell(row=r,column=lastCol).value if payment != 'paid': name = sheet.cell(row=r,column=1).value email = sheet.cell(row=r,column=2).value unpaidMembers[name] = email #傳送定製的電子郵件提醒 mailInfo = {} mailInfo['Username'] = input('Username:') mailInfo['Password'] = input('Password:') mailInfo['Hostname'] = input('Hostname:') msg = MIMEText('hello,這是來自Python的信\n 新年快樂!!!','plain','utf-8') msg['From'] = _format_addr('奇奇 <%s>' % mailInfo['Username'] ) msg['Subject'] = Header('來自新年的問候...','utf-8').encode() for name,to in unpaidMembers.items(): msg['To'] = _format_addr('使用者%s <%s>' % (name,to)) smtp = SMTP_SSL(mailInfo["Hostname"]) smtp.set_debuglevel(1) smtp.ehlo(mailInfo["Hostname"]) smtp.login(mailInfo["Username"],mailInfo["Password"]) smtp.sendmail(mailInfo['Username'],to,msg.as_string()) smtp.quit() print('向用戶 '+ name + ' ' + to +' 傳送定製的電子郵件...成功')

相關推薦

Python學習筆記——自動傳送對應郵件表格郵件練習

從Excel 電子表格中讀取資料。 找出上個月沒有交費的所有會員。 找到他們的電子郵件地址,向他們傳送針對個人的提醒。 這意味著程式碼需要做到以下幾點: 用openpyxl 模組開啟並讀取Excel 文件的單元格(處理Excel 檔案參煤 建立一個

python學習筆記一節叠代和其他

技術分享 img 余數 商品列表 步長 取數 sorted函數 學習 四舍五入 yiled 面相過程編程 造好內容,統一發給下面 上面這個是傻瓜版 內置函數 print(divmod(10,3)) 將10除以3,顯示商和余數 enumerate函數,顯示元素及它

JAVA學習第四課 — 其它對象APISystem、Runtime、Math類

大整數 協調 1.5 tint ava 字符串 垃圾 void lol 一、System類 1. static long currentTimeMillis() 返回以毫秒為單位的當前時間。 實際上:當前時間與協調世界時 1970 年 1 月 1 日午夜之間的時間差(

Python學習筆記八 面向對象高級編程

tin 學習筆記 不可 __str__ 有一個 類的屬性 -- pes 實例名 參考教程:廖雪峰官網https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 一、使

Python學習筆記7 頭文件的添加規則轉載

www. nbsp .html 一個 情況 str tno sys AS 轉載自:https://www.cnblogs.com/taurusfy/p/7605787.html **********************************************

Python學習筆記-SQLSERVER的大批量匯入以及日常操作比executemany快3倍

環境 : python3.6 / win10 / vs2017 / sqlserver2017 一、需要安裝的包pymssql pip install pymssql 二、pymssql模組的介紹 pymssql 包 有modules: pymssql – 如果您關注DB-API遵從性,或者如果您習慣於

python學習筆記二節

random 對象 學習 alt 重命名 浮點 內容 目錄 模塊 模塊:模塊本質上就是一個py文件。分為三部分:內置模塊、第三方模塊(模塊調用以及包的概念)先找解釋器裏的Py文件 再找安裝路徑lib下的文件,再找自定義的模塊。時間戳:1970年設置的一個時間為0,時間每增加

python學習之第課時--存址方式及拷貝

pre env 就是 宋體 spa 基本數據類型 -1 數字 ron 不同數據類型在內存中的存址方式 字符串str,一次性創建,不能被修改,只要有修改字符串,就是在重新創建新的字符串 Python底層是c語言寫的,c語言沒有字符串的說法,字符串是字符數組,所以在內存

學習筆記章 JavaScript基礎

continue 分隔符 全部 scrip 允許 非循環 元素 當前 避免 第15章 JavaScript基礎 【學習重點】 了解JavaScript基礎知識 熟悉常量和變量 能夠使用表達式和運算符 正確使用語句 能夠掌握數據類型和轉換的基本方法 正確使用函數、對象、

學習筆記第二節課

作業正則介紹_grep 正則就是一串有規律的字符串,包含特殊符號。 對以後的寫shell腳本很大的幫助。可以實現很多復雜的需求。 第一個工具 grep grep 用來過濾關鍵詞。 -c 行數,過濾出來的這些行有多少行。 做實驗,先把etc/passwd 作為一個樣本文件 cp 到 創建的gre

Python學習筆記二_繼承

類的方法 elf 重寫 它的 smi 基礎上 調用 新功能 廣度優先   上一篇“面向對象”中簡單介紹了繼承,即一個類可以派生出子類,在這個父類裏定義的屬性、方法自動被子類繼承。子類可以重寫父類方法。繼承是為了代碼重用。這篇重點寫一下重寫父類的方法及經典類與新式類在多繼承時

Python學習筆記二_多線程多進程

方法 很多 問題 quest 磁盤 結果 gil 解鎖 ems 一、什麽是線程&進程 1、進程 (Process)   是資源的集合。其實就是程序(qq進程)。對於操作系統來說一個任務就是一個進程,例如打開瀏覽器就啟動了一個瀏覽器進程,打開word就啟動了一個wo

python學習第七天:多表查詢

object rim pytho 連表查詢 mit str () tle detail 創建模型 class Book(models.Model): nid = models.AutoField(primary_key=True) name = models

python學習第八天:網絡爬蟲之數據解析方式

數據解析 模式 end 解析 多次 pre 綜合練習 直接 list Python網絡爬蟲之數據解析方式 正則解析 單字符: . : 除換行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一個字符 \d :數字

python學習第九天:linux基礎學習

寫入 tool 時區 and 打開 新版 查看 nal mkdir 裝系統 net.ifnames=0 biosdevname=0 修改系統網絡配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 修改ip地址的文件

學習筆記第二節:Meet in the Middle

正題       Meet in the Middle,折半搜尋。       用來解決一些普通搜尋過不了的,但是支援合併的題目。       以這一題為例:[CEOI2015 Day2]世界冰

opencv學習筆記:人臉識別演算法之EigenFace

簡要: 特徵臉演算法是將影象每一個畫素當作一維特徵,然後用SVM或其它機器學習演算法進行訓練。但這樣維數太多,根本無法計算。我這裡用的是ORL人臉資料庫,英國劍橋實驗室拍攝的,有40位志願者的人臉,在不同表情不同光照下每位志願者拍攝10張,共有400張圖片,大小為112*9

機器學習學習筆記章 貝葉斯演算法

貝葉斯演算法 貝葉斯要解決的問題 正向概率 逆向概率 舉例:一個班級中,男生 60%,女生 40%,男生總是穿長褲,女生則一半穿長褲一半穿裙子 正向概率:隨機選取一個學生,他(她)穿長褲的概率和穿

流程python學習筆記:第章(1)

第五章:一等函式 在python中一切都可以視作為物件,包括函式。我們來看個例子: def function_try():     '''it is funciton try doc'''     print 'function_try' if __name__=="_

深度學習花書學習筆記章 表示學習

本章的表示學習主要就是通過無監督訓練學習特徵的意思。 這種沒有具體的演算法,就是介紹表示學習的應用和大概的分支,至於如何進行表示學習,沒有詳細介紹。感覺可以直接跳過。。 貪心逐層無監督預訓練 貪心演算法在無監督訓練中的應用,每層只關心當前,進行訓練。 無監督指低層訓練