前端用js发送邮箱 前端发送邮箱

安装包依赖

yarn add nodemailer

nodemailer官网

邮箱授权码

邮箱授权码: 邮箱授权码需要开通,以QQ邮箱为例,其它大同小异
在这里插入图片描述

demo eg:

picture

页面发送内容

在这里插入图片描述

有效接受效果

在这里插入图片描述

code


<script lang="ts" setup>
// yarn add nodemailer
// import nodemailer from 'nodemailer';
const nodemailer = require('nodemailer');

const send = () => {
  message.info('开始发送');
  let dom = document.getElementById('emailCon') as HTMLDivElement;

  sendEmail('xxxxxx@qq.com', 'xxxxxx@qq.com', dom.innerHTML, 'xxxxxxx');
};

/**
 *
 * @param fromEmail 发送者邮箱
 * @param toEmail 接收者邮箱
 * @param sendCon 发送内容
 * @param pass smtp授权密码
 * @param host 邮箱服务的host
 */
const sendEmail = (
  fromEmail: string,
  toEmail: string,
  sendCon: string,
  pass: string,
  host: string = 'smtp.qq.com',
) => {
  /**
   * 邮箱服务的host:
   * qq: smtp.qq.com
   * 163: smtp.163.com
   */
  let transporter = nodemailer.createTransport({
    host, //发送者邮箱服务端口,参考 https://github.com/nodemailer/nodemailer-wellknown/blob/master/services.json
    port: 465,
    secure: true,
    auth: {
      user: fromEmail, //发送者邮箱
      pass, //发送者邮箱授权码,不是登录或者独立密码,是你设置的smtp授权密码
    },
  });
  let mailOptions = {
    from: `夜空孤狼啸 "<${fromEmail}>"`, // sender address
    to: toEmail, // list of receivers
    subject: '测试邮箱', // Subject line
    text: 'Hello world?texttexttexttext', // plain text body
    html: sendCon, // html body
  };
  transporter.sendMail(mailOptions, (err: any, info: any) => {
    if (err) {
      console.log(err);
      message.error('发送失败');
    } else {
      console.log(info);
      message.success('发送成功');
    }
  });
};
</script>

<template>
  <Layout name="nodemailer 发送邮件" title="nodemailer" titleWidth="130px">
    <template #btn>
      <a-button type="primary" @click="send">发送</a-button>
    </template>
    <template #content>
      <div class="con w-px-600 h-px-600" contentEditable="true" id="emailCon"></div>
    </template>
  </Layout>
</template>

<style lang="less" scoped>
.con {
  outline: 1px solid #ccc;
}
</style>

参考别人写的code

'use strict';  
  
// 引入nodemailer模块  
const nodemailer = require('nodemailer');  
  
// 创建邮件传输器  
// 这里我们使用的是QQ邮箱的SMTP服务器  
// 注意:确保你的QQ邮箱已经开启了SMTP服务,并且获取了授权码  
const transporter = nodemailer.createTransport({  
  service: 'QQ', // 使用QQ邮箱的SMTP服务  
  port: 465, // SMTP端口号,通常SMTP over SSL的端口是465  
  secure: true, // 使用SSL连接  
  auth: {  
    user: '你的QQ邮箱地址', // 填写你的QQ邮箱地址  
    pass: '你的授权码', // 填写你在QQ邮箱中获取的授权码,不是登录密码  
  },  
});  
  
// 定义邮件的选项  
const mailOptions = {  
  from: `"发件人名称" <你的QQ邮箱地址>`, // 发件人的邮箱地址和名称  
  to: '收件人邮箱地址', // 收件人的邮箱地址  
  subject: '邮件主题', // 邮件的标题  
  text: '纯文本内容', // 邮件的纯文本内容(如果同时定义了html,则html会被优先使用)  
  html: '<h1>HTML内容</h1>', // 邮件的HTML内容  
  // 如果需要添加附件,可以定义attachments数组  
  attachments: [  
    {  
      filename: '附件1.jpg', // 附件的文件名  
      path: '附件1的本地路径或URL', // 附件的本地文件路径或网络URL  
      cid: 'myImage1', // CID,用于在HTML内容中引用该图片  
    },  
    {  
      filename: '附件2.docx',  
      path: '附件2的本地路径或URL',  
      cid: 'myDocument',  
    },  
    // 可以继续添加更多附件...  
  ],  
};  
  
// 发送邮件  
transporter.sendMail(mailOptions, (error, info) => {  
  if (error) {  
    // 如果发送邮件过程中出错,则打印错误信息  
    console.error('发送邮件时出错:', error);  
    return;  
  }  
  // 如果邮件发送成功,则打印相关信息  
  console.log('邮件发送成功:', info);  
  // info对象包含了邮件发送的详细信息,如messageId等  
});  
  
// 备注:  
// 1. 确保已经通过npm安装了nodemailer模块  
// 2. 替换上述代码中的'你的QQ邮箱地址'、'你的授权码'、'收件人邮箱地址'等为实际的值  
// 3. 邮件的HTML内容中,如果引用了附件中的图片,可以通过<img src="cid:图片CID" />的方式引用  
// 4. attachments数组中可以添加多个附件对象,每个对象定义了附件的文件名、路径和CID等信息  
// 5. 发送邮件时,如果发生错误,会在回调函数的error参数中返回错误信息  
// 6. 如果邮件发送成功,回调函数的info参数会包含邮件的详细信息,如messageId等

说明

在上面的代码中,我们将SMTP服务器的主机名设置为smtp.qq.com,端口号设置为465,并启用了SSL加密连接。同时,将your-email@qq.com和your-password替换为你自己的QQ邮箱地址和密码。

其他的邮件选项,如收件人、抄送地址、主题、正文内容、HTML内容和附件等,可以按照需求进行设置和修改。

请注意,QQ邮箱的SMTP服务器要求使用SSL/TLS加密连接,因此我们将secure选项设置为true来启用安全连接。

运行修改后的代码后,它将使用你的QQ邮箱账号发送一封带附件、抄送和HTML格式的测试邮件。
确保你的QQ邮箱已正确配置,并允许使用SMTP服务进行邮件发送。如果需要,你可能需要在QQ邮箱设置中启用SMTP服务,并使用QQ邮箱的授权码(不是登录密码)进行身份验证。详细的配置信息可以参考QQ邮箱提供的文档或联系他们的支持团队。

请记住,不同的邮箱服务提供商可能有不同的配置要求和限制,请根据你的实际情况进行相应的调整和处理。

如果你使用的是自己的邮箱服务,可以根据你的自有邮箱服务器的配置信息进行相应的更改。确保提供正确的SMTP服务器主机名、端口号和认证信息。

通过这篇文章,我们了解了如何使用Node.js的Nodemailer模块发送带附件、抄送和HTML格式的电子邮件。Nodemailer提供了丰富的功能和选项,使我们能够轻松地集成邮件服务到我们的应用程序中,满足各种需求。

请记住,在实际生产环境中,你可能需要进行额外的配置和安全性考虑。以下是一些建议和注意事项:

  • 配置自有邮箱服务器:如果你使用的是自有邮箱服务器,确保正确配置服务器的主机名、端口号和安全设置(如SSL/TLS)。
  • 邮箱账号安全:避免在代码中直接硬编码邮箱账号和密码。你可以将敏感信息存储在配置文件或环境变量中,并在代码中引用它们。
  • 应用程序密码:如果你的邮箱账号启用了两步验证,建议生成一个应用程序专用密码,并使用该密码进行SMTP身份验证,而不是使用主密码。
  • 邮件内容和格式:根据你的需求,可以使用HTML格式来创建丰富的邮件内容,包括样式和图像。确保提供备选的纯文本内容,以便兼容不支持HTML格式的邮件客户端。
  • 附件处理:使用attachments选项可以添加附件到邮件中。确保提供正确的附件文件名和路径,并确保邮件大小不超过SMTP服务器的限制。
  • 错误处理:在发送邮件时,使用错误回调函数来处理潜在的错误情况,并采取适当的措施。你可以记录错误、发送错误通知或执行其他操作,以适应你的应用程序需求。
  • 邮件发送限制:一些SMTP服务器可能对发送邮件的频率或数量有限制。确保了解你所使用的SMTP服务器的限制,并根据需要进行适当的管理和调整。
  • 安全性考虑:如果你处理敏感信息或使用邮件服务进行身份验证,确保使用安全的连接(如SSL/TLS)来保护邮件传输过程中的数据安全性。

在本文中,我们探讨了如何使用Node.js的Nodemailer模块发送带附件、抄送和HTML格式的电子邮件,以及如何将其应用于QQ邮箱作为自有邮箱服务的情况。
总结一下,以下是关键要点:

  1. 安装Nodemailer模块:使用npm包管理器安装Nodemailer模块,这是一个用于发送电子邮件的强大工具。
  2. 设置邮箱服务器信息:根据你的自有邮箱服务提供商的要求,配置SMTP服务器的主机名、端口号和安全选项。
  3. 配置认证信息:提供你的邮箱地址和密码(或授权码)作为SMTP服务器的认证信息。
  4. 构建邮件选项:设置邮件的发送者、收件人、抄送地址、主题、正文文本、HTML内容和附件等选项。
  5. 使用附件:使用attachments选项添加附件到邮件中,确保提供正确的附件文件名和路径。
  6. 发送邮件:使用transporter.sendMail()方法发送邮件,并处理发送结果的回调函数。
  7. QQ邮箱配置:对于QQ邮箱,需要将SMTP服务器设置为smtp.qq.com,使用SSL加密连接(端口465),并提供QQ邮箱的地址和密码作为认证信息。

在实际使用中,还需注意安全性、错误处理和额外配置等因素。确保保护敏感信息、了解SMTP服务器的限制,并根据需要进行适当的调整和管理。

通过以上步骤,你可以使用Node.js和Nodemailer模块灵活地发送带附件、抄送和HTML格式的电子邮件,满足你的应用程序的需求。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜空孤狼啸

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值