当前位置: 首页 > 知识库问答 >
问题:

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

管炳
2023-03-14

我最近开始开发一个简单的应用程序来发送电子邮件。我想在一个朋友的业务网站上使用这个。目标,然而,是有一个网站的用户发送一个电子邮件到一个指定的地址,以便企业所有者可以接收客户的工作。

考虑到当前我使用的依赖关系(只是nodemailer),我不太确定这是否可能。我目前可以通过应用程序接收测试电子邮件,但这些电子邮件仅来自我自己的电子邮件帐户(凭据保存在.env文件中)。不过,我可以看到我试图在终端发送的数据。是不是我缺少了什么,或者是为了做我想做的事情而需要的其他服务?任何关于如何继续的想法都很感激,谢谢!

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的HTML文件

<!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>

共有1个答案

章睿
2023-03-14

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

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

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

 类似资料:
  • 我成功通过passportjs验证,但NodeEmailer只发送一封电子邮件,这是控制台中使用的一封电子邮件。云谷歌。 当我尝试其他gmail帐户时,我得到这个错误: 错误:无效登录:535-5.7.8不接受用户名和密码。在535 5.7.8了解更多信息https://support.google.com/mail/?p=BadCredentialsu6sm13346885wrp。0-SMTPC

  • 我正在尝试使用gmail从Delphi发送电子邮件。我有Indy10.5.9.0和Delphi XE3。 我从中获得了示例代码:http://www.andrecelestino.com/delphi-xe-envio-de-e-mail-com-componentes-indy/ 我还尝试了其他示例代码,但结果相同。 我有libeay32.dll和ssleay32.dll从这里:http://w

  • 我有一个Outlook.com的电子邮件帐户。我希望我的Java应用程序能够使用JavaMail从该电子邮件帐户发送电子邮件。为此,我通过OAuth授予了我的应用程序访问权限。 我已经能够使用msgshow中提供的精彩示例应用程序通过IMAP成功连接.java。但是,我正在尝试通过SMTP通过我的 Outlook.com 电子邮件帐户发送电子邮件,但我没有任何运气。我尝试过同时使用msgsend.

  • 我需要通过我的应用程序发送一封电子邮件,比如使用带有OAuth的javamail API,但我需要如何使用我在下面添加的代码。 我的代码:

  • 问题内容: 如何使用curl命令行程序从gmail帐户发送电子邮件? 我尝试了以下方法: 使用file.txt作为电子邮件的内容,但是,当我运行此命令时,出现以下错误: 是否可以从仍由curl托管的个人服务器托管帐户发送电子邮件?这样会使身份验证过程更容易吗? 问题答案: curl –url 'smtps://smtp.gmail.com:465’ –ssl-reqd \ –mail-from '

  • 问题内容: 我正在尝试使用Java发送电子邮件: 我收到错误消息: 此代码可以发送电子邮件吗? 问题答案: 户名+密码不再是推荐的解决方案。这是因为 我尝试了此操作,Gmail向该代码中用作用户名的电子邮件发送了一封电子邮件,其中说我们最近阻止了你的Google帐户的登录尝试,并将我定向到此支持页面:support.google.com/accounts/answer/6010255因此它看起来很