首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让客户端使用前端JS和nodeJS发送电子邮件

让客户端使用前端JS和nodeJS发送电子邮件
EN

Stack Overflow用户
提问于 2020-12-18 19:14:36
回答 1查看 175关注 0票数 0

我最近开始开发一个简单的应用程序来发送电子邮件。我想在网站上用这个做朋友的生意。然而,其目标是让网站的用户将电子邮件发送到指定的地址,以便企业主能够接收客户进行工作。

考虑到我使用的当前依赖关系,我不太确定这是否是可能的(它只是nodemailer)。我目前能够通过应用程序接收测试邮件,但电子邮件只来自我自己的电子邮件帐户(在.env文件中保存的凭据)。不过,我可以看到我试图在终端发送的数据。是否有什么东西是我错过的,或另一个服务是必要的,以完成我想要做的事情?任何关于如何进行的想法,我们都很感激,谢谢!

代码语言:javascript
复制
require("dotenv").config();
const nodemailer = require("nodemailer");
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const path = require("path");

const PORT = 8080;

//data parsing
app.use(express.urlencoded({extended: false}));
app.use(bodyParser.json());

let transporter = nodemailer.createTransport({
    service: "gmail",
    auth:
    {
        user: process.env.EMAIL,
        pass: process.env.PASSWORD
    }
});

app.post("/email", (req, res) =>{
    //data to handle
    let mailOptions = {
        from: req.body.senderEmail,
        to: "test@gmail.com",
        subject: req.body.subject,
        text: req.body.text
    };
    //sending email
    transporter.sendMail(mailOptions, (err, data) =>{
        if(err){
            console.log("Error occured", err);
        }
        else
        {
            console.log("Data: ", req.body);
        }
    });
});
//display index.html
app.get("/", (req, res) =>{
    res.sendFile(path.join(__dirname, "views", "index.html"));
});
//Start server
app.listen(PORT, process.env.ID, () =>{
    console.log("Server is starting on PORT ", PORT);
});

带有少量jquery的文件

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>App</h1>
    <form action="/email" method="POST">
        <input type="text" id="subject" name="subject" placeholder="Subject" required><br>
        <input type="email" id="email" name="senderEmail" placeholder="Email" required><br>
        <textarea name="text" id="text" cols="30" rows="10" required></textarea><br>
        <input type="submit" value="Submit">
    </form>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
        $("form").on("submit", (e) =>
        {
            //stops default browser behaviour
            e.preventDefault();
            const email = $("#email").val().trim();
            const subject = $("#subject").val().trim();
            const text = $("#text").val().trim();

            const data = {email, subject, text};

            $.post("/email", data, () =>{ console.log("Server received our data");});
        });
    </script>
</body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2020-12-18 20:02:06

网站的用户可以通过以下两种方式发送电子邮件:

  1. 通过直接电子邮件发送。您可以在HTML中的电子邮件地址之前拥有一个mailto:
  2. 像您所做的那样发送一个表单请求,并且有一个代理电子邮件,就像您的env中的设置一样,然后将电子邮件发送给企业主。

我非常怀疑任何电子邮件服务将允许直接电子邮件从客户端id到业务id,除非您有您自己的SMTP服务器设置与最少的安全策略。这将是一个巨大的安全威胁,允许服务器发送电子邮件冒充他人!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65362687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档