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 一二三四视频日本高清,嫩草成人国产精品,亚洲精品久久久久综合中文字幕

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Jenkins 郵件發送「可修改模版」

          Jenkins 郵件發送「可修改模版」

          頭條創作挑戰賽#

          本文同步本人掘金平臺的文章:https://juejin.cn/post/7062327576395513887

          上一篇,Jenkins Pipeline 結合 Gitlab 實現 Node 項目自動構建 我們已經實現了自動構建的功能。

          在團隊合作中,項目在構建異常「或成功」時候,需要郵件通知相關的人員,這就涉及到 Jenkins 郵件發送的功能了。

          安裝 Email Extension

          Email Extension 插件允許你配置郵件通知。通過此插件,你可以自定義郵件的發送人,接受者和發送的內容。

          Manage Jenkins -> Manage Plugins -> Available 。搜索 Email Extension 安裝

          配置 Email Extension 參數

          Manage Jenkins -> Configure System -> Extended E-mail Notification

          第 1 點: Simple Mail Transfer Protocol (SMTP) 自己申請,如果不知道如何操作,請網上找答案。(應該也許不難吧...)

          第 2 點: 郵件默認的接收郵件地址。

          構建腳本

          使用Jenkins Pipeline 結合 Gitlab 實現 Node 項目自動構建的Jenkinsfile腳本補充下。

          pipeline {
              agent any
              
              tools { 
                  nodejs "nodejs" 
              }
              
              stages {
                  stage('Dependency') {
                      steps {
                          sh 'npm install'
                      }
                  }
                  stage('Build') { 
                      steps {
                          sh 'npm run clean' 
                          sh 'npm run build' 
                      }
                  }
              }
              
              // 添加的腳本內容
              post {
                  always {
                      emailext body: '${DEFAULT_CONTENT}',
                          subject: '${DEFAULT_SUBJECT}',
                          to: '${DEFAULT_RECIPIENTS}',
                          from: '${env.DEFAULT_FROM_EMAIL}'
                  }
              }
          }
          
          復制代碼

          這就很明顯了:默認發送郵箱,默認接收郵箱,默認的發送主題,默認的發送內容。都是獲取我們上一步設定的值。效果如下:

          構建失?。?/p>

          構建成功:

          對比上面的兩張圖,構建失敗和構建成功,的構建結果字體竟然是不同的顏色,神奇...

          如果你看上一節配置 Email Extension 參數中的截圖,你可能會留意到:

          <h2><font color="${BUILD_STATUS}">構建結果 - ${BUILD_STATUS}</font></h2>
          復制代碼

          color="${BUILD_STATUS}" 嗯,加上這個,不同狀態返回的構建結果字體不同顏色了?我們帶動下構建pipeline的always -> changed。觸發構建信息由失敗 -> 成功,得到下面的結果:

          看來是想多了啊,并不是不同的狀態不同顏色啊。不過,如果你不介意這個bug,可以使用...

          升級下需求

          發送郵件需要根據不同狀態,使用特定的顏色區分。比如:成功 -> #27AE60 , 失敗 -> #E74C3C , 其他顏色 -> #F4E242

          咦,這還不簡單?在默認的發送模版上添加判斷條件就行了。

          然而,不支持,太慘了,得另辟蹊徑~(大霧)

          經過一番搜索,Groovy Template 能夠解決這個問題。

          我們更改下 pipeline 腳本:

          # ...
          post {
              always {
                  emailext body: '''${SCRIPT, template="my-email-template"}''',
                      subject: '${DEFAULT_SUBJECT}',
                      to: '${DEFAULT_RECIPIENTS}',
                      from: "${env.DEFAULT_FROM_EMAIL}"
              }
          }
          # ...
          復制代碼

          我們構建下。構建是成功了,但是郵箱收到的卻是:

          Groovy Template file [my-email-template] was not found in $JENKINS_HOME/email-templates.
          復制代碼

          郵件提示,機器中 $JENKINS_HOME/email-templates 下并不存在 my-email-template 模版。(笑哭)

          沒有權限怎么辦呢?咱可以通過其他方法不?

          再查找資料,咦,有了 - Email Extension Plugin is not loading groovy template added via Config File Provider Plugin。通過配置文件解決,我們來見證下:

          步驟 1 : 到 jenkins 平臺上操作,Manage Jenkins -> Managed Files

          步驟 2 : 點擊 Add a new Config

          步驟 3 : 點選類型 Extended Email Publisher Groovy Template, 點擊 Submit 按鈕提交

          步驟 4 : 輸入名稱和相關的內容。請記住名稱,后續使用到。

          因為截圖篇幅問題,這里的 Content 內容并沒有截取完整,完整的內容請戳Groovy_template.html,其中的關鍵代碼如下:

            .tr-title {
              background-color: <%=(build.result==null || build.result.toString()=='SUCCESS') ? '#27AE60' : build.result.toString()=='FAILURE' ? '#E74C3C' : '#F4E242' %>;
            }
          復制代碼

          Groovy 官方完整模版請見官方模版Groovy Email Template

          扎心了啊,老鐵(尬笑)

          步驟 5 : 修正你的 pipeline 文件,請確保你輸入和正確的名字"managed:Groovy Email Template"。

          # ...
          post {
              changed {
                  emailext body: '''${SCRIPT, template="managed:Groovy Email Template"}''',
                      subject: '${DEFAULT_SUBJECT}',
                      to: '${DEFAULT_RECIPIENTS}',
                      from: "${env.DEFAULT_FROM_EMAIL}"
              }
          }
          # ...
          復制代碼

          一切就緒,我們重新構建。結果如下:

          構建狀態

          郵箱收到內容截圖

          成功

          失敗

          中止

          嗯~效果不錯(撒花)完結

          讀者有啥其他的方法呢,可以留言交流下。更多的內容,請戳Jimmy Github Blog

          文章被收錄于專欄:

          相關課程

          3

          收藏

          時候人不在電腦旁,程序運行中發生了問題,或者程序需要定期發送報告,此時發送電子郵件就是一個方便快捷的方案。python的內置庫smtplib就具有發送電子郵件的功能,今天我們以QQ郵箱為例,發送一個帶附件的郵件給自己。

          import time
          import smtplib
          from email.mime.text import MIMEText
          from email.mime.multipart import MIMEMultipart
          
          #設置服務器所需信息
          #qq郵箱服務器地址
          mail_host='smtp.qq.com'  
          #qq號
          mail_user='2*****5'  
          #QQ郵箱為授權碼) 
          mail_pass='n*****c'   
          #郵件發送方郵箱地址
          sender='2*****5@qq.com'  
          #只發送一個人可以用字符串或列表,多于一個人用列表
          receivers=['2*****5@qq.com']
          
          #這表示可以發送帶附件的郵件
          message=MIMEMultipart()
          #設置email信息
          #郵件主題       
          message['Subject']='郵件主題' 
          #發送方信息
          message['From']=sender 
          #接受方信息     
          message['To']=receivers[0]  
          
          #郵件內容設置
          content=MIMEText("這是一個測試郵件", 'html', 'utf-8')
          #附件的路徑
          with open('abc.csv','r',encoding='gbk' ,errors='ignore') as f:
              attachment=f.read()
          attachment1=MIMEText(attachment)
          attachment1['Content-Disposition']='attachment;filename="abc.csv"'
          #將內容和附件附在郵件上
          message.attach(content)
          message.attach(attachment1)
          
          #發郵件成功后返回時間
          send_time=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
          #登錄并發送郵件
          try:
              smtpObj=smtplib.SMTP() 
              #連接到服務器
              smtpObj.connect(mail_host,25)
              #登錄到服務器
              smtpObj.login(mail_user,mail_pass) 
              #發送
              smtpObj.sendmail(
                  sender,receivers,message.as_string()) 
              #退出
              smtpObj.quit() 
              print(f'郵件已發送,發送時間為{send_time}')
          except smtplib.SMTPException as e:
              print('郵件發送出現了錯誤:',e,'請重試后發送') #打印錯誤信息

          返回:郵件已發送,發送時間為2024-01-12 21:19:25

          需要注意的是:

          1、QQ郵箱的授權碼路徑:郵箱界面左上角的“設置”——“賬號”——“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務”——“繼續獲取授權碼”,點開就行了。

          2、做完第一條,會出現一個“短信驗證”,讓我們發短信,先不要發(浪費1毛錢啊)。點擊“選擇其他方式驗證”,然后出現接收驗證碼或用QQ密保,這兩個選一個用就行了。

          目配置

          引入依賴:

                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-mail</artifactId>
                  </dependency>

          配置郵箱信息:

          spring:
            mail:
              host: smtp.sina.com           # 新浪郵箱
              username: xxx@sina.com				# 發件人郵箱地址
              password: xxxxxxxxxxxx    # 授權碼
              protocol: smtp              # SMTP 協議
              default-encoding: UTF-8     # 編碼格式
              properties:
                mail:
                  debug: true               # 開啟Debug模式,打印發送郵件的日志信息
                  smtp:
                    auth: true
                    socketFactory:
                      class: javax.net.ssl.SSLSocketFactory
                    ssl:
                      enable: true
                      checkServerIdentity:
                        enable: true
                    starttls:
                      enable: true

          發送純文本郵件

          @Value("${spring.mail.username}")
           private String username;
          
          @Test
          void sendTextEmail(@Autowired JavaMailSender mailSender) {
            SimpleMailMessage message=new SimpleMailMessage();
          
            message.setFrom(username);
            message.setTo("ijunfv@gmail.com");
            message.setSubject("純文本內容的郵件");
            message.setText("<h2>跳轉至Youtube</h2><a href=\"https://www.youtube.com\">https://www.youtube.com</a>");
          
            mailSender.send(message);
            log.info("郵件發送成功");
          }

          核心:使用SimpleMailMessage類

          發送HTML格式的郵件

          @Test
          void sendHtmlEmail(@Autowired JavaMailSender mailSender) throws MessagingException {
          
            MimeMessage mimeMessage=mailSender.createMimeMessage();
          
            MimeMessageHelper messageHelper=new MimeMessageHelper(mimeMessage, false);
            messageHelper.setFrom(username);
            messageHelper.setTo("ijunfv@gmail.com");
            messageHelper.setSubject("HTML格式的郵件");
            messageHelper.setText("<h2>跳轉至Youtube</h2><a href=\"https://www.youtube.com\">https://www.youtube.com</a>", true);
          
            mailSender.send(mimeMessage);
            log.info("郵件發送成功");
          }

          核心:使用MimeMessageHelper類,setText方法第二個參數必須為True,否則發送的是純文本。

          發送包含附件的郵件

          @Test
          void send(@Autowired JavaMailSender mailSender) throws MessagingException {
            MimeMessage mimeMessage=mailSender.createMimeMessage();
          
            MimeMessageHelper messageHelper=new MimeMessageHelper(mimeMessage, true);
            messageHelper.setFrom(username);
            messageHelper.setTo("ijunfv@gmail.com");
            messageHelper.setSubject("包含附件的郵件");
            messageHelper.setText("<h2>跳轉至Youtube</h2><a href=\"https://www.youtube.com\">https://www.youtube.com</a>", true);
          
            messageHelper.addAttachment("6.png", new File("D:\\Images\\logo_200x200 (6).png"));
            messageHelper.addAttachment("12.png", new File("D:\\Images\\logo_200x200 (12).png"));
          
            mailSender.send(mimeMessage);
            log.info("郵件發送成功");
          }

          核心:

          1. 創建MimeMessageHelper對象時,第二個參數必須為true,否則不能發送包含附件的郵件
          2. 使用addAttachment方法添加附件

          發送內嵌附件的郵件

          @Test
          void sendInlineResourceEmail(@Autowired JavaMailSender mailSender) throws MessagingException {
          
            MimeMessage mimeMessage=mailSender.createMimeMessage();
          
            MimeMessageHelper messageHelper=new MimeMessageHelper(mimeMessage, true);
            messageHelper.setFrom(username);
            messageHelper.setTo("ijunfv@gmail.com");
            messageHelper.setSubject("包含附件的郵件");
          
            String rscId="dhjsjd9889";
            messageHelper.setText("<h2>跳轉至Youtube</h2><a href=\"https://www.youtube.com\"><img src='cid:"+rscId+"' /></a>", true);
            messageHelper.addInline(rscId, new File("D:\\Images\\logo_200x200 (6).png"));
          
            mailSender.send(mimeMessage);
          
            log.info("郵件發送成功");
          }

          核心:

          1. 創建具有唯一性的ID作為附件標識,比如rscId
          2. 使用addInline添加附件
          3. 在郵件內容中通過cid:rscId插入附件

          小結

          按郵件內容,可分為普通文本、HTML格式內容、添加附件、內嵌附件四種郵件。

          上述已將完整代碼列出,記得一鍵三連^_^


          主站蜘蛛池模板: 一本一道波多野结衣一区| 中文字幕乱码亚洲精品一区| 久久精品一区二区三区AV| 国产激情一区二区三区在线观看| 国产综合精品一区二区| 精品无码人妻一区二区三区品 | 中文字幕一区二区视频| 精品国产免费观看一区| 久久精品日韩一区国产二区| 精品福利视频一区二区三区 | 亚洲熟女乱色一区二区三区| 日本道免费精品一区二区| 福利一区福利二区| 国产产一区二区三区久久毛片国语 | 日韩精品一区二区三区大桥未久 | 一区二区三区日本电影| 日本精品一区二区在线播放| 中文字幕无线码一区2020青青| 无码人妻精品一区二| 亚洲国产专区一区| 久久久久人妻一区精品果冻| chinese国产一区二区| 免费人人潮人人爽一区二区| 精品人妻一区二区三区四区在线| 大香伊人久久精品一区二区| 中文字幕av日韩精品一区二区| 香蕉久久av一区二区三区| 亚洲一区精品中文字幕| 久久久老熟女一区二区三区| 国产福利一区二区三区在线观看 | 任你躁国语自产一区在| 日韩一区二区在线观看视频| 亚洲综合色一区二区三区小说| 国99精品无码一区二区三区| 亚洲福利一区二区精品秒拍| 中文字幕精品一区二区| 成人一区专区在线观看| 国产一区二区三区免费视频| 一区二区三区影院| 亚洲一区在线免费观看| 精品无码国产AV一区二区三区|