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


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

    一、环境配置

    安装模块:nodemailer

    npm i nodemailer --save
    
    • 1

    二、邮箱服务配置如下:

    let transporter = nodemailer.createTransport({
      host: 'smtp.qq.com',
      port: 465,
      secure: true,
      auth: {
        user: '**********',
        pass: 'your-password'
      }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    邮箱服务提供商的要求,配置SMTP服务器的主机名、端口号和安全选项等细则如下:
    host:网易邮箱 | QQ 的SMTP服务器地址
    port:端口,如果 secure 为 true,则端口为 465
    secure:安全连接
    auth:邮箱认证
    user:发送方邮箱的账号
    pass:邮箱授权密码

    另还有下面这样指定的服务器的

    var transporter = nodemailer.createTransport({
         service: 'QQ',
         auth: {
             user: '944xxxx69@qq.com',//发送者邮箱
             pass: 'czboxxxxxqvmbebd' //邮箱第三方登录授权码
         },
         logger: bunyan.createLogger({
             name: 'nodemailer'
         }),//打印日志
         debug: true
     });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    service:指定邮件服务商,如“QQ”、“gmail”

    三、邮件发送配置

    const mailOptions = {
        from: 'youremail@163.com', // 你的邮箱
        to: 'test@163.com', // 接收者,可以同时发送多个,以逗号隔开
        cc:'xx@example.com',
        subject: '邮件测试',
        text: '这是一封来自 Node.js 的邮件测试。', // 邮件文本
        html: `

    this is en email from nodemailer

    `
    , // 邮件支持 html,但是和 text 冲突,后者会覆盖掉前者,只能选其一 // Apple Watch specific HTML body 苹果手表指定HTML格式 watchHtml: 'Hello to myself', attachments: [ // 上传附件的格式,path 为相对路径 { // utf-8 string as an attachment filename: 'text1.txt', content: 'hello world!' }, { // binary buffer as an attachment filename: 'text2.txt', content: new Buffer('hello world!','utf-8') }, { // file on disk as an attachment filename: 'text3.txt', path: '/path/to/file.txt' // stream this file }, { // filename and content type is derived from path path: '/path/to/file.txt' }, { // stream as an attachment filename: 'text4.txt', content: fs.createReadStream('file.txt') }, { // define custom content type for the attachment filename: 'text.bin', content: 'hello world!', contentType: 'text/plain' }, { // use URL as an attachment filename: 'license.txt', path: 'https://raw.github.com/nodemailer/nodemailer/master/LICENSE' }, { // encoded string as an attachment filename: 'text1.txt', content: 'aGVsbG8gd29ybGQh', encoding: 'base64' }, { // data uri as an attachment path: 'data:text/plain;base64,aGVsbG8gd29ybGQ=' }, { // use pregenerated MIME node raw: 'Content-Type: text/plain\r\n' + 'Content-Disposition: attachment;\r\n' + '\r\n' + 'Hello world!' } ], };
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    from :发件人的电子邮件地址。电子邮件地址可以是简单的 ‘sender@server.com’ 或格式化的 ‘“发件人姓名” sender@server.com’,详细信息请参见地址对象
    to :以逗号分隔的收件人电子邮件地址列表或数组,将显示在“收件人”字段中
    cc :以逗号分隔的抄送人电子邮件地址列表或数组,将显示在“抄送”字段中。
    bcc:以逗号分隔的密送人电子邮件地址列表或数组,将显示在“密送”字段中
    subject :邮件的主题
    text :作为Unicode字符串、缓冲区、流或类似附件的对象的纯文本版本消息
    html :作为Unicode字符串、缓冲区、流或类似附件的对象的HTML版本消息,但是和 text 冲突,后者会覆盖掉前者,只能选其一
    watchHtml :适用于Apple Watch的特定HTML版本的消息。最新的手表可以正常渲染text/html内容,因此收件人可能永远不会看到watchHtml
    amp : 适用于AMP4EMAIL的特定HTML版本的消息,与text和html的使用方式相同。有关使用方法,请参见下面的AMP示例,或参阅此博文以了解发送和渲染的更多信息
    attachments:附件对象的数组(有关详细信息,请参见“使用附件”)。附件还可用于嵌入图像
    filename: 附件的文件名,可以使用Unicode字符
    content:附件的内容,可以是字符串、缓冲区或流
    contentType:附件的可选内容类型,如果未设置,将从文件名属性中推导出来
    cid: 用于在HTML消息源中使用内联图像的可选内容ID
    path:附件的文件路径,如果希望流式传输文件而不是包含在附件中(适用于较大的附件)
    href:文件的URL(也可以是data URI)
    httpHeaders :与href请求一起传递的可选HTTP头,例如 {authorization: “bearer …”}
    contentDisposition : 附件的可选内容展示类型,默认为“attachment”
    encoding -:如果设置并且内容是字符串,则使用指定的编码将内容编码为缓冲区。示例值:“base64”、“hex”、“binary”等。如果要在JSON格式的电子邮件对象中使用二进制附件,这很有用
    headers : 附件节点的自定义标头。与消息标头的使用方式相同
    raw : 是一个可选的特殊值,用于覆盖当前MIME节点的全部内容,包括MIME标头。如果要自己准备节点内容,这很有用。 可以添加任意数量的附件

    另其他选项:
    sender - 发件人的电子邮件地址,将显示在“发件人”字段中(如果不确定使用哪个,请始终优先使用“from”)
    replyTo - 将显示在“回复”字段中的电子邮件地址
    inReplyTo - 此邮件所回复的消息的Message-ID
    references - Message-ID列表(数组或以空格分隔的字符串)
    envelope - 可选的SMTP信封,如果自动生成的信封不合适(有关详细信息,请参见SMTP信封)

    attachDataUrls - 如果为true,则将此消息的HTML内容中的data:图像转换为嵌入的附件

    3.1、标题邮件地址对象设置

    {
        name: 'Майлер, Ноде',
        address: 'foobar@example.com'
    }
    
    • 1
    • 2
    • 3
    • 4
    ...,
    to: 'foobar@example.com, "Ноде Майлер" , "Name, User" ',
    cc: [
        'foobar@example.com',
        '"Ноде Майлер" <bar@example.com>,
        "Name, User" <baz@example.com>'
    ],
    bcc: [
        'foobar@example.com',
        {
            name: 'Майлер, Ноде',
            address: 'foobar@example.com'
        }
    ]
    ...
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    四、发送邮件

    transporter.sendMail(mailOptions, function(error, info){
    if (error) {
    console.log(error);
    } else {
    console.log('Email sent');
    }
    transporter.close();
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    五、参考地址:

    https://nodemailer.com/about/

    好用的开发工具推荐

    推荐理由

    postman在国内使用已经越来越困难:
    1、登录问题严重
    2、Mock功能服务基本没法使用
    3、版本更新功能已很匮乏
    4、某些外力因素导致postman以后能否使用风险较大
    出于以上考虑因此笔者自己开发了一款api调试开发工具SmartApi,满足基本日常开发调试api需求

    简介

    历时一年半多开发终于smartApi-v1.0.0版本在2023-09-15晚十点正式上线
    smartApi是一款对标国外的postman的api调试开发工具,由于开发人力就作者一个所以人力有限,因此v1.0.0版本功能进行精简,大功能项有:

    • api参数填写
    • api请求响应数据展示
    • PDF形式的分享文档
    • Mock本地化解决方案
    • api列表数据本地化处理
    • 再加上UI方面的打磨

    下面是一段smartApi使用介绍:
    在这里插入图片描述

    下载地址:

    https://pan.baidu.com/s/1kFAGbsFIk3dDR64NwM5y2A?pwd=csdn

  • 相关阅读:
    《疯狂塔防物语》新一轮边玩边赚活动来了,仅面向战斗卡 NFT 持有人开放!
    spark(day02)
    高德地图实现gps轨迹坐标定位代码
    《向量数据库指南》——向量数据库Elasticsearch -> Milvus 2.x
    mysql安装,安装mysql配置教程(超级详细图解)
    linux golang安装
    [羊城杯 2023] web
    汇编的基础
    COMP1721 Object-Oriented Programming
    Git版本管理工具使用知识汇总
  • 原文地址:https://blog.csdn.net/lichong951/article/details/133350472