整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

仅需 5 步,用 JavaScript 直接通过前端发送电子邮件

者 | Mateusz Iwaniuk

译者 | 明明如月,责编 | 夕颜

出品 | CSDN(ID:CSDNnews)

文章配套代码: https://github.com/iwaniukooo11/email-sender

现在,即使是创建最基本的网站,程序员也必须使用现代的功能和技术。甚至像为你的朋友创建简单的投资组合这样的基本项目也可能涉及到一些问题,比如从联系人表单接收数据。有很多方法可以读取这些数据。你可以将表单与数据库连接起来,然后从数据库中读取传入的消息来实现功能,但这样做会给不懂技术的客户造成困难。

你为什么不通过发送电子邮件传输信息?

不使用数据库就能接收到传入的消息,绝对是最佳选择,也是最方便用户的选择。但问题来了—如何实现呢?你可能认为需要使用某种后端语言。

实际上,你不必使用任何如 php 或 python 这种后端语言,你甚至不需要用到 node.js!你需要的就是一个简单的EmailJS 库。

本文将介绍下面两个重要功能:

  • 配置 emailjs 帐户

  • 使用 JS 发送电子邮件

请注意,在我的项目中,我使用了 gulp 和 webpack,我在 src 文件夹存放源码,dist 存放最终发布版本的代码。

我将分 5 个步骤向你展示如何从头开始构建电子邮件发送器。

步骤1-用 HTML 创建表单

首先需要创建一个 HTML 表单。你不必放置像 required 或 max 这种验证属性,因为稍后,preventDefault 函数将在你的提交事件上运行,它会让这些属性的处理失效。

表单中最重要的是为每个输入放置 name 属性,后面会用到。

我的非常简单的表单是这样的:

src/html/index.html

 <form class="form"> <input name='name' type="text" placeholder="Your name..." class="form__input" /> <input name='topic' type="text" placeholder="Topic..." class="form__input" /> <textarea name='message' type="text" placeholder="Your Message..." class="form__input" ></textarea>

<input type="submit" value="send" class="form__input form__input--button"> </form>

步骤2-注册成为 email 用户

要配置你的电子邮件,你必须注册电子邮件服务。别担心—使用这个网站非常方便和省时。

登入后,系统会询问你的电子邮件服务,它位于个人电子邮件服务区(personal email service)。在我的例子中,我选择了 gmail。

然后,你需要连接你的 gmail 帐户。这将用来发送电子邮件给你客户。例如,如果你关联了 xyz@gmail.com 账户,你后续发送的邮件都将从这个邮箱发出。所以不要担心“ Send email on your behalf” 这个授权信息—这正是你需要的!

连接完 gmail 账户后,点击添加服务(add service)按钮。

步骤3-创建邮件模板

如果你已经成功连接了你的 gmail 账户,你现在应该在信息中心中。现在需要创建电子邮件模板了。

切换到电子邮件模板卡,并单击创建一个新的模板(create a new template)。界面非常友好,所以创建模板不会有任何问题。

你可以选择模板的名称和 ID。我称之为“我的神奇模板(my_amazing_template)”。

接下来,你必须指定邮件的内容。

模板的变量值来自 input 中的 `name` 属性。你已将变量插入`{{{}}}`符号中。

不要忘记在“收件人”部分 (右侧) 添加电子邮件地址。你的电子邮件将被发送到该电子邮件地址上。截图中的收件人邮箱是我自己的公司邮箱。

这是我的简单模板,它使用来自 HTML 表单里的 3 个变量。我还指定了接收电子邮件的主题。

步骤4-保存 API 密钥

这部分没什么特别的。Emailjs 共享授权 API 密钥,将在发送电子邮件时使用。当然,放这些钥匙最好的地方是`.env` 配置。但是因为我使用的是简单的静态文件,我不想使用服务器配置,所以我将它们保存在 apikeys 文件中,然后再将它们导入。

你的 USER_ID 位于 Account > API Keys 菜单下。

TEMPLATE_ID 位于模板的标题下面。

这是我基于不存在的 keyssrc / js / apikeys. js 的示例配置.

src/js/apikeys.js

export default { USER_ID :'user_DPUd-rest-of-my-id', TEMPLATE_ID:'my_amazing_template'}

如果需要将源码发布到 GITHUB,不要忘记将 APIKEYS 文件添加到 .GITIGNORE文件中

步骤5-发送电子邮件

现在是该项目最后也是最重要的部分的了。现在我们必须使用 javascript 发送电子邮件。

首先,你必须下载 emailjs 包。

npm i emails-com

然后,转到 js 文件,导入库和 apikeys。

src/js/main.js

import emailjs from 'emailjs-com'import apiKeys from './apikeys'

现在是编写发送电子邮件功能的时候了

src/js/main.js

const sendEmail = e => { e.preventDefault

emailjs .sendForm('gmail', apiKeys.TEMPLATE_ID, e.target, apiKeys.USER_ID) .then( result => { console.log(result.text) }, error => { console.log(error.text) } )}

sendForm 函数有4个参数:

你的电子邮件的 ID,在这里:

TEMPLATE_ID 来自 apikey 文件,

事件对象来自你的表单提交

USER_ID 来自 apikey 文件,

最后,查找表单并添加提交事件监听器:

src/js/main.js

const form = document.querySelector('.form')form.addEventListener('submit',sendEmail)

正如我前面提到的,由于 `preventDefault` 函数,属性验证将无法工作。你必须使用 JS 自己进行验证和清除输入。

以上就是全部内容,接下来让我们测试一下。

填写页面上的表单并发送。

我收到电子邮件,内容正是根据我们的模板和表单数据渲染出来的。

通过上图可以看出,所有的变量的值都填充到了正确的位置上。

总结

通过本文的介绍你会发现用 JS 发送邮件并非难事。

使用 emailjs,你可以简单的方式发送电子邮件。

我相信你未来的用户会很高兴收到来自他们网页上表单填写数据的t邮件,相信本文对你有帮助。

这篇文章的配套代码在这里: https://github.com/iwaniukooo11/email-sender

原文链接:

https://dev.to/iwaniukooo11/send-e-mails-directly-from-front-end-with-js-5d7d

本文为CSDN翻译文章,转载请注明出处。

☞我们想研发一个机器学习框架,6 个月后失败了

☞生产型机器学习已经没那么困难了?

☞视频 | 你不知道的"开源"60年秘史

☞GitHub标星10,000+,Apache项目ShardingSphere的开源之路

☞阿里技术专家告诉你,如何画出优秀的架构图?

☞加拿大API平台如何做到30%为中国明星项目?创业老兵这样说……

期以来,很多用户可能会认为以邮件为载体的攻击中,需要重点关注的应该是可执行文件以及.dll文件,但根据专注于邮件安全领域的美国Barracuda Networks调查发现,在网络攻击中,攻击者使用的HTML附件是最多的,在其扫描到的威胁中占比达到了21%,其数量超过排名第二的TEXT(9%)两倍以上。

风险难以被识别是HTML附件在攻击者眼中的最大优势

对于这一结果,Barracuda Networks方面表示,由于HTML附件本身并不是恶意的,攻击者并不会在附件中包含恶意软件,而是使用托管在其他地方的Java脚本库进行多重重定向,因此这类攻击很难检测到。

在同类网络攻击中,HTML附件的使用越来越多,因为用户和系统都很难识别攻击。在Barracuda提供的示例中,HTML附件本身并不是恶意的,但最终会将用户诱导到一个恶意站点。

如前文所述,HTML附件以21%的比例在BarracudaNetworks扫描到的威胁中排名第一,除了排名第二的TEXT(9%)之外,其他类型的排序大体如下供参考:

XHTML (4%)

二进制文件(0.3%)

脚本(0.08%)

Rtf (0.04%)

MS Office (0.03%)

PDF (0.009%)

Barracuda发现,攻击者一直在用户定期收到的电子邮件中嵌入恶意HTML文件,比如报告链接,而实际上这是一封带有有害URL的网络钓鱼邮件。通过这种方法,攻击者不再需要在电子邮件正文中添加链接,从而更容易被发现,相比之下,HTML附件的方式则可以更快地绕过反垃圾邮件和反病毒策略。

当这些文件被打开时,HTML使用Java脚本将用户发送到第三方机器,要求用户输入他们的个人凭证来登录或下载一个恶意软件文件。这种方法也不需要攻击者创建一个虚假网站来进行此类攻击,而是可以直接创建一个嵌入在附件中的钓鱼表单,将钓鱼网站作为附件而不是链接发送出去。

如何保护系统免受恶意HTML附件侵扰

Barracuda强调了三个主要的技巧来帮助用户避免成为这类攻击的受害者:

1、确保自己正在使用的电子邮件保护解决方案可以扫描和阻止恶意HTML附件。

2、对用户进行一定的安全教育,告诉他们如何识别和报告潜在的恶意HTML附件。

3、如果这类恶意邮件攻击确实发生了,那么务必提前准备好事后的补救措施及相关工具。

在企业方面,投资于更强的电子邮件检测和响应能力的解决方案可以防止这种恶意软件进入企业内用户的收件箱。在个人方面,如果其中一封电子邮件进入了收件箱,那么通过零信任模型,在组织的IT部门验证它是安全的之前不要点击任何东西,这样可以为用户和企业节省大量的麻烦。

结不易: 请转发一下,收藏一下,谢谢

直接看发送效果

是不是图片 html 附件都实现了啊

首先你要开启 POP3/IMAP/SMTP 服务,以腾讯邮箱为例

记下你的授权码,别给别人看到哦

然后咱们上代码:

导入发送邮件用到库:

填写配置项目,邮箱,授权码 ,发送人邮箱等等

邮件正文

在邮件正文中使用图片:

向邮件中添加附件:

开始发送服务,哒哒哒

发送效果:

是不是很方便啊? 很简单吧?

感觉代码太多了,那么可以直接存成模板,想什么时候用直接拿来用就可以了

辛苦码字不易,请大家收藏转发一下

源码 请私信小编 回复 010 即可获取源码