整合營銷服務商

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

          免費咨詢熱線:

          僅需 5 步,用 JavaScript 直接通過前端發送電子郵件

          者 | Mateusz Iwaniuk

          譯者 | 明明如月,責編 | 夕顏

          出品 | CSDN(ID:CSDNnews)

          文章配套代碼: https://github.com/iwaniukooo11/email-sender

          現在,即使是創建最基本的網站,程序員也必須使用現代的功能和技術。甚至像為你的朋友創建簡單的投資組合這樣的基本項目也可能涉及到一些問題,比如從聯系人表單接收數據。有很多方法可以讀取這些數據。你可以將表單與數據庫連接起來,然后從數據庫中讀取傳入的消息來實現功能,但這樣做會給不懂技術的客戶造成困難。

          你為什么不通過發送電子郵件傳輸信息?

          不使用數據庫就能接收到傳入的消息,絕對是最佳選擇,也是最方便用戶的選擇。但問題來了—如何實現呢?你可能認為需要使用某種后端語言。

          實際上,你不必使用任何如 php 或 python 這種后端語言,你甚至不需要用到 node.js!你需要的就是一個簡單的EmailJS 庫。

          本文將介紹下面兩個重要功能:

          • 配置 emailjs 帳戶

          • 使用 JS 發送電子郵件

          請注意,在我的項目中,我使用了 gulp 和 webpack,我在 src 文件夾存放源碼,dist 存放最終發布版本的代碼。

          我將分 5 個步驟向你展示如何從頭開始構建電子郵件發送器。

          步驟1-用 HTML 創建表單

          首先需要創建一個 HTML 表單。你不必放置像 required 或 max 這種驗證屬性,因為稍后,preventDefault 函數將在你的提交事件上運行,它會讓這些屬性的處理失效。

          表單中最重要的是為每個輸入放置 name 屬性,后面會用到。

          我的非常簡單的表單是這樣的:

          src/html/index.html

           <form class="form"> <input name='name' type="text" placeholder="Your name..." class="form__input" /> <input name='topic' type="text" placeholder="Topic..." class="form__input" /> <textarea name='message' type="text" placeholder="Your Message..." class="form__input" ></textarea>

          <input type="submit" value="send" class="form__input form__input--button"> </form>

          步驟2-注冊成為 email 用戶

          要配置你的電子郵件,你必須注冊電子郵件服務。別擔心—使用這個網站非常方便和省時。

          登入后,系統會詢問你的電子郵件服務,它位于個人電子郵件服務區(personal email service)。在我的例子中,我選擇了 gmail。

          然后,你需要連接你的 gmail 帳戶。這將用來發送電子郵件給你客戶。例如,如果你關聯了 xyz@gmail.com 賬戶,你后續發送的郵件都將從這個郵箱發出。所以不要擔心“ Send email on your behalf” 這個授權信息—這正是你需要的!

          連接完 gmail 賬戶后,點擊添加服務(add service)按鈕。

          步驟3-創建郵件模板

          如果你已經成功連接了你的 gmail 賬戶,你現在應該在信息中心中。現在需要創建電子郵件模板了。

          切換到電子郵件模板卡,并單擊創建一個新的模板(create a new template)。界面非常友好,所以創建模板不會有任何問題。

          你可以選擇模板的名稱和 ID。我稱之為“我的神奇模板(my_amazing_template)”。

          接下來,你必須指定郵件的內容。

          模板的變量值來自 input 中的 `name` 屬性。你已將變量插入`{{{}}}`符號中。

          不要忘記在“收件人”部分 (右側) 添加電子郵件地址。你的電子郵件將被發送到該電子郵件地址上。截圖中的收件人郵箱是我自己的公司郵箱。

          這是我的簡單模板,它使用來自 HTML 表單里的 3 個變量。我還指定了接收電子郵件的主題。

          步驟4-保存 API 密鑰

          這部分沒什么特別的。Emailjs 共享授權 API 密鑰,將在發送電子郵件時使用。當然,放這些鑰匙最好的地方是`.env` 配置。但是因為我使用的是簡單的靜態文件,我不想使用服務器配置,所以我將它們保存在 apikeys 文件中,然后再將它們導入。

          你的 USER_ID 位于 Account > API Keys 菜單下。

          TEMPLATE_ID 位于模板的標題下面。

          這是我基于不存在的 keyssrc / js / apikeys. js 的示例配置.

          src/js/apikeys.js

          export default { USER_ID :'user_DPUd-rest-of-my-id', TEMPLATE_ID:'my_amazing_template'}

          如果需要將源碼發布到 GITHUB,不要忘記將 APIKEYS 文件添加到 .GITIGNORE文件中

          步驟5-發送電子郵件

          現在是該項目最后也是最重要的部分的了。現在我們必須使用 javascript 發送電子郵件。

          首先,你必須下載 emailjs 包。

          npm i emails-com

          然后,轉到 js 文件,導入庫和 apikeys。

          src/js/main.js

          import emailjs from 'emailjs-com'import apiKeys from './apikeys'

          現在是編寫發送電子郵件功能的時候了

          src/js/main.js

          const sendEmail = e => { e.preventDefault

          emailjs .sendForm('gmail', apiKeys.TEMPLATE_ID, e.target, apiKeys.USER_ID) .then( result => { console.log(result.text) }, error => { console.log(error.text) } )}

          sendForm 函數有4個參數:

          你的電子郵件的 ID,在這里:

          TEMPLATE_ID 來自 apikey 文件,

          事件對象來自你的表單提交

          USER_ID 來自 apikey 文件,

          最后,查找表單并添加提交事件監聽器:

          src/js/main.js

          const form = document.querySelector('.form')form.addEventListener('submit',sendEmail)

          正如我前面提到的,由于 `preventDefault` 函數,屬性驗證將無法工作。你必須使用 JS 自己進行驗證和清除輸入。

          以上就是全部內容,接下來讓我們測試一下。

          填寫頁面上的表單并發送。

          我收到電子郵件,內容正是根據我們的模板和表單數據渲染出來的。

          通過上圖可以看出,所有的變量的值都填充到了正確的位置上。

          總結

          通過本文的介紹你會發現用 JS 發送郵件并非難事。

          使用 emailjs,你可以簡單的方式發送電子郵件。

          我相信你未來的用戶會很高興收到來自他們網頁上表單填寫數據的t郵件,相信本文對你有幫助。

          這篇文章的配套代碼在這里: https://github.com/iwaniukooo11/email-sender

          原文鏈接:

          https://dev.to/iwaniukooo11/send-e-mails-directly-from-front-end-with-js-5d7d

          本文為CSDN翻譯文章,轉載請注明出處。

          ?我們想研發一個機器學習框架,6 個月后失敗了

          ?生產型機器學習已經沒那么困難了?

          ?視頻 | 你不知道的"開源"60年秘史

          ?GitHub標星10,000+,Apache項目ShardingSphere的開源之路

          ?阿里技術專家告訴你,如何畫出優秀的架構圖?

          ?加拿大API平臺如何做到30%為中國明星項目?創業老兵這樣說……

          者 | Ruqayyah Sara

          譯者 | 彎月,責編 | 伍杏玲

          出品 | CSDN(ID:CSDNnews)

          我是一名全棧開發。前幾天我一直在研究算法和數據結構,因為對于程序員而言,最重要能力的就是解決問題,所有任何程序員都應該擁有強大的解決問題的基礎能力。

          兩天前我開始學習Python,開始對這門語言有了更多的理解。我開始將其與JavaScript進行比較,因為JavaScript是我日常工作中使用的語言。

          JavaScript和Python是兩門非常重要的語言。盡管包括我在內的許多人都知道Python或JavaScript,但我們并不清楚兩種語言之間的重要區別。

          我注意到這兩門年語言有許多語義上的區別,相信理解這些區別對我和對其他人都有很大幫助。在本文中,我會比較我在兩門語言中遇到的一些基礎概念。所以,如果你熟悉JavaScript或Python,想了解二者的差異,那么你就來對地方了!

          注釋

          JavaScript

          使用雙斜線(//)作為單行注釋,/* */ 作為多行注釋。

          Python

          使用 # 作為單行注釋,使用三引號""" """ 作為多行注釋。

          代碼塊

          JavaScript

          JavaScript中的每個代碼塊都必須放在花括號({})中,每條語句必須使用分號 ; 結束。

          var a = 2;
          if(a>0){
          console.log("Positive");
          }
          else{
          console.log("Negative");
          }

          Python

          Python中的代碼塊使用縮進表示。它不使用花括號或圓括號,而是使用空白。每條語句都需要換行。

          a = 2

          if a>0:

          print("Positive")

          else:

          print("negative")

          print("does not belong to else block")

          數據類型

          我無法在本文中完整地討論JavaScript和Python之間的數據類型差異,這里我們只討論主要的差異。

          基本數據類型

          • 上面的表格展示了JavaScript和Python的基本數據類型。JavaScript中的Number類型表示Int和float值,由編譯器在運行時確定。而JavaScript(ES10)中的BigInt用于存儲大整數,而Python使用Int表示所有尺寸的整數。

          • JS使用關鍵字表示空值,Python使用None。

          • Python沒有undefined和symbol的概念,這些是JavaScript特有的。

          • Python有一種特殊的數據類型——complex,用于表示復數 x + yj,其中x是實部,y是虛部。

          a=3+4j
          print(a.real) #3
          print(a.imag) #4

          非基本數據類型

          • 上圖展示了復雜的(或者叫做非基本)數據類型。Python中的列表能存儲任何數據類型,與JavaScript一樣。

          • 但是Python中的數組可以使用庫(如NumPy,array)來定義。Python中的數組只能包含統一數據類型。Python中的列表和數組有很大區別。數組上可以執行多種數學操作,而列表不能。

          • JavaScript中的對象類似于Python中的字典。兩者都包含鍵值對。但對象是JavaScript中的基本組成部分,而字典在Python中只不過是個數據容器。

          • Python中的元組是一個不可修改的列表。用元組表示的列表無法被重新定義。而JavaScript沒有這個概念。

          • 因此,Python擁有內置的哈希表(字典),而JavaScript沒有內置的哈希表、方法或庫。

          變量定義

          JavaScript

          在JavaScript中定義變量需要使用三種主要的關鍵字:var,let和const。定義方法決定了變量的使用方式(以及作用域)。

          Python

          Python中定義變量不需要使用關鍵字,只需要給變量名直接賦值即可:

          a = 3
          print (a) # 3

          If-Else

          JavaScript

          JavaScript中的條件語句是 if、else if、else還有switch。

          Python

          Python中的條件語句是if、elif和else。

          elif是else-if的縮寫。Python沒有switch語句。相反,可以用字典來代替。

          三元運算符

          JavaScript

          JavaScript的三元運算符(?:)是一個條件運算符,語法為(condition)?(expresssionIfTrue):(expressionIfFalse):

          var age = 26;
          var beverage = (age >= 21) ? "Beer" : "Juice";
          console.log(beverage); // "Beer"

          Python

          Python中的三元運算符的語法是 (expressionIfTrue) if (condition) else (expressionIfFalse)

          a, b = 10, 20

          min = a if a < b else b

          print(min)

          全等運算符

          JavaScript

          全等運算符(===)也叫“嚴格相等運算符”,會比較兩個運算數并檢查其相等性,而不會進行類型轉換,也就是說,它會檢查運算數的數據類型。返回值為布爾。JavaScript只有一個全等運算符。

          var a=3,b="3";
          console.log(a==b); // true
          console.log(a===b); // false

          Python

          Python有兩個全等運算符:is 和 is not。

          is 運算符會測試兩個運算數是否為同一個對象,is not為is的反面。

          x = 5

          if (type(x) is int):

          print ("true") # true

          if ( type(x) is not int):

          print ("true")

          成員運算符

          JavaScript

          成員運算符檢查對象中的特定屬性。JavaScript只有一個成員運算符:in。

          const user= {name: 'Sara', age: 19, sex: "female"};
          console.log('name' in car);
          // output: true

          Python

          成員運算符用于驗證某個值是否為成員。Python有兩個成員運算符:in和not in。

          x = 24

          y = 20

          list = [10, 20, 30, 40, 50 ]

          if ( x not in list ):

          print ("not present") # Output:True

          循環

          JavaScript

          JavaScript有三種循環:

          • 入口控制循環:for和while(在執行循環語句之前測試條件)

          • 出口控制循環:do-while(執行循環語句之后測試條件)

          // for loop
          var c = ["red", "green", "blue", "purple"];
          for (var i = 0; i<4; i++){
          console.log(c[i]);
          }
          // prints array// while
          var c = ["red", "green", "blue", "purple"];
          while(i<4){
          console.log(c[i]);
          i++;
          } // prints array

          Python

          Python有兩種循環:for和while。Python沒有內置的do-while循環。

          Python的while循環與JavaScript的for循環類似。例如下面的例子:

          c = ["red", "green", "blue", "purple"]
          i = 0
          while i<4:
          print(c[i])
          i += 1 # i++ is invalid

          Python不支持++和--運算符。我們需要使用x+=1和x-=1。

          for循環用來遍歷序列(列表、數組和元組)。它使用in操作符和range函數進行迭代。可以用range生成一系列數字,該函數接受三個參數:start,stop和step。

          • start:開始的位置(可選)。默認為0。

          • stop:結束的位置(必須指定)。

          • step:指定序列中兩個數字之間的間隔(可選)。

          x = range(5)
          for n in x:
          print(n) # 1,2,3,4x = range(3,9)
          for n in x:
          print(n) # 3,4,5,6,7,8x = range(2,20,2)
          for n in x:
          print(n) # 2,4,6,8,10,12,14,16,18

          以上就是我注意到的最基本的JavaScript和Python之間的語義區別。

          原文鏈接:https://medium.com/better-programming/semantic-differences-between-javascript-and-python-ed21b1f3ce50

          本文為 CSDN 翻譯,轉載請注明來源出處。

          要完整代碼和視頻請評論后加前端群470593776領取

          javascript課題:原生js封裝jsonp實現百度在線翻譯系統


          知識點:jsonp原理分析與封裝, js動態監測用戶輸入狀態 ,

          語言切換模塊,百度翻譯API調用 , js編程思想, 業務邏輯解析。

          由于課程的時間有限,所以對于布局的處理較為簡單,剛入門的伙伴都可以完成布局,但是

          核心的原生javascript代碼,對于大部分人來說,都是一個難題,特別是對于插件的熟悉和調

          用,這需要有較深的原生js功底,但是做出這么一個小項目,對于自己的提升還是很大的,不

          建議照貓畫虎似的學習,而是深入理解其中的邏輯關系!


          以下附上源碼,需要更多企業常用學習案例,項目實戰請加前端免費資料群:470593776

          群里有很多學習者,大家一起交流進步!

          部分邏輯思路與源碼:

          前端全套免費系統學習資料請評論后加前端群470593776領取


          主站蜘蛛池模板: 无码精品人妻一区二区三区免费 | 亚洲性日韩精品国产一区二区| 日韩精品成人一区二区三区| 国产一区二区三精品久久久无广告| 精品在线一区二区| 一区二区三区电影在线观看| 国产91精品一区二区麻豆亚洲| 一区二区三区四区在线播放| 国产一区二区四区在线观看| 亚洲日韩国产精品第一页一区| 亚洲中文字幕无码一区| 人妻天天爽夜夜爽一区二区| 国产手机精品一区二区| 精品无码国产AV一区二区三区| 国产精品久久久久一区二区| 色一情一乱一伦一区二区三区日本| 一区二区国产精品| 国内偷窥一区二区三区视频| 3d动漫精品一区视频在线观看| 欧美激情国产精品视频一区二区| 国产精品一区二区综合| 大屁股熟女一区二区三区| 台湾无码一区二区| 精品亚洲av无码一区二区柚蜜| 麻豆一区二区三区蜜桃免费| 综合无码一区二区三区| 亚洲一区二区免费视频| 欧洲精品免费一区二区三区| 久久一区二区三区99| 乱色精品无码一区二区国产盗| 国产精品美女一区二区三区| 无码人妻一区二区三区在线水卜樱| 国产在线精品一区二区三区直播 | 日韩在线一区二区| 男人的天堂av亚洲一区2区| 国产精品毛片a∨一区二区三区| 无码人妻久久一区二区三区| 国产SUV精品一区二区四| 91福利国产在线观看一区二区| 亚洲av无码片区一区二区三区| 蜜桃视频一区二区|