ts发送邮箱,以网易邮箱来演示

news2024/11/14 19:22:40

①引入依赖:

npm i @nestjs-modules/mailer nodemailer

这里是引入相应的需要的依赖。

创建模块,以及服务

nest generate module sendEmail 

nest generate service sendEmail 

②在app.module中注册,之后在其它的模块就可以使用

import { Module } from '@nestjs/common';
import { MailerModule } from '@nestjs-modules/mailer';
import { PugAdapter } from '@nestjs-modules/mailer/dist/adapters/pug.adapter';

@Module({
  imports: [
    MailerModule.forRoot({
      transport: {
        host: process.env.EMAIL_HOST, // Replace with the SMTP server of the email provider
        port: parseInt(process.env.EMAIL_PORT), // Typically 465 for secure SMTP (SSL/TLS)
        secure: true, // Use SSL/TLS

        auth: {
          user: process.env.EMAIL_USERNAME, // Your email address
          pass: process.env.EMAIL_PASSWORD, // Your email password
        },
      },
      defaults: {
        from: `"${process.env.EMAIL_FROM}" <${process.env.EMAIL_FROM_ADDRESS}>`, // Default sender address
      },
      template: {
        dir: join(__dirname, 'templates'), // Directory for email templates
        adapter: new PugAdapter(), // Template engine
        options: {
          strict: true,
        },
      },
    }),
  ],
  providers: [
    
  ],
  exports: [],
})
export class AppModule {}

EMAIL_HOST='smtp.163.com'
EMAIL_PORT='465'
EMAIL_USERNAME='你的邮箱号'
EMAIL_PASSWORD='你的邮箱密码'
EMAIL_FROM='发送的来源信息'
EMAIL_FROM_ADDRESS='你的邮箱号'

到这里你就配置完成了信息

import { Module } from '@nestjs/common';
import { SendEmailService } from './send-email.service';

@Module({
  providers: [SendEmailService],
  exports: [SendEmailService],
})
export class SendEmailModule {}

③使用:

我这里将内容抽取出来作为方法来使用

import { MailerService } from '@nestjs-modules/mailer';
import { Injectable } from '@nestjs/common';

@Injectable()
export class SendEmailService {
  constructor(private readonly mailerService: MailerService) {}

  // eslint-disable-next-line max-lines-per-function
  async sendEmail(
    to: string,
    subject: string,
    title: string,
    subTitle: string,
    description: string,
    content: string | number,
  ) {
    const result = await this.mailerService.sendMail({
      to,
      from: process.env.EMAIL_FROM_ADDRESS,
      subject: subject,
      template: 'reset-password',
      context: {
        title,
        subTitle,
        description,
        content,
      },
    });
    return result;
  }
}

这里的reset-password是模块的名称

就在该模块下的templates文件夹下创建reset-password.hbs内容

<html lang='en-US'>

  <head>

    <meta content='text/html; charset=utf-8' http-equiv='Content-Type' />

    <title>${title}</title>

    <meta name='description' content='Email Template' />

    <style type='text/css'>

      a:hover { text-decoration: underline !important; }

    </style>

  </head>

  <body

    marginheight='0'

    topmargin='0'

    marginwidth='0'

    style='margin: 0px; background-color: #f2f3f8'

    leftmargin='0'

  >

    <!--100% body table-->

           <!-- 这里输入自己想要的样式,要发送的内容等-->

    <!--/100% body table-->

  </body>

</html>

这里就是发送的样式的路径位置,以及文件名称

这样就将整个发送的从注册到使用书写完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2084933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

员工飞单、走私单、离职带走客户,屡禁不止怎么办?1招防止!

企业面临着诸多挑战&#xff0c;其中员工行为不端&#xff0c;如飞单、走私单以及离职时带走客户等问题&#xff0c;不仅损害了企业的经济利益&#xff0c;更侵蚀了企业的市场竞争力与客户信任度。 这些问题如同一颗颗毒瘤&#xff0c;若不及时清除&#xff0c;将严重阻碍企业…

简而不减,极致便捷!泰极预付费解决方案震撼上市

开户麻烦!绑表复杂!用电情况模糊!电费收缴难! 在日常生活中,能源缴费可能经常会遇到运维难管理、缴费收益难计算、支付安全难保障等问题。如何解决呢?正泰物联推出“泰极预付费解决方案”,“简”操作,“不减”功能,有效解决上述问题,助力实现便捷生活。 享轻松:泰极简而不减…

three.js 编辑器,动画,着色器, cesium 热力图,聚合点位,大量点线面, 图层,主题,文字

对于大多数的开发者来言&#xff0c;看了很多文档可能遇见不到什么有用的&#xff0c;就算有用从文档上看&#xff0c;把代码复制到自己的本地大多数也是不能用的&#xff0c;非常浪费时间和学习成本&#xff0c; 尤其是three.js &#xff0c; cesium.js 这种难度较高&#xff…

【计算机组成原理】五、中央处理器:3.指令流水线(互斥、同步)

5.指令流水线 文章目录 5.指令流水线5.1基本概念5.2性能指标5.3指令流水线影响因素5.3.1结构相关&#xff08;**资源冲突**&#xff09;&#xff1a;**互斥**5.3.2数据相关&#xff08;**数据冲突**&#xff09;&#xff1a;**同步**5.3.3控制相关&#xff08;**控制冲突**) 5.…

电脑网络设置

有时候开机会发现电脑明明练了Wifi却无法上网&#xff0c;是因为之前梯子没关直接关机&#xff0c;解决方案是 打开设置网络和Internet代理手动设置代理关闭“使用代理服务器”

黑马JavaWeb开发笔记10(前端完结)——Vue路由介绍入门、前端工程打包、nginx前端部署

文章目录 前言一、Vue路由1. 介绍2. 路由入门 二、打包部署1. 前端工程打包2. 部署前端工程2.1 nginx介绍2.2 部署 总结 前言 本篇文章是2023年最新黑马JavaWeb开发笔记10&#xff1a;Vue路由介绍&入门、前端工程打包、nginx前端部署的总结&#xff0c;帮助需要学习Web开发…

6款文件恢复软件推荐,电脑小白也能够一人做到电脑数据恢复!

在一台小小的电脑里&#xff0c;有着我们学习资料的整理、工作文件的痕迹和生活点滴的回忆&#xff0c;正因为这些数据对我们来说是十分珍重的东西&#xff0c;所以会难以承受它们丢失不见的结果。 一旦造成数据丢失&#xff0c;我们该怎么做才能把这些重要的数据文件找回呢&a…

科研绘图之折线图

在科研数据分析中&#xff0c;折线图是一种常见且有效的可视化工具&#xff0c;用于展示数据随时间或其他连续变量的变化趋势。Python&#xff0c;作为一种强大的编程语言&#xff0c;提供了多种绘制折线图的工具和库&#xff0c;其中最常用的包括 Matplotlib 和 Seaborn。 Ma…

vscode解决运行程序无法从控制台输入问题

在vscode中运行一些简单的程序代码&#xff0c;需要从控制台接受输入参数&#xff0c;发现不能通过键盘输入。 本章教程&#xff0c;提供该问题的解决方法。 解决办法 由于我是使用的Code Runner这个插件&#xff0c;Code Runner插件支持运行多种编程语言&#xff0c;很方便。打…

如何构建基于Java SpringBoot和Vue的受灾救援物资管理系统?——四步实现物资高效调配,提升救援响应速度

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

国外服务器独立ip的好处

国外服务器提供独立IP服务&#xff0c;这为网站运营者、企业用户以及个体户提供了诸多便利。独立IP即一个独一无二的IP地址&#xff0c;专为一个网站或一项服务&#xff0c;相较于共享IP&#xff0c;独立IP拥有许多不可替代的优势。下面将介绍国外服务器提供独立IP服务的好处&a…

C#生成exe并用process运行

文章目录 前言一、生成exe1.发布自包含版本2.一些问题1. 使用 .NET Framework修改项目文件 二、使用Process调用exe子进程阻塞了父进程&#xff1a;资源锁定&#xff1a;无限循环&#xff1a;命令行挂起&#xff1a;1.解决方法示例代码 说明1.启动 EXE 文件&#xff1a;2.启动 …

开源项目管理工具Taiga

什么是 Taiga &#xff1f; Taiga 是一个免费开源&#xff0c;而且功能非常强大的项目管理平台&#xff0c;用于初创企业和敏捷开发团队。Taiga 专注于简洁性&#xff0c;并且界面很干净简单。Taiga 也非常个性化&#xff0c;并集合了很多其它功能和外部工具&#xff0c;还有大…

如何恢复最近删除的文件?5种简单方法!

数据丢失在我们的工作生活中经常发生。当你决定清理硬盘或U盘时&#xff0c;你会删除一些文件夹或文件。如果你通过右键单击删除文件&#xff0c;则可以很容易从回收站恢复已删除的文件。但是&#xff0c;如果你按Shift Delete键、清空回收站或删除大于8998MB的大文件夹&#…

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(XGBoost分类器)

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#xff08;XGBoost分类器&#xff09; 文章目录 一、基本原理鲸鱼智能优化特征选择流程 二、实验结果三、核心代码四、代码获取五、总结 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序…

丹娜生物增利不增收:核心产品原材料面临不利因素,销售费用率攀升

《港湾商业观察》黄懿 7月15日&#xff0c;丹娜&#xff08;天津&#xff09;生物科技股份有限公司&#xff08;下称“丹娜生物”&#xff09;针对北交所出具的IPO问询文件进行了首轮回复&#xff0c;其保荐人为招商证券。7月26日&#xff0c;监管部门发出第二封问询函。 公开…

分布式场景下websocket解决方案

在项目中遇到&#xff1a;多个服务作为websocket服务端时&#xff0c;怎么跟前端设备进行数据通信的问题。具体解决方案&#xff0c;分享一下。 1.遇到问题 项目中使用websocket与前端设备建立长链接&#xff0c;用于推送过车、车位数、支付等相关信息&#xff0c;由于项目是负…

监控摄像头内存卡格式化了怎么恢复?

监控摄像头在现代社会中的应用越来越广泛&#xff0c;无论是家庭安防还是商业场所的安全监控&#xff0c;它们都扮演着重要的角色。然而&#xff0c;内存卡的数据丢失问题也时有发生&#xff0c;尤其是当内存卡被不小心格式化时&#xff0c;很多重要的监控数据可能会永久丢失。…

SpringBoot下获取resources目录下文件的常用方法

哈喽&#xff0c;大家好&#xff0c;今天给大家带来SpringBoot获取resources目录下文件的常用方法&#xff0c;示例中的方法是读取resources目录下的txt和xlsx文件&#xff0c;并将xlsx导出到excel的简单写法。完整代码放在最后。 通过this.getClass()方法获取 method1 - met…

linux安装mysql数据库,含公网链接(有网络带网安装)

1.检查是否存在mysql mysql出现这个&#xff0c;代表没安装 -bash: mysql: command not found 2.检查是否有mariadb数据库&#xff0c;如果有&#xff0c;需要先卸载。 rpm -qa | grep mariadb3.卸载现有的数据库 rpm -e --上个命令显示的名字4.在线安装&#xff0c;需要外…