Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 欧美成人午夜视频,国内精品久久影院,偷拍自拍日韩

          整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          (Node.js)- nodemailer + ej

          (Node.js): nodemailer + ejs 發(fā)送郵件


          odemailer: 在 node.js 環(huán)境下輕松實現(xiàn)郵件發(fā)送功能.

          ejs: 高效的嵌入式 javascript 模板引擎,讓你利用 javascript 生成HTML頁面


          1. 安裝 nodemailer + ejs

          npm install --save nodemailer ejs
          npm install --save-dev @types/nodemailer


          2. 發(fā)送文本信息

          const transporter: Mail=createTransport({
            service: "qq", // 使用的是qq郵箱
            port: 465, // smtp端口
            auth: {
              user: `your_qq_email@qq.com`, // 用戶名
              pass: `clcqtcdwmelbecde`, // 密碼(此處使用的是: qq授權碼)
            },
          });
          
          await transporter.sendMail({
            from: `your_qq_email@qq.com`, // 發(fā)件人
            to: `xxx@163.com, xxx2@163.com`, // 收件人,多個郵箱使用 , 間隔
            cc: `xxx@163.com`, // 抄送
            bcc: `xxx@163.com`, // 密送
            subject: `node.js yyds!`, // 郵件主旨
            text: `hello world!`, // 發(fā)送文本信息
          });


          3. 發(fā)送 html 信息

          const transporter: Mail=createTransport({
            service: "qq", // 使用的是qq郵箱
            port: 465, // smtp端口
            auth: {
              user: `your_qq_email@qq.com`, // 用戶名
              pass: `clcqtcdwmelbecde`, // 密碼(此處使用的是: qq授權碼)
            },
          });
          
          await transporter.sendMail({
            from: `your_qq_email@qq.com`, // 發(fā)件人
            to: `xxx@163.com, xxx2@163.com`, // 收件人,多個郵箱使用 , 間隔
            cc: `xxx@163.com`, // 抄送
            bcc: `xxx@163.com`, // 密送
            subject: `node.js yyds!`, // 郵件主旨
            html: `<h1 bgColor="red">hello world!</h1>`, // 發(fā)送html
          });


          4. 發(fā)送附件

          const transporter: Mail=createTransport({
            service: "qq", // 使用的是qq郵箱
            port: 465, // smtp端口
            auth: {
              user: `your_qq_email@qq.com`, // 用戶名
              pass: `clcqtcdwmelbecde`, // 密碼(此處使用的是: qq授權碼)
            },
          });
          
          await transporter.sendMail({
            from: `your_qq_email@qq.com`, // 發(fā)件人
            to: `xxx@163.com, xxx2@163.com`, // 收件人,多個郵箱使用 , 間隔
            cc: `xxx@163.com`, // 抄送
            bcc: `xxx@163.com`, // 密送
            subject: `node.js yyds!`, // 郵件主旨
            html: `<h1 bgColor="red">hello world!</h1>`, // 發(fā)送html
            // 發(fā)送附件
            attachments: [
              {
                filename: `abc.jpeg`, // 附件名稱
                path: `${process.cwd()}/src/assets/girl.jpeg`, // 附件地址
              },
            ],
          });


          5. 使用ejs

          子郵件在日常工作中有很大用途,凡項目或任務,有郵件來往可避免扯皮背鍋。而在一些自動化的應用場合,也使用得廣泛,特別是系統(tǒng)監(jiān)控方面,如果在資源使用達到警戒線之前自動發(fā)郵件通知運維人員,能消除隱患于前期,而不至于臨時臨急去做善后方案。

          ?

          源 | 數(shù)據(jù)分析與統(tǒng)計學之美

          本文介紹

          這是一個很好的Python自動化的案例。對于小公司,采用手動方式一個個發(fā)送郵件還是可以的。如果一個上百號,上千號,或者更大規(guī)模的公司,我們再一個個發(fā)送工資條郵件,就太浪費時間了。鑒于此,我寫了一個這樣的程序,實現(xiàn)Python自動化群發(fā)工資條的功能。

          原始數(shù)據(jù)源如下:

          最終效果如下:

          看到這里,你肯定也覺得很好玩兒吧?那么這樣一個自動化程序,應該怎么做呢?接著往下看。

          流程分析

          其實這樣一個代碼,總結下來,就只有如下5步:

          ① 導入相關模塊;

          ② 讀取Excel表格;

          ③ 登錄郵箱;

          ④ 準備要發(fā)送的郵件正文;

          ⑤ 發(fā)送郵件;

          1)導入相關模塊

          from openpyxl import load_workbook # 用于操作Excel的模塊import yagmail # 用于存儲郵箱地址和密碼的模塊import keyring # 用于記錄你郵箱地址和密碼的模塊from datetime import * # 用于獲取當前系統(tǒng)時間的模塊

          2)讀取Excel表格

          # 加載Excel文件wb=load_workbook("群發(fā)工資條.xlsx",data_only=True)sheet=wb.activeprint(sheet)-------------------------------------------------------for row in sheet: row_text="" for cell in row: if cell.column=="B": continue row_text +=f"{cell.value}," print(row_text)------------------------------------------------------print("年:", date.today.year)print("月:", date.today.month)print(f"{date.today.year}-{date.today.month}月")

          結果如下:

          3)登錄郵箱

          yagmail.register("1127421544@qq.com","flmyucvntuvbjbcb")pwd=keyring.get_password("yagmail","1127421544@qq.com")yag=yagmail.SMTP(user="1127421544@qq.com",host="smtp.qq.com",password=pwd)

          需要注意的是:第一行代碼是用于存儲你的郵件地址和密碼。第二行代碼使用keyring是為了記錄你的郵件地址和密碼。第三行代碼直接登錄郵箱。

          關于Python怎么發(fā)送郵件,我之前寫了一篇文章,進行了詳細的介紹,下方是這篇文章的鏈接,大家可以參考。

          Python發(fā)郵件:http://suo.im/60ylZ1

          4)準備要發(fā)送的正文

          由于發(fā)送的正文里面,需要我們發(fā)送一個帶表格的郵件,這就有必要我們了解一點前端知識。因此,我在最后面花一個章節(jié)為大家講解。

          5)發(fā)送郵件

          yag.send(f"{email}",f"數(shù)據(jù)分析與統(tǒng)計學之美有限公司{date.today.year}-{date.today.month}月工資情況",contents)
          上述代碼共有3個參數(shù):第一個參數(shù)是收件人的郵箱;第二個參數(shù)是郵件的標題;第三個參數(shù)是發(fā)送的內(nèi)容。

          關于html代碼的特別說明

          會用Python發(fā)送郵件的人都知道,郵件正文內(nèi)容可以寫html代碼。你可能覺得自己啥也不會,但是不用擔心,我們不需要學習太高深的前端代碼,做過爬蟲的人耳濡目染,都能夠看懂一些。

          1)自己寫一個簡單的前端代碼

          我們可以直接用Pycharm創(chuàng)建一個新的html文件,里面會顯示初始的前端代碼,我們進行簡單的添加,就可以獲得一個表格啦!

          最終在瀏覽器中顯示效果如下:

          從上圖中根本看不出這是一個表格,那是因為我們沒有為它設置一個樣式,下面要做的就是為表格設置樣式。

          最終在瀏覽器中顯示效果如下:

          2)在Python中怎么寫前端代碼

          從上圖可以看出,整個前端代碼就是用一些列的標簽組成,同時標簽都是成對出現(xiàn)的。因此,在Python中寫前端代碼時,只需要在對應位置添加對應的標簽即可。

          for row in sheet: row_text="<tr>" for cell in row: if cell.column=="B": continue row_text +=f"<td>{cell.value}</td>" row_text +="</tr>" print("\n") print(row_text)

          結果如下:

          完整代碼

          為了文章的完整性,我在文章最后放上我的代碼。但是限于文章篇幅,最后我只粘貼一張圖片,詳細代碼,大家可以去文末獲取。


          主站蜘蛛池模板: 无码国产伦一区二区三区视频| 亚洲一区精彩视频| 极品少妇一区二区三区四区| 538国产精品一区二区在线| 精品人妻中文av一区二区三区| 全国精品一区二区在线观看| 欲色aV无码一区二区人妻| 亚洲日韩激情无码一区| 国产一区二区在线观看麻豆| 国产福利一区二区三区视频在线| 亚洲毛片αv无线播放一区| 久久亚洲中文字幕精品一区四 | 精品福利一区二区三| 精品一区二区三区在线观看l | 日韩人妻精品无码一区二区三区| 一本色道久久综合一区| 国产高清视频一区二区| 亚洲a∨无码一区二区| 亚洲视频一区二区三区四区| 人妻无码第一区二区三区| 91成人爽a毛片一区二区| 蜜臀AV一区二区| 中文字幕无码不卡一区二区三区| 国产福利91精品一区二区三区| 亚洲一区二区三区久久久久| 亚洲国产美女福利直播秀一区二区| 精品无码人妻一区二区三区品 | 韩国一区二区三区视频| 亚洲一区二区三区高清在线观看| 中文字幕av一区| 在线|一区二区三区四区| 国产一区二区三区小说| 波多野结衣中文一区| 杨幂AV污网站在线一区二区| 精品福利一区二区三区精品国产第一国产综合精品 | 久久精品免费一区二区三区| 久久精品亚洲一区二区| 精品国产一区二区三区久久久狼 | 国产福利电影一区二区三区久久老子无码午夜伦不 | 无码日韩人妻AV一区二区三区 | 国产在线视频一区|