Introduction to Python Applications 2021 - Lecture ? === ###### tags: `Python` `Python and Its Application 2021` ## Sending E-mail from Your NYCU Account ### 取得寄信用密碼 登入 Gmail ![](https://i.imgur.com/oaI9aoq.png) 選擇安全性 ![](https://i.imgur.com/h1aW8Kz.png) 啟動二階段認證後,選擇應用程式密碼。 ![](https://i.imgur.com/uViu6VF.png) 選擇其他,並自訂名稱。 ![](https://i.imgur.com/RBqE0MT.png) 取得可用來寄信的密碼。建議用完後刪除。 ![](https://i.imgur.com/X8gWwY6.png) ## 基本寄信範例 先養成好習慣,將帳號密碼用另外一個本地檔案存放,例如在 PyCharm 中另開一個檔案叫 `mysecret.py` : ```python= # 帳號密碼 account = "mzshieh@nycu.edu.tw" password = "xhqqojzofcteytet" ``` 接下來使用以下範例程式: ```python= from email.mime.text import MIMEText from smtplib import SMTP from mysecret import account, password # 帳號密碼如果不用 mysecret 就用下面的兩行,但會隨著程式碼散布你的帳密 # account = "mzshieh@nycu.edu.tw" # password = "xhqqojzofcteytet" # 收件人 receiver = "mzhsieh@csie.nctu.edu.tw" # 寄件人 sender = "mzshieh@nycu.edu.tw" # 標題與訊息 subject = "Python應用概論期末專題繳交期限" message = """原定 2021/06/17 截止,如需延長,請來信說明何時繳交。<br/> 除非有授課老師認可之重大變故,不得晚於2021/06/25。<br/><br/> 授課老師謝旻錚""" # 信件格式設定 msg = MIMEText(message, "html") msg["Subject"] = subject msg["To"] = receiver msg["From"] = sender # 寄信部分 # 連線到 Gmail 寄信伺服器 server = SMTP("smtp.gmail.com", 587) # 啟動安全連線 server.starttls() # 登入:如無申請應用程式密碼,將無法順利登入。 server.login(account, password) # 送信:真的要送的時候,要把下面的註解取消 # server.send_message(msg) # 斷線 server.quit() ``` ## 客製化寄信範例 使用本範例程式,需準備一個 `students.csv` 作為姓名與 Email address 的對照表,格式大概如下: ```csv= 大學生,mzhsieh@csie.nctu.edu.tw 碩士生,truckski.cs93g@nctu.edu.tw ``` 範例程式如下 ```python= from email.mime.text import MIMEText from smtplib import SMTP from mysecret import account, password # 帳號密碼如果不用 mysecret 就用下面的兩行,但會隨著程式碼散布你的帳密 # account = "mzshieh@nycu.edu.tw" # password = "xhqqojzofcteytet" # 開學生資料CSV檔案 with open('students.csv', encoding='utf8') as FILE: # 每個學生執行一次 for line in FILE: # 取得收件人姓名與 E-mail address name, address = line.strip().split(",")[:2] # 收件人 receiver = address # 寄件人 sender = "mzshieh@nycu.edu.tw" # 標題與訊息:可針對不同收信人客製化內容 subject = "Python應用概論期末專題繳交期限" message = f"""{name}同學您好,<br/><br/> 原定 2021/06/17 截止,如需延長,請來信說明何時繳交。<br/> 除非有授課老師認可之重大變故,不得晚於2021/06/25。<br/><br/> 授課老師謝旻錚""" # 信件格式設定 msg = MIMEText(message, "html") msg["Subject"] = subject msg["To"] = receiver msg["From"] = sender # 寄信部分 # 連線到 Gmail 寄信伺服器 server = SMTP("smtp.gmail.com", 587) # 啟動安全連線 server.starttls() # 登入:如無申請應用程式密碼,將無法順利登入。 server.login(account, password) # 送信提示: print(f"Sending to {name}: {address}") # 送信:真的要送的時候,要把下面的註解取消 # server.send_message(msg) # 斷線 server.quit() ```