node发送email,解决方案

按照依赖包

  1. nodemailer
  2. nodemailer-smtp-transport

config.service可选的值

'1und1',
'AOL',
'DebugMail.io',
'DynectEmail',
'FastMail',
'GandiMail',
'Gmail',
'Godaddy',
'GodaddyAsia',
'GodaddyEurope',
'hot.ee',
'Hotmail',
'iCloud',
'mail.ee',
'Mail.ru',
'Mailgun',
'Mailjet',
'Mandrill',
'Naver',
'OpenMailBox',
'Postmark',
'QQ',
'QQex',
'SendCloud',
'SendGrid',
'SES',
'SES-US-EAST-1',
'SES-US-WEST-1',
'SES-EU-WEST-1',
'Sparkpost',
'Yahoo',
'Yandex',
'Zoho'

直接上代码

/**
 * 修改密码,找回密码,发送验证码
 * 2020-05-11
 */
'use strict';
const nodemailer = require('nodemailer')
const smtpTransport = require('nodemailer-smtp-transport');
const produceRandom = require('produce-random');
const config = {
	service: 'QQ',
	auth: {
		user: '******', //邮箱
		pass: '******', // 密码(该密码是获取的授权码,并非自己的邮箱密码,下面连接)
		[获取授权验证码](https://mail.qq.com/cgi-bin/frame_html?sid=Il3r6d10Ng62bCd5&r=e44820ec588276c81969dd73787eaf92)
	}
}

//创建
const transporter = nodemailer.createTransport(smtpTransport(config));

exports.main = async (event, context) => {
	let {
		recipient,
		type
	} = event
	/**
	 * recipient 收件人
	 * subject 发送的主题
	 * html 发送的html内容
	 * from 发送人
	 */
	let checkCode = produceRandom();
	let html = `<div>
			<h3>尊敬的xxx,您好!</h3>
			<p style="text-indent: 30px;">我们检测到,您正在执行${type==='modifi' ? '修改密码' : '找回密码'}操作,为进一步保护您的账户信息安全,请在操作页面输入以下验证码。</p>
			<p style="text-indent: 30px;font-weight: bold;">验证码:${checkCode}</p>
		</div>`
	let subject = type==='modifi' ? '修改密码' : '找回密码';	
	let sendMailRes = await transporter.sendMail({
		from: config.auth.user,
		to: recipient,
		subject,
		html
	})
	
	if(sendMailRes.response == '250 OK: queued as.'){
		return {
			status: 0,
			msg: "成功",
			checkCode
		}
	} else {
		return {
			status: -1,
			msg: "稍后重试"
		}
	}
	
	return {
		status: -1,
		msg: "稍后重试"
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值