我最近开始开发一个简单的应用程序来发送电子邮件。我想在一个朋友的业务网站上使用这个。目标,然而,是有一个网站的用户发送一个电子邮件到一个指定的地址,以便企业所有者可以接收客户的工作。
考虑到当前我使用的依赖关系(只是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>
网站的用户可以通过两种方式发送电子邮件:
mailto:
。我高度怀疑任何电子邮件服务将允许直接发送电子邮件从客户端id到业务id,除非您有自己的SMTP服务器设置,安全策略最低。这将是一个巨大的安全威胁,通过允许服务器发送电子邮件假冒他人!