nodejs:用 nodemailer 發送一封帶有附件的郵件

我們將使用 nodemailer 庫來發送帶有附件的郵件。

首先,確保已經安裝了nodemailer。如果沒有安裝,可以通過
npm install nodemailer 來安裝。
cnpm install nodemailer --save
dependencies:
– nodemailer ^7.0.3

步驟:

  1. 引入nodemailer模塊。
  2. 創建傳輸器(transporter)對象,用于發送郵件。需要配置SMTP服務(這里以QQ郵箱為例,也可以使用其他服務)。
  3. 設置郵件選項(mailOptions),包括發件人、收件人、主題、正文以及附件。
  4. 使用 transporter.sendMail 方法發送郵件,并處理回調。

注意:使用QQ郵箱 SMTP 服務需要開啟 POP3/SMTP服務,并生成授權碼(不是郵箱密碼)。


以下是一個使用 Node.js 發送帶附件郵件的完整示例,使用 nodemailer 庫實現:

// send_email_1.js 發送一封帶有附件的郵件
const nodemailer = require('nodemailer');
const path = require('path');// 創建 SMTP 傳輸器(以QQ郵箱為例,其他郵箱配置類似)
const transporter = nodemailer.createTransport({host: 'smtp.qq.com',     // QQ郵箱SMTP服務器port: 465,               // SSL端口secure: true,            // 使用SSLauth: {user: 'your_email@qq.com', // 替換為你的郵箱pass: 'your_auth_code'     // 替換為郵箱授權碼(不是密碼)}
});// 郵件配置
const mailOptions = {from: '"發件人名稱" <your_email@qq.com>', // 發件人to: 'recipient@example.com',              // 收件人subject: '帶附件的測試郵件',               // 郵件主題text: '這是一封包含附件的測試郵件',        // 純文本正文html: '<b>這是一封包含附件的測試郵件</b>', // HTML正文attachments: [                            // 附件列表{filename: 'document.pdf',             // 附件顯示名稱path: path.join(__dirname, 'files/document.pdf') // 附件路徑},{filename: 'image.png',path: path.join(__dirname, 'files/image.png'),cid: 'unique-image-id' // 用于在HTML中嵌入圖片}]
};// 發送郵件
transporter.sendMail(mailOptions, (error, info) => {if (error) {return console.log('發送失敗:', error);}console.log('郵件已發送: %s', info.messageId);
});

使用說明:

  1. 安裝依賴

    npm install nodemailer
    
  2. 郵箱配置

    • 使用 QQ 郵箱需要開啟 SMTP 服務并獲取授權碼(登錄QQ郵箱 → 設置 → 賬戶 → 開啟POP3/SMTP → 生成授權碼)
    • 其他郵箱(Gmail、163等)配置參考:
      // Gmail 示例
      host: 'smtp.gmail.com',
      port: 465,
      secure: true,
      auth: {user: 'your@gmail.com',pass: 'your-app-password' // 需使用Google應用專用密碼
      }
      
  3. 附件配置

    • filename:收件人看到的文件名
    • path:本地文件路徑(絕對路徑推薦)
    • cid:用于在HTML內容中引用圖片(如 <img src="cid:unique-image-id">
  4. 運行程序

    node send_email_1.js
    

常見問題解決:

  1. 認證失敗

    • 確認郵箱服務已開啟SMTP
    • 使用授權碼而非郵箱密碼
    • Gmail需要開啟兩步驗證并創建應用專用密碼
  2. 附件大小限制

    • 大多數郵箱服務商限制附件大小(QQ郵箱≤50MB)
    • 超大附件建議使用云存儲鏈接
  3. 安全警告

    • 首次登錄可能觸發安全警告,需在郵箱中確認
    • Gmail需開啟"低安全性應用訪問"(不推薦)或使用OAuth2

進階使用(HTML內容嵌入圖片):

<html><body><p>這是一封帶圖片附件的郵件:</p><!-- 使用 cid 引用附件圖片 --><img src="cid:unique-image-id" alt="嵌入圖片"></body>
</html>

提示:生產環境建議將郵箱配置存儲在環境變量中(使用 dotenv 庫),避免敏感信息泄露。

完整文檔參考:nodemailer官方文檔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84023.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84023.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84023.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Scade 語言概念 - 方程(equation)

在 Scade 6 程序中自定義算子(Operator)的定義、或數據流定義(data_def)的內容中&#xff0c;包含一種基本的語言結構&#xff1a;方程(equation)(注1)。在本篇中&#xff0c;將敘述 Scade 語言方程的文法形式&#xff0c;以及作用。 注1: 對 Scade 中的 equation, 或 equation…

STM32開發,創建線程棧空間大小判斷

1. 使用RTOS提供的API函數&#xff08;以FreeRTOS為例&#xff09; 函數原型&#xff1a;UBaseType_t uxTaskGetStackHighWaterMark(TaskHandle_t xTask)功能&#xff1a;獲取指定任務堆棧中剩余的最小空間&#xff08;以字為單位&#xff0c;非字節&#xff09;。使用步驟&am…

thinkphp8.1 調用巨量廣告API接口,刷新token

1、在mysql中建立表sys_token; CREATE TABLE sys_token (id int UNSIGNED NOT NULL,access_token varchar(50) COLLATE utf8mb4_general_ci NOT NULL,expires_in datetime NOT NULL,refresh_token varchar(50) COLLATE utf8mb4_general_ci NOT NULL,refresh_token_expires_in …

【leetcode】遞歸,回溯思想 + 巧妙解法-解決“N皇后”,以及“解數獨”題目

&#x1f4da;?前言 &#x1f31f; 本期內容亮點&#xff1a;我們將深入解析力扣&#xff08;LeetCode&#xff09;上的幾道經典算法題&#xff0c;涵蓋不同難度和題型&#xff0c;幫助大家掌握解題思路和代碼實現技巧。無論是準備面試還是提升算法能力&#xff0c;這些題解都…

【iOS安全】iPhone X iOS 16.7.11 (20H360) WinRa1n 越獄教程

前言 越獄iPhone之后&#xff0c;一定記得安裝一下用于屏蔽更新的描述文件&#xff08;可使用愛思助手&#xff09; 因為即便關閉了自動更新&#xff0c;iPhone仍會在某些時候自動更新系統&#xff0c;導致越獄失效&#xff1b;更為嚴重的是&#xff0c;更新后的iOS版本可能是…

??高頻通信與航天電子的材料革命:獵板PCB高端壓合基材技術解析??

—聚酰亞胺/陶瓷基板在5G與航天場景的產業化應用?? ??一、極端環境材料體系&#xff1a;突破溫域與頻率極限?? ??聚酰亞胺基板&#xff08;PI&#xff09;的航天級穩定性?? 獵板在衛星通信PCB中采用真空層壓工藝處理聚酰亞胺基材&#xff08;Dk≈10.2&#xff09;&a…

pikachu靶場通關筆記13 XSS關卡09-XSS之href輸出

目錄 一、href 1、常見取值類型 2、使用示例 3、安全風險 二、源碼分析 1、進入靶場 2、代碼審計 3、滲透思路 三、滲透實戰 1、注入payload1 2、注入payload2 3、注入payload3 本系列為通過《pikachu靶場通關筆記》的XSS關卡(共10關&#xff09;滲透集合&#xff…

day26-計算機網絡-4

1. tcp的11種狀態 ss -ant -a 表示看所有狀態 -n 表示不將ip解析為主機名 -t 表示tcp 1.1. closed狀態&#xff08;客戶端、服務端&#xff09; 客戶端發起建立連接前的狀態服務端啟動服務前的狀態 1.2. listen狀態&#xff08;服務端&#xff09; 服務端軟件運行的時候狀…

基于autodl部署Cross-Modal-Re-ID-baseline

https://arxiv.org/abs/2001.04193 https://github.com/mangye16/Cross-Modal-Re-ID-baseline/tree/master?tabreadme-ov-file# 需要SYSU-MM01.zip pip install numpy pandas scipy scikit-learn pillow tqdm把SYSU-MM01放到…/Datasets/SYSU-MM01/ori_data下 先運行pytho…

線程安全集合

前置閱讀&#xff1a; 數據結構等算法概念 樹堆排序 鎖相關概念&#xff1a; 鎖概念鎖實現 隊列 Queue 與 Deque 的區別 Queue 是單端隊列&#xff0c;只能從一端插入元素&#xff0c;另一端刪除元素&#xff0c;實現上一般遵循 先進先出&#xff08;FIFO&#xff09; 規則…

ESP32與STM32

ESP32與STM32深度對比&#xff1a;物聯網與嵌入式開發的王者之爭 一、核心架構對比 1.1 ESP32 - 無線物聯網霸主 // 典型雙核架構配置 #include "freertos/FreeRTOS.h" #include "freertos/task.h"void app_main() {// 核心0執行無線通信任務xTaskCreat…

在SpringBoot中使用AWS SDK實現郵箱驗證碼服務

1.依賴導入&#xff08;maven&#xff09; <dependency><groupId>software.amazon.awssdk</groupId><artifactId>ses</artifactId><version>2.31.46</version></dependency> 2.申請兩個key 發件人郵箱需要驗證&#xff1a; …

從零到一:Maven 快速入門教程

目錄 Maven 簡介Maven 是什么為什么使用 Maven&#xff1f; 安裝 Maven下載 Maven 配置 Maven解壓文件配置本地倉庫保存路徑配置國內倉庫地址 Maven 的核心概念了解 pom.xml 文件坐標依賴范圍生命周期compileprovidedruntimetestsystemimport 依賴傳遞依賴排除依賴循環 繼承1. …

Java-39 深入淺出 Spring - AOP切面增強 核心概念 通知類型 XML+注解方式 附代碼

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI煉丹日志-28 - Aud…

第四講:類和對象(下)

1. 再探構造函數 ? 之前我們實現構造函數時&#xff0c;初始化成員變量主要使?函數體內賦值&#xff0c;構造函數初始化還有?種? 式&#xff0c;就是初始化列表&#xff0c;初始化列表的使??式是以?個冒號開始&#xff0c;接著是?個以逗號分隔的數據成 員列表&#xff…

linux 安裝mysql8.0;支持國產麒麟,統信uos系統

一&#xff1a;使用我已經改好的mysql linux mysql8.0解壓可用&#xff0c;點我下載 也在國產麒麟系統&#xff0c;統信uos系統也測試過&#xff0c;可用&#xff1b; 下載后&#xff0c;上傳mysql.tar.gz 然后使用root角色去執行幾個命令即可&#xff1b;數據庫密碼&#xf…

音頻剪輯軟件少之又少好用

我們平時見到的圖片以及視頻編輯工具非常多&#xff0c;但是音頻剪輯軟件卻是少之又少&#xff0c;更不用說有沒有好用的&#xff0c;今天&#xff0c;給大家帶來一款非常專業的音頻剪輯軟件&#xff0c;而且是會員喔。 軟件簡介 一款手機號登錄即可以享受會員的超專業音頻剪…

論文閱讀:CLIP:Learning Transferable Visual Models From Natural Language Supervision

從自然語言監督中學習可遷移的視覺模型 雖然有點data/gpu is all you need的味道&#xff0c;但是整體實驗和談論豐富度上還是很多的&#xff0c;非常長的原文和超級多的實驗討論&#xff0c;隔著屏幕感受到了實驗的工作量之大。 Abstract 最先進的計算機視覺系統被訓練來預測…

第9篇:數據庫中間件的容錯機制與高可用架構設計

9.1 為什么數據庫中間件需要容錯與高可用設計&#xff1f; 隨著系統復雜性增加&#xff0c;數據庫中間件不僅承載 SQL 路由、分片、事務控制等核心職責&#xff0c;也成為系統的 單點風險源。 為確保系統 724 小時穩定運行&#xff0c;中間件必須具備&#xff1a; 自動故障檢測…

c#壓縮與解壓縮-SharpCompress

SharpCompress SharpCompress 是一個開源項目庫&#xff0c;能夠處理文件。c#庫對于壓縮已經有很多&#xff0c;可以隨意選擇&#xff0c;看了SharpCompress感覺比較簡潔&#xff0c;還是介紹給大家。 項目地址&#xff1a; sharpcompress 項目使用 引入nuget包&#xff1…