type
status
date
slug
summary
tags
category
icon
password

overview:smtp,gmail,nodejs

邮件是一种极其重要的沟通方式,但是通过邮件客户端,我们只能使用富文本编辑器,使用不了高级一些的东西,比如你想给你心爱的女孩发送一个漂亮的网页,那客户端将爱莫能助。
这时,我们就可以用到邮件协议与相关API的知识,来帮助我们实现这一“伟大愿景”。

简单邮件传输协议SMTP

在写具体代码之前,我们要先明白代码需要做什么,而这就需要编码者对邮件协议有一定的了解。
邮件协议有很多,由于这里只讲发送邮件,故我们选择smtp来学习。
SMTP的中文全称为 简单邮件传输协议,它是internet电子邮件中的主要应用层协议,采用了tcp的可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。作为应用层协议,它自然涉及到客户端,服务端,当A给B发送邮件时,A的邮件服务器上运行的是smtp客户端,B的邮件服务器上运行的是smtp服务端,反之亦然。
这里想必你已经清楚,我们要做的就是通过smtp协议,让邮件服务器帮我们发送邮件,避免使用邮件客户端,这样也就没有那么多限制了。
我将采用nodejs编写代码,使用gmail来发送邮件。
关于nodejs,你不一定要了解过多,你的本地需要有vscode,需要安装nodejs运行时和npm包管理器,这些在官网上都可以找到对应版本。

代码部分

代码中主要使用到了nodemailer这个包,它可以很方便的通过smtp协议发送内容;
我们首先通过nodemailer.createTransport函数创建了transporter,这个函数需要我们传入smtp客户端的相关情况,具体而言:邮件服务器主机名,端口号,发送邮箱地址与密码(这个密码需要另外申请,后面会讲到),接着我们可以调用这个transporter的sendMail方法发送邮件内容,参数包括from,即发送者的邮箱地址,目标邮箱地址,subject,我这里还有一个字段叫做html,因为我想要发送一个网页,假如你只需要发送一段普通的文字,用text字段即可。
 

获取gmail的授权码

前面的代码中包含一个pass的值,这个值相当于邮箱给第三方客户端(这里就是smtp客户端)的授权码,以下是gmail获取该值的大致流程:
 
  1. 登录gmail账户
  1. 点击设置—查看所有设置—转发和POP/IMAP
  1. 找到IMAP访问那一栏,点击 启用IMAP
  1. 点击右上方账号头像—管理您的google账号
  1. 在新开的网页点击右边security
  1. 在右边出现的how you sign in to google找到2-step ververification,点进去
  1. 成功进入后,往下翻,找到App paswords(应用密码),点击
  1. 创建一个,名字可以叫做mail,将生成的密码复制下来,千万别泄漏!
  1. 建议生成一个.env文件,里面加上PASS=你复制下来的密码,随后在发送的代码文件中用process.env.PASS代替,提高安全性。
 
结束之后,我们来运行一下代码:
notion image
发送成功,在接受邮箱中,便可以看到发送的网页内容
notion image
如果你加上css或js,也能出现动态的效果。
 
虽然用node发邮件不一定能帮你追到女孩,但它一定能让你变得更像一个专业人士。
浅谈Go1.20中的any与comparable DeFi builder投研系列|day01
Alex
Alex
某不知名青年|web2.5人士|喜欢猫与美少女
公告
type
status
date
slug
summary
tags
category
icon
password
有事请邮箱联系:alexwu7@outlook.com
🚀🚀🚀