1. 程式人生 > >使用 Node.js 的 nodemailer 模組傳送郵件(支援 QQ、163 等、支援附件)

使用 Node.js 的 nodemailer 模組傳送郵件(支援 QQ、163 等、支援附件)

nodemailer 簡介

Nodemailer 是 Node.js 應用程式的一個模組,可以方便地傳送電子郵件。

該專案於 2010 年開始,至今已經相當穩定,這也是如今大多數 Node.js 使用者預設情況下發送郵件的解決方案。

使用

# 初始化 pageage.json 檔案
$ npm init

# 安裝依賴
$ npm install nodemailer --save

# 執行
node app.js

app.js

const nodemailer = require('nodemailer');

// 開啟一個 SMTP 連線池
let transporter = nodemailer.createTransport({
    host
: 'smtp.qq.com', secureConnection: true, // use SSL port: 465, secure: true, // secure:true for port 465, secure:false for port 587 auth: { user: '[email protected]', pass: 'xxx' // QQ郵箱需要使用授權碼 } }); // 設定郵件內容(誰傳送什麼給誰) let mailOptions = { from: '"白小明 ��" <[email protected]
>'
, // 發件人 to: '[email protected], [email protected]', // 收件人 subject: 'Hello ✔', // 主題 text: '這是一封來自 Node.js 的測試郵件', // plain text body html: '<b>這是一封來自 Node.js 的測試郵件</b>', // html body // 下面是傳送附件,不需要就註釋掉 attachments: [{ filename: 'test.md', path
: './test.md' }, { filename: 'content', content: '傳送內容' } ] }; // 使用先前建立的傳輸器的 sendMail 方法傳遞訊息物件 transporter.sendMail(mailOptions, (error, info) => { if (error) { return console.log(error); } console.log(`Message: ${info.messageId}`); console.log(`sent: ${info.response}`); });

效果預覽

踩坑細節

實踐的時候遇到許多問題,現在列舉如下,若未詳盡,敬請留言交流。

POP3/SMTP服務、獲取授權碼(以QQ為例)

首先需要開啟郵箱的 POP3/SMTP 服務。

QQ郵箱需要使用授權碼,而不是QQ密碼;163 郵箱直接使用163郵箱密碼就行。

進入QQ郵箱,設定-賬戶-開啟服務 POP3/SMTP 服務,並生成授權碼,現在獲取授權碼需要驗證手機簡訊。

支援郵箱

理論上支援所有主流郵箱,但我只測試了 QQ 和 163,都成功了。若其他郵箱出問題請留言交流。

535 錯誤

Error: Invalid login: 535 Error: authentication failed

認證失敗:

  • 可能是賬號密碼錯誤
  • 連結資源池時加 ssl:secureConnection: true,
  • QQ 的 host 是 smtp.qq.com;163 的 host 是 smtp.163.com

553 錯誤

Error: Mail command failed: 553 Mail from must equal authorized user

發件人和認證的郵箱地址不一致

  • auth.user 需要與 from 中的郵箱一致

相關推薦

使用 Node.jsnodemailer 模組傳送郵件支援 QQ163 支援附件

nodemailer 簡介 Nodemailer 是 Node.js 應用程式的一個模組,可以方便地傳送電子郵件。 該專案於 2010 年開始,至今已經相當穩定,這也是如今大多數 Node.js 使用者預設情況下發送郵件的解決方案。 使

node.js ws模組 方法屬性websocket

WebSocket compression ws supports the permessage-deflate extension which enables the client and server to negotiate a compression algorit

Java Web(十三) 使用javamail進行傳送郵件,(使用QQ163,新浪郵箱伺服器)

    加油加油。                     --WH 一、傳送郵件的原理     在瞭解其原理之前,先要知道兩個協議,SMTP和POP3       SMTP:Simple Mail Transfer Protocol,即簡單郵件傳輸協議,傳送郵件的協議,

Node.Js http模組-傳送http請求例項

Node.Js http模組可以建立伺服器應用例項,也能傳送http請求 1.http.get(options[, callback]) 傳送簡單Get請求,並響應 var http=require

ThinkPHP 中使用 PHPMailer 傳送郵件支援163QQ郵箱,附下載

PHP是自帶可以傳送郵件的Mail()函式的,但需要在php.ini配置。本文將介紹一種簡單的通過PHPMailer傳送郵件的方法。 而PHPMailer是一個用於傳送電子郵件的PHP函式包,它可以使用SMTP的方法通過163、QQ郵箱等第三方伺服器傳送郵件。這樣還有一個好

Node.js 博客實例添加文件上傳功能

文件 ace direct 上傳文件 file form parser rec mark 原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第三章 上傳文件眼下有三種方法: 使用 Express 自帶的文件上傳功能,不涉

Node.js安裝及環境配置windows

glob node mod script es2017 lob target 技術分享 系統 1.Node.js簡介  簡單的說 Node.js 就是運行在服務端的 JavaScript。Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境

node.js實現圖片上傳包含縮略圖

http close path return new tde log img thumb 圖片上傳 使用multiparty插件實現上傳 安裝multiparty npm i --save multiparty 代碼實現 const multiparty = requi

ionic + node.js + Mongodb 開發環境安裝Windows 和 ios 系統

ionic config文件 點擊 服務管理 https 鍵盤 imageview 輸入 all 1. Windows 環境。 1. Visual Studio Code. 作為源代碼編輯器, 可以從此處 Visual Studio Code 下載, 註意選擇W

<親測>CentOS 7.3下Node.js 8.6安裝配置含NPM以及PM2

命令 mod profile 添加 data- x64 dsm 解壓 .net CentOS 7.3下Node.js 8.6安裝配置 2017年09月30日 14:12:02 閱讀數:2245更多 個人分類: Nodejs

node.js從入門到放棄

簡單的 all == ons true nts 數值 定時 註冊 上章講了學習node,應該去學習什麽,對這些框架去進行學習現在咋們聊聊如何用原生來進行操作 主要來講一下events-事件觸發器 先來講一個簡單的實例 EventEmitter的實例,綁定一個監聽器。用

node.js從入門到放棄

主鍵 data timestamp insert 代碼 了解 javascrip ice where 以下內容全是我個人理解寫出,如有不對,請立刻練習本人進行更改。以免被剛入門的被我帶入坑裏。 —node是什麽?我想大家應該都知道。 node是前端未來幹掉後

瞭解Node.js模組包管理器

一、模組 1.一個Node.js檔案就是一個模組,這個檔案可能 是JavaScript程式碼、JSON或者編譯過的C/C++擴充套件。 2.Node.js提供了exports和require兩個物件,其中exports是模組公開的介面,require用於從外部獲取一個模組的介面,即所獲取

Node JS http模組

前言 本人所發的NodeJS系列學習筆記參考了一些書籍、官方文件以及一些前輩的程式碼及註釋,可能有些地方理解的不對。如果有誤,歡迎到我的github上提出。當然,希望可以點個星星。 node-http Node.js提供了http模組,用於搭建HTTP服務端和客戶端。 建立Web伺服

node.js零基礎學習筆記

註釋:寫完了今天的筆記,今天主要學習了,不同js檔案,如何獲取其他js檔案的方法,一個js方法的匯出另外js檔案對方法的接收(語言敘述可能不準確,就是想說我有一個蘋果你想吃我也願意給你吃,怎麼搞?我要先把蘋果拿出來的過程,和你伸手的過程,我就是一個比喻~可能不太準確,但是我是這麼理解的),以上是第一

node.js零基礎學習筆記

開始:一個前端小白接觸node.js,簡單的筆記,筆記的記錄邏輯或許不是太清晰,但是能看懂,或許對node.js的學習不精,也可能有錯誤理解的,第一次接觸,僅供和我一樣零基礎學習node.js的人,會繼續補充新增,謝謝大家~麼麼噠 NodeJS 一、簡介    wha

Android+Jenkins自動化打包+上傳蒲公英+傳送郵件測試必會

Android+Jenkins自動化打包+上傳蒲公英+傳送郵件   各位好,由於經常要修改客戶端的伺服器地址和要區分渠道為了方便測試打包學習了一下Jenkins,期間遇到一些問題,反正就是問題比較多,網上也搜了很多東西但是比較散都講了一點,特地自己整理了一下 ,也將自己遇到的坑在這

linux 傳送郵件centos

1.安裝mailx 安裝mailx: yum install mailx vi /etc/mail.rc set [email protected] set smtp="smtps://smtp.qq.com:465" set smtp-auth-user=12345678

Node.js 多版本安裝配置WindowUbuntu CentOS Mac OSCloud Studio

向大家介紹在window和Linux上安裝Node.js的方法。 本安裝教程以Node.js v4.4.3 LTS(長期支援版本)版本為例。 Node.js安裝包及原始碼下載地址為:https://nodejs.org/en/download/。 你可以根據不同平臺系統選擇你需要的

C# 傳送郵件帶附加件傳送

有時候不太適合寫這些東西:不太會描述,因為在開發過程中遇到了,所以記錄一下,以便後面看看。 由於開發一直用的VS2015或者VS2017,所以不知道其他的版本開發情況,其實差不多 這是下面的核心程式碼:簡單的傳送郵件(不發附件):去掉新增附近的程式碼即可 string user = "***@163.