2023年10月3日 大風大雨,一夜入冬了
試著對擴大你所接觸的人的視野,你將會發現同時也擴大了你自己對生命的展望
我記得老科說過一句話,其他任何人對我的期待再怎麼高,也高不過我對自己的期望(共勉)
昨天晚上和老媽聊了職業規劃,現實與無價的夢想
體制內不好進,但是也願意一試,各有優劣,就是昨天改bug時腦仁疼,不知道什麼時候是個頭,突然有的想法,我熱愛我的家鄉華中地區,但是我若選擇新疆或者境外,這種工作地點,父母同樣能陪伴和移居,那種毅然決然真的很感動
我是希望自己有進體制內的果敢,也有離開體制內的能力
我在忙忙著給30歲的自己準備禮物
接昨天未解決的問題
如果你的python版本是3.7,很可能發生這種報錯。因為python 3.7修改了ssl.py,導致smtplib.smtp_ssl也連帶產生了問題,
可使用下列**解決
# 改動這句**
server = smtplib.smtp_ssl()
# 在括號內加入host引數
server = smtplib.smtp_ssl(smtp_server)
加入host引數後,這個問題應該就迎刃而解了
如果你用的是qq以外的其他郵箱,也可能會出現一種報錯
比如利用我的企業郵箱的話,就會出現如下報錯資訊:smtplib.smtpexception: no suitable authentication method found搜尋後,
我們很快就會發現,解決方案是:在登入(login)之前呼叫starttls()方法就可以了。也就是在**中加入這樣一行:
server.starttls()
接下來,豐富一下郵件內容
郵件頭(header,沒錯它也叫header)是這一塊區域,包括主題、發件人、收件人等資訊:
from email.header import header
msg['from'] = header('from address')
msg['to'] = header('to adress')
當正文需要換行時
text= nice to meet you, and ,,,,,,,a long story
msg=(text,'plain','utf-8')
出於保護隱私的目的,我們可以把收發件人,和授權碼這些資訊用input()變成需要輸入的模式
例如
# 發信方的資訊:發信郵箱,qq郵箱授權碼)
password = input('請輸入郵箱授權碼:')
# 收信方郵箱
當你已經獲得完整傳送郵件的技能
接下來就要考慮**郵件啦
主要有三種**方式
設定乙個列表形式的變數
用while迴圈
呼叫csv模組
一,是將收件人信箱的變數設定成乙個可以裝多個內容的列表:
to_addrs = ['[email protected]','[email protected]']
需要注意的是,to_addrs變數也將作為引數被傳入header方法中:
msg['to'] = header(to_addrs)
直接執行程式的話會發生報錯
因為header接受的第乙個引數的資料型別必須要是字串或者位元組(bytes或者str),列表不能解碼
所以這裡將「to_addrs」變成乙個字串
msg['to']=header(",".join(to_addrs))
join()函式,它的功能是把字串合併join()的用法是str.join(sequence),str代表在這些字串之中你要用什麼字串來連線,你可以用逗號,空格,下劃線等等。要將列表的元素合併,當然我們就直接使用逗號來連線了
to_addrs = ['[email protected]','[email protected]']
print(type(['[email protected]','[email protected]']))
print(type(",".join(to_addrs)))
第二種方法是採用詢問「是否繼續輸入郵箱位址」的方式,並用while迴圈來實現多個收件人的功能。
由於我們要儲存輸入的內容,供發郵件的時候使用。所以需要定義乙個空列表to_addrs,用來存放收件人郵箱位址。
輸入郵箱位址的時候,位址會被追加寫進列表。
因為迴圈次數不固定,所以我們選擇while迴圈來做。我的這段**是這樣的,加了乙個print()函式來確認結果:
to_addrs=
while true:
a=input('[email protected]')
b=input('是否繼續輸入,n退出,任意鍵繼續')
if b=='n':10
break
print(to_addrs)
第三種方法
將收件人郵箱寫入csv檔案,在發郵件時讀取csv檔案
引入csv模組;提供需要寫入csv檔案的資料,
建檔案並寫入。
import csv
data=[['zhenzhen','zhenzhen.qq.com'],['haohao','haohao.qq.com']]
with open('to_addrs.csv','w',newline=' ') as f:
writer=csv.writer(f)
for row in data:
writer.writerow(row)
第一行,引入模組。第四行是等待寫入csv檔案的資料。但是我們沒有這樣的檔案,所以還需要新建乙個to_addrs.csv檔案。
我們使用的是with語句新建檔案,這樣做的好處是:到達語句末尾時,會自動關閉檔案,不需要close()。緊接著,我們定義了乙個變數writer進行寫入,將剛才的檔案變數傳進來。之後就是進行資料寫入,寫入的方法是writerow()。
通過遍歷列表data將資料一行行寫到了to_addrs.csv檔案中。
with open('to_addrs.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
to_addrs=row[1]
啊~今日早更完,晚安 python 自動群發郵件
生活中我們經常傳送郵件,那麼我們能不能用python寫乙個自動傳送郵件的功能呢?答案是肯定的!開始實現功能之前我們需要開啟我們郵箱的 imap smtp功能,我們先了解一下什麼是imap smtp。smtp的全稱是 mail transfer protocol 即簡單郵件傳輸協議。它是一組用於從源位...
Python群發郵件 練習
我的python 學習筆記,練習題 在輸入乙個收件郵箱結束後,彈出輸入框詢問使用者是否需要繼續輸入郵箱,如果需要輸入收件郵箱,按其他按鍵繼續 如果不再需要輸入收件郵箱,那直接按n退出,開始傳送郵件。from email import encoders encoders 編碼器 from email....
用Python實現群發郵件
用python實現 郵件 要實現用python 郵件功能,需要用到 email 和 smtplib 這兩個模組.前者用來構建郵件內容 後者用來傳送郵件 匯入模組 import smtplib from email.mime.text import mimetext 定義變數 發件人資訊 發件郵箱,q...