nodejs:用 nodemailer 发送一封带有附件的邮件

nodejs发送邮件 1、先申请个发送邮箱。这里以网易邮箱为例,申请163邮箱后进入设置开启IMAP/SMTP服务,可以获取到一个授权码。pass: '*******' //授权码生成之后,要等一会才能使用,否则验证的时候会报错。//发件人邮箱的授权码 这里可以通过qq邮箱获取 并且不唯一。from: `"某某系统"`,// 发件人 邮箱 '昵称'// 创建一个smtp客户端配置。//这里可以添加html标签。// 发件人邮箱账号。// 收件人 的邮箱。//创建一个收件人对象。 阅读详情

我们将使用 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,            // 使用SSL
  auth: {
    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官方文档

Nodemailer使用教程:在Node.js中发送电子邮件 Nodemailer是Node.js平台上最流行的电子邮件发送库,它提供了一个简单而强大的解决方案,支持Unicode内容、HTML内容、附件、图片嵌入等功能。SMTP (Simple Mail Transfer Protocol,简单邮件传输协议) 是一个在互联网上发送电子邮件的标准协议。 阅读详情

相关推荐

nodejs实现邮件发送服务实例分享

本文给大家讲解的是简单的使用nodejs搭建邮件发送服务的一个实例,非常的好用,有需要的小伙伴可以参考下

使用nodejs发送邮件

使用nodejs发送邮件

qq_29517595的博客 813

23. STM32F103C8T6 ADC采集光敏电阻传感器模块光照强度实战

本文详细介绍了如何使用STM32F103C8T6的ADC模块采集光敏电阻传感器的光照强度。通过硬件接线、核心原理讲解、四步代码配置(GPIO、ADC模式、使能校准、数据滤波)以及串口验证,手把手指导完成从模拟信号到数字值的完整实战流程,并重点提示了ADC时钟分频等关键配置要点。

weixin_42300144的博客 221

如何使用NodeJS发送邮件

对于登录注册或者一些监控、数据处理的定时任务,可能需要发送邮件的能力。 今天分享一下使用node server发送邮件的流程。 发送邮件的过程是,你的客户端给邮件服务器发信息,然后邮件服务器发给目标邮件服务器,目标邮件服务器再通知到客户端,目标用户就收到了。 如果我们使用网易客户端可以直接用账号密码登录自己的邮箱。使用node server发邮件,相当于第三方客户端。 第三方客户端指的就是除了网易自己的客户端外的其他客户端。 发邮件流程变成了 这里有个问题,使用网易客户端可以直接通过账号密码登录邮箱,第

doomliu的博客 3835

从硬件到软件:TSMaster报文过滤全链路配置指南(含同星设备适配)

本文详细介绍了TSMaster平台下CAN/LIN/FlexRay总线的报文过滤全链路配置指南,特别针对同星TC1016等硬件的兼容性进行实战演示。从硬件层预过滤到软件层可编程过滤,提供五维过滤体系构建方法,帮助工程师提升车载诊断与总线分析效率。重点解析混合总线过滤策略优化及诊断场景下的特殊过滤方案。

tensorflowjs6的博客 401

Vitis Model Composer闪退?手把手教你用命令行启动Vivado 2021后的System Generator

本文详细解析了Vitis Model Composer闪退问题的根本原因,并提供了命令行启动Vivado 2021后System Generator的完整解决方案。从环境变量配置、组件缺失排查到权限问题处理,手把手教你通过命令行深度排错,并分享高级自动化脚本和系统优化技巧,帮助开发者高效使用Vitis Model Composer与System Generator进行HDL开发。

weixin_26905487的博客 348

Nodemailer 入门指南:轻松实现 Node.js 邮件发送

Node.js邮件发送神器Nodemailer使用指南 Nodemailer是Node.js生态中最受欢迎的邮件发送库,具有简单易用、功能强大的特点。本文介绍了Nodemailer的核心功能和基本使用方法: 基础安装:通过npm install命令一键安装 邮件发送流程:创建传输对象、配置邮件选项、调用sendMail方法 支持多种邮件服务:Gmail、QQ邮箱、163邮箱等 丰富功能:HTML邮件、附件发送、群发邮件、嵌入图片等 进阶技巧:使用模板引擎生成邮件内容 文章通过代码示例展示了从简单文本邮件到复

2501_93471670的博客 2052

微信DAT图片解密全攻略:一键转换JPG/PNG/GIF

本文详细解析了微信电脑版中DAT图片的加密原理与存储路径,并提供了从定位文件到使用专业工具进行一键解密的完整操作指南。通过简单的步骤,用户可将加密的DAT文件无损还原为JPG、PNG或GIF格式,有效解决无法直接查看聊天图片的难题,同时兼顾了隐私清理与磁盘空间管理。

hill8的博客 1363

nodejs使用 nodemailer发送邮件

在nodejs程序中,我们可以使用nodemailer来发送邮件 1、安装nodemailer npm install nodemailer 2、实现代码如下 var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport({ host: "smtp.qq.com",

dc_show的专栏 3556

【经验分享】使用Keil5烧录代码遇到的问题及解决方法

本文介绍了在使用Keil5烧录代码过程中可能遇到的常见问题,主要为编译错误和下载失败,并提供了解决方案和注意事项。通过本文中提供的具体解决方案和注意事项,希望能够帮助读者更加顺利地进行Keil5烧录代码操作,提高开发效率和成果实现。

qq_63195670的博客 1万+

MMCVDeformConv2d转TensorRT记录

MMCVDeformConv2d转Tensorrt

qq_35435798的博客 1778

nodejs nodemailer发送邮件

注:由于本人使用最新版本的nodemailer不兼容,所以目前使用的是0.7.1版的nodemailer 下面展示的是使用QQ邮箱发送邮件的实例,如果你有其它需求,也可以更换成其他邮箱发送,如(163,gmail等)。 1.安装nodemailer npm install nodemailer@0.7.1 2.调用 var to = 'XXX@qq.com';

Leo的专栏 5122

高通Camx功能feature分析之八:高通NCS服务之架构和初始化

本文介绍了高通NCS(NONCameraSensor)服务的架构与初始化流程。NCS服务通过QMI接口访问非相机传感器,为CameraEIS、AEC等算法节点提供陀螺仪、加速度计等传感器数据支持。文章详细解析了NCS服务的分层架构,包括客户端、服务端、QSEE接口实现等组件,并重点分析了初始化过程中获取传感器列表、查询能力等关键步骤。通过camxsetting.xml中的enableNCSService开关控制服务启动,初始化过程涉及QSEE单例创建、传感器能力查询等核心操作。后续文章将继续深入讲解相关技术

929

Nodejs 如何发送邮件(Gmail 和 126邮箱)

发邮件类库 安装nodemailer npm install nodemailer --save-dev 查看git 源码 使用Gmail,简单粗暴(提前给Gmail 授权即可) 授权Gmail 邮箱点这里 允许授权后就进入正题,直接上代码: mailer.js var nodemailer = require('nodemailer'); var

du_peiduo的专栏 5757

1、使用Spark SQL查询Databricks:全面指南

本博客全面介绍了如何使用Spark SQL在Databricks平台上进行高效的数据查询与分析。内容涵盖SQL基础操作、数据过滤、复杂查询技巧、简单与高级计算、数据聚合、日期处理等核心主题,适合数据分析师、开发人员及SQL学习者。通过逐步讲解和实用示例,帮助读者掌握从入门到高级的SQL技能,并提供学习路径建议和免费代码资源,助力实际数据分析工作。

redis7keeper的博客 90

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

nodejs利用nodemailer发送邮件,163 和gmail的配置

http://nodemailer.com/ 安装nodemailer: npm install nodemailer --save 我所使用的版本号是:0.7.1 1. 不配置任何的邮箱服务器,同样可以进行邮件的发送 const nodeMailer = require("nodemailer"); let transporter = nodeMailer.c

LXY224的博客 3万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Nodejs 发送邮件 示例

Nodejs 发送邮件 示例 前端使用nodejs发送邮件是一款不错的选择,当然需要配置node环境 —— nodejs 环境搭建及基本使用 ;在项目中,需要将数据发送到某个第三方平台的邮箱中,单单使用 javascript 是不能很好的适应我们的需求;但 javascript 可以通过 mailto 来发送邮件,只是它需要本地的支持,另一种通过 javascript 发送邮件的方式是只用于 ie...

qq_43344133的博客 1298

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【node】发送邮件及附件简要使用说明

Nodemailer是一个用于Node.js应用程序的模块,可以轻松发送电子邮件。该项目始于2010年,当时没有合理的选项来发送电子邮件消息,如今它是大多数Node.js用户默认选择的解决方案。

产品:SmartApi;服务:大前端++;其他技术分享 1470

Nodejs发邮件组件Nodemailer

从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的...

fens的博客 608

Nodejs之发送邮件nodemailer

nodejs邮件模块nodemailer的使用说明 1.介绍 nodemailer是node的一个发送邮件的组件,其功能相当强大,普通邮件,传送附件,邮件加密等等都能实现,而且操作也十分方便。 nodemailer在GitHub上的项目地址为https://github.com/andris9/Nodemailer 本文将说明如何使用163邮箱发送邮件,由于所学...

a765123的博客 507

NodeJs使用NodeMailer发送邮件

Nodemailer介绍 Nodemailer是一个Node中常用的用于发邮件的组件。Github地址为:https://github.com/andris9/Nodemailer Node引用: $ npm installl nodemailer 根据 http://blog.fens.me/nodejs-email-nodemailer/ 的介绍,其主要特点包括: 支持Unicode...

343

nodejs模块nodemailer基本使用-邮件发送(支持附件)

nodemailer是nodejs中的邮件发送模块,本文使用的版本为2.5.0 npm下载模块后,在项目中引入就可以使用: var nodemailer = require('nodemailer'); 以QQ邮箱为例. 后端代码: var transporter = nodemailer.createTransport({ service: 'qq', auth: {

意外金喜 3万+

Nodejs 邮件发送 Nodemailer

简介         Nodemailer是一个Nodejs用于发送邮件的插件。         官网地址为:https://nodemailer.com 主要有一下特点: 支持Unicod编码包括emoji表情 支持Windows系统环境...

Wang_Manman的博客 491

Node.js使用NodeMailer发送邮件

1.部署 1.1 部署Express 1.2 准备一个邮箱并开始SMTP服务 为了实现这个功能,你首先要有一个邮箱;由于需要使用SMTP方式发送,你还需要开启相关功能。你可以登录你的邮箱,然后开启这个设置,以新浪邮箱和QQ邮箱为例: 开启SMTP QQ邮箱 开启服务时...

chentian7755的博客 725
上一篇: C++:用 libcurl 发送一封带有附件的邮件
下一篇: curl 如何发送一个邮件 ?
belldeep
博客等级 码龄20年 1820粉丝 584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值