者 | 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文件中
现在是该项目最后也是最重要的部分的了。现在我们必须使用 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%为中国明星项目?创业老兵这样说……
际工作中经常会遇到批量发邮件的需求,比如发送工资条、节日祝福、定期汇报工作成果、日报、周报、月报等,当然如果发送的邮件不是很多的话完全可以手工发送,一旦遇到批量发送的场景,手工一份一份的发送就会变得机械而重复劳动了。今天分享一个Excel调用电脑OutLook批量发送邮件的技巧,小伙伴们可以,先收藏,等要用到的时候可以有备无患,从容应对,别人加班的时候你还可以准点下班,那岂不是很乐哉!
一、先看看我们需要实现的效果。
发邮件跟写公式一样简单^-^
二、怎样才可以实现?
原理:通过VBA定义一个发邮件的函数,达到批量发送邮件时跟普通公式的用法一样简单的效果。
上面的效果图中我们定义了一个sendmail的函数,如果你现在打开你的excel找这个函数是找不到的,因为这个并不是office的内置函数,但微软给office产品都安装了一个神技能 “宏”,表亲们应该都听过这个,这次咱先不去追究这到底是什么东西,先看如何实现。
具体步骤:
三、发邮件的VBA代码。
感兴趣的童鞋们可以复制以下代码按上面的操作试一试。
'发送邮件函数 sendto收件人多个用英文分号链接 subj邮件主题 mbody邮件正文 filepath附件路径 Public Function sendmail(sendto As String, subj As String, mbody As String, filepath As String) On Error Resume Next Dim oLapp As Object Dim oItem As Object Set oLapp = CreateObject("Outlook.application") Set oItem = oLapp.createitem(0) With oItem .Subject = subj .To = sendto .htmlbody = mbody '加上这一句就可以添加附件 .Attachments.Add filepath .Send '判断是否发送成功 If Err.Number = 0 Then sendmail = "发送成功" Else '如果发送失败则返回失败原因 sendmail = "发送失败:" & Err.Description End If End With Set oLapp = Nothing Set oItem = Nothing End Function
四、保存我们定义的邮件函数。
补充说明:
2007版本及以上的Excel为了保证安全性,强制了含VBA代码的专用文件格,常用存为xlsm格式。
2003版本的Excel,后缀是xls的Excel文件可以直接存储VBA代码,不需要另存为其他格式。
如有疑问欢迎小伙伴们点关注,共同探讨学习。
〜 ̄△ ̄)〜
每天晚上一篇英语知识普及
英语罐头
本文是我的第59篇英语知识文章
不管是工作还是上学的你,在现在的信息时代,信息总是穿梭在你我之间,因此,每天收发信息变得不可避免。
但是,在英语中,对于国人一向认为的“发信息”说成send message,虽然这么说也没有问题,但是却显得非常不地道,老外一般都不会这么说,那么最地道的说法是怎么样的呢?
一.发信息地道应该怎么说?
text me 发信息,留言
大家都知道,text是文本的意思,但这个单词的动词意思是“发短信,发信息”的意思,text message则是“短信”的意思,因此在国外,大家更多会使用text。
Text me sometime.
有时间给我发信息。
而另一方面,对于邮件,一般不怎么会用text Email,传统的sent e-mail会是比较正确的说法。
sent Email 发邮件
How to send an email ?
怎么样去发一封邮件?
二.其他一些常用的网络词汇
1.转发
不管是邮件又或者是微博,我们经常会转发一些有价值或者有需要的信息,那么转发怎么说呢?
(1)转发给你的好朋友,我们用share
当你转发信息给好友时,更多像是在分享你的信息,因此这里大多会用share
You can share video with your friend.
你能转发视频给你的朋友。
(2)转发邮件 forward
当我们工作要转发邮件互通信息时,一般会用比较正规的forward来表示“转发”的意思
You can forward all of your new email to another email address.
你能够转发所有新收到的邮件给其他邮箱地址。
2.热搜话题
对于热搜,很多人会下意识翻译成“热点”:hot point。然而,我们平时所说的热点更多是指这个“话题”很热,而不是真的指“点”
trending topic 热搜话题
He has been one of the trending topics for the past week.
过去一周他在热搜榜居高不下。
感谢大家的阅读,我是罐头菌
快乐英语学习,放眼全球资讯,欢迎关注英语罐头
*请认真填写需求信息,我们会在24小时内与您取得联系。