欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python給指定csv表格中的聯(lián)系人群發(fā)郵件(帶附件的郵件)

 更新時(shí)間:2019年12月31日 13:23:04   作者:湯圓不是油條  
這篇文章主要介紹了python給指定csv表格中的聯(lián)系人群發(fā)郵件,本文通過代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

以下為使用python給指定路徑的csv表格中的聯(lián)系人群發(fā)帶附件的郵件(csv表格的第一列為聯(lián)系人姓名,第二列為聯(lián)系人郵箱賬號(hào))的代碼,詳情見注釋。

import time
import csv #用于讀取收件人列表
import smtplib #用于發(fā)送郵件
from email.header import Header #Header用于構(gòu)造郵件頭
from email.mime.text import MIMEText #MIMEText用于構(gòu)造文本郵件
from email.mime.image import MIMEImage #MIMEImage用于構(gòu)造圖片郵件
from email.mime.multipart import MIMEMultipart #MIMEMultipart用于構(gòu)造復(fù)雜郵件(帶附件的郵件)
#收件人信息創(chuàng)建
def receive_info():
  # 可以是一個(gè)列表,支持多個(gè)郵件地址同時(shí)發(fā)送,測試改成自己的郵箱地址
  to_addrs = []
  #to = input('請(qǐng)輸入收件人郵箱:')
  with open('收件人郵箱.csv','r',encoding='utf-8') as f:
    reader = csv.reader(f)
    try:
      for row in reader:
        to_addrs.append(row[1])
      print('收件人信息讀取完畢!')
      time.sleep(1)
      print('以下為收件人郵箱列表:\n',to_addrs)
      receivers = ','.join(to_addrs)
    except Exception as e:
      print('讀取收件人信息失?。≡蛉缦拢?)
      print(e)
  return to_addrs,receivers
#發(fā)件人信息創(chuàng)建
def send_info():
  print('開始輸入發(fā)件人信息...')
  time.sleep(1)
  try:
    sender_mail = input('請(qǐng)輸入發(fā)件人郵箱:')
    sender_pass = input('請(qǐng)輸入發(fā)件人郵箱授權(quán)碼(不要加空格):')#同樣是亂打的
    smtp_server = 'smtp.qq.com' #郵箱服務(wù)器
    time.sleep(1)
    print('發(fā)件人信息錄入成功!')
  except Exception as e:
    print('發(fā)件人信息輸入失??!以下為失敗原因:')
    print(e)
  return sender_mail,sender_pass,smtp_server
#構(gòu)造郵件
def mail_body(to):
  # 設(shè)置總的郵件體對(duì)象,對(duì)象類型為mixed,可以構(gòu)造帶附件的復(fù)雜郵件
  msg_root = MIMEMultipart('mixed')
  # 郵件添加的頭尾信息等
  msg_root['From'] = Header(sender_mail)
  msg_root['To'] = Header(receivers) #Header的參數(shù)不能為列表
  # 郵件的主題,顯示在接收郵件的預(yù)覽頁面
  subject = 'python sendemail test successful'
  msg_root['subject'] = Header(subject, 'utf-8') #第一個(gè)參數(shù)為郵件主題,第二個(gè)參數(shù)為編碼方式
  # 構(gòu)造正文文本內(nèi)容
  text_info = 'hello world'
  text_sub = MIMEText(text_info, 'plain', 'utf-8') #第一個(gè)參數(shù)為文本內(nèi)容,第二個(gè)參數(shù)為格式(‘plain'為純文本,第三個(gè)參數(shù)為編碼方式)
  msg_root.attach(text_sub)
  # 構(gòu)造超文本附件
  url = "https://blog.csdn.net/m0_45654959"
  html_info = """
  <p>點(diǎn)擊以下鏈接,你會(huì)去向一個(gè)更大的世界</p>
  <p><a href="%s" rel="external nofollow" >click me</a></p>
  <p>i am very galsses for you</p>
  """% url
  html_sub = MIMEText(html_info, 'html', 'utf-8') #超文本郵件體
  # 如果不加下邊這行代碼的話,上邊的文本是不會(huì)正常顯示的,會(huì)把超文本的內(nèi)容當(dāng)做文本顯示
  html_sub["Content-Disposition"] = 'attachment; filename="csdn.html"' #將超文本郵件體作為附件
  # 把構(gòu)造的內(nèi)容(超文本附件)寫到郵件體中
  msg_root.attach(html_sub)
  # 構(gòu)造圖片附件
  image_file = open(r'D:\Anaconda\programm_my\little_programm\test.gif', 'rb').read()
  image = MIMEImage(image_file) #圖片郵件體
  image.add_header('Content-ID', '<image1>') #將圖片在郵件中的目錄ID設(shè)為<image1>,只有一張圖片時(shí)此句可以省略
  # 如果不加下邊這行代碼的話,會(huì)在收件方方面顯示亂碼的bin文件,下載之后也不能正常打開
  image["Content-Disposition"] = 'attachment; filename="hua_ji.gif"'
  #把構(gòu)造的內(nèi)容(圖片附件)寫入郵件體當(dāng)中
  msg_root.attach(image)
  # 構(gòu)造文本附件(base64數(shù)據(jù)流)
  txt_file = open(r'D:\Anaconda\programm_my\little_programm\hello_word.txt', 'rb').read()
  txt = MIMEText(txt_file, 'base64', 'utf-8')
  txt["Content-Type"] = 'application/octet-stream' #Content-Type默認(rèn)為application/octet-stream,此句可以不加
  #以下代碼可以重命名附件為hello_world.txt 
  txt.add_header('Content-Disposition', 'attachment', filename='hello_world.txt')
  #把構(gòu)造的內(nèi)容(文本附件)寫入郵件體當(dāng)中
  msg_root.attach(txt)
  return msg_root
#郵件發(fā)送函數(shù)
def send_mail():
  time.sleep(1)
  print('開始發(fā)送郵件...')
  try:
    server =smtplib.SMTP_SSL(smtp_server)#QQ郵箱采用SSL方式加密;僅在python3.7中才需要給smtplib.SMPT_SSL()方法傳入發(fā)件人郵箱地址參數(shù)
    server.connect(smtp_server,465)
    server.login(sender_mail, sender_pass)
    server.sendmail(sender_mail, to_addrs, msg.as_string())
    server.quit()
    print('恭喜你!郵件發(fā)送成功!')
  except Exception as e:
    print('郵件發(fā)送失??!以下為失敗原因:')
    print(e)
#主函數(shù):
def main():
  send_mail()
if __name__ == '__main__':
  #初始化收件人、發(fā)件人、郵件體數(shù)據(jù)
  to_addrs,receivers = receive_info()
  sender_mail,sender_pass,smtp_server = send_info()
  msg = mail_body(to_addrs)
  #調(diào)用主函數(shù),發(fā)送郵件
  main()

總結(jié)

以上所述是小編給大家介紹的python給指定csv表格中的聯(lián)系人群發(fā)郵件,希望對(duì)大家有所幫助!

相關(guān)文章

  • python中實(shí)現(xiàn)精確的浮點(diǎn)數(shù)運(yùn)算詳解

    python中實(shí)現(xiàn)精確的浮點(diǎn)數(shù)運(yùn)算詳解

    計(jì)算機(jī)智能處理可數(shù)集合的運(yùn)算,但是全體實(shí)數(shù)是不可數(shù)的,所以計(jì)算機(jī)只能用一些奇怪的方法來擬合他,于是就產(chǎn)生了浮點(diǎn)數(shù)。下面這篇文章主要給大家介紹了關(guān)于python中實(shí)現(xiàn)精確浮點(diǎn)數(shù)運(yùn)算的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • python中l(wèi)ogging模塊的一些簡單用法的使用

    python中l(wèi)ogging模塊的一些簡單用法的使用

    這篇文章主要介紹了python中l(wèi)ogging模塊的一些簡單用法的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及各模型的優(yōu)缺點(diǎn)及說明

    卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及各模型的優(yōu)缺點(diǎn)及說明

    這篇文章主要介紹了卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及各模型的優(yōu)缺點(diǎn)及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python爬蟲抓取代理IP并檢驗(yàn)可用性的實(shí)例

    Python爬蟲抓取代理IP并檢驗(yàn)可用性的實(shí)例

    今天小編就為大家分享一篇Python爬蟲抓取代理IP并檢驗(yàn)可用性的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • numpy 計(jì)算兩個(gè)數(shù)組重復(fù)程度的方法

    numpy 計(jì)算兩個(gè)數(shù)組重復(fù)程度的方法

    今天小編就為大家分享一篇numpy 計(jì)算兩個(gè)數(shù)組重復(fù)程度的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python+Appium新手教程

    Python+Appium新手教程

    這篇文章主要介紹了Python+Appium的新手教程,內(nèi)容很詳細(xì),文章末尾還帶有測試的小練習(xí),適合新手小白,如果有需要的朋友可以參考下
    2021-04-04
  • Python中使用Beautiful Soup庫的超詳細(xì)教程

    Python中使用Beautiful Soup庫的超詳細(xì)教程

    這篇文章主要介紹了Python中使用Beautiful Soup庫的超詳細(xì)教程,示例代碼基于Python2.x版本,極力推薦!需要的朋友可以參考下
    2015-04-04
  • 利用Python和C++實(shí)現(xiàn)解析gltf文件

    利用Python和C++實(shí)現(xiàn)解析gltf文件

    gltf是類似于stl、obj、ply等常見的3D對(duì)象存儲(chǔ)格式,它被設(shè)計(jì)出來是為了便于渲染的數(shù)據(jù)轉(zhuǎn)換和傳輸,本文為大家介紹了使用Python和C++解析gltf文件的方法,感興趣的可以了解下
    2023-09-09
  • Python 實(shí)現(xiàn)自動(dòng)導(dǎo)入缺失的庫

    Python 實(shí)現(xiàn)自動(dòng)導(dǎo)入缺失的庫

    這篇文章主要介紹了Python 實(shí)現(xiàn)自動(dòng)導(dǎo)入缺失的庫,解決導(dǎo)入 Python 庫失敗的問題,本文分三種情況給大家介紹,需要的朋友可以參考下
    2019-10-10
  • Django中的WebSocket實(shí)時(shí)通信的實(shí)現(xiàn)小結(jié)

    Django中的WebSocket實(shí)時(shí)通信的實(shí)現(xiàn)小結(jié)

    在Django中,使用WebSocket可以實(shí)現(xiàn)實(shí)時(shí)通信,例如聊天應(yīng)用、實(shí)時(shí)更新等,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05

最新評(píng)論