python批量发送邮件_Python批量发送邮件
1.SMTP協議
SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,是一個相對簡單的基于文本的協議, 在其之上指定了一條消息的一個或多個接收者(在大多數情況下被確認是存在的),然后消息文本會被傳輸。可以很簡單地通過telnet程序來測試一個SMTP服務器。SMTP使用TCP端口25。要為一個給定的域名決定一個SMTP服務器,需要使用MX (Mail eXchange) DNS;
2.Python的smtplib庫
Python對SMTP支持有smtplib和email兩個模塊,email負責構造郵件,smtplib負責發送郵件;
smtplib.SMTP(host="",port=0,local_hostname=None,[timeout,]source_address=None):SMTP類定義作為SMTP的構造函數定義了一個SMTP客戶端會話對象,功能是與smtp服務器建立連接,在連接成功后就可以向服務器發送相關請求,比如登陸、校驗、發送、退出等。參數host是遠程smtp主機地址、port是鏈接端口,默認25、local_hostname是將本地主機的FQDN(完整域名)發送 HELO/EHLO(標識用戶身份)的指令、timeout為鏈接或嘗試鏈接多少秒后超時、source_address是綁定到具有多個網絡接口的計算機中的某個特定源地址上或特定的TCP端口,它需要一個元組(主機,端口);
3.開啟郵箱SMTP協議
在使用SMTP協議發送郵件之前需要先查看發件人的郵箱是否開啟SMTP協議,如qq郵箱的開啟協議的方式是:找到郵箱的設置-->在設置頁面中選擇賬戶設置-->選擇開啟服務中的SMTP服務開啟,點擊開啟后會彈出一個驗證保密窗口,驗證成功后就會自動生成授權碼,這個授權碼在發送郵件時會用到;
4.使用SMTP發送郵件
在使用SMTP發送郵件發送郵件之前我們需要先導入smtplib模塊和email.mime.text模塊中的MIMEText;
然后構造一個MIMEText消息對象,其中第一個參數就是郵件正文、第二個參數是MIME的格式,第三個參數是編碼。將發件人、收件人、主題都傳入這個對象中;
然后模擬登錄服務器,使用smtplib庫中的SMTP類創建SMTP的操作對象并連接smtp目標服務器,可以是163、QQ等,如果是163郵箱服務器地址是smtp.163.com,如果是qq郵箱服務器地址是smtp.qq.com。 訪問郵箱的服務器之后需要使用login('郵箱地址','郵箱授權碼')方法根據自己的賬號登錄服務器(這里的授權碼就是之前開啟SMTP協議生成的授權碼),如果不登錄是不能發郵件的;
登錄之后再使用send_message()方法將發送郵件的消息傳遞給SMTP對象,開始發送郵件;
import smtplib
from email.mime.text import MIMEText
from const_file import passwd
def send_email(from_addr, to_addr, subject, password):
msg = MIMEText("郵件正文",'html','utf-8')
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject
smtp_server = smtplib.SMTP('smtp.qq.com')
smtp_server.login(from_addr, password)
smtp_server.send_message(msg=msg)
if __name__ == "__main__":
# passwd填寫認證密碼,不是登錄密碼
send_email("郵箱地址", "郵箱地址", "這是一封測試郵件", passwd)
5.郵件的批量發送
import smtplib
from email.mime.text import MIMEText
from const_file import passwd
def send_email(from_addr, to_addr, subject, password):
msg = MIMEText("郵件正文",'html','utf-8')
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject
smtp_server = smtplib.SMTP('smtp.qq.com')
smtp_server.login(from_addr, password)
smtp_server.send_message(msg=msg)
if __name__ == "__main__":
send_list = ['a@163.com', 'b@163.com', 'c@163.com']
for to_addr in send_list:
send_email("郵箱地址", to_addr, "這是一封測試郵件", passwd)
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python批量发送邮件_Python批量发送邮件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全球欠中国钱一览表,美国排在第一名
- 下一篇: 阿里股票怎么买,有以下三点