在域内使用javascript发送电子邮件

问题描述 投票:0回答:1

在域内用javascript发送E-Mail的最安全、最优雅的方式是什么?我们有自己的邮件服务器,我想避免使用第三方API作为smtpjs或emailjs。这是可能的吗?

javascript html-email
1个回答
2
投票

你不能单独通过JavaScript发送邮件。你可以通过以下方式在用户设备上打开邮件客户端。window.open('mailto:{{to_address}}')或者通过调用服务器上的API(使用 nodejsmandrill 就可以了)。) 关于如何做到这一点的例子,有一个非常详尽的代码示例。此处.


1
投票

在nodejs中,你可以使用 颔联 来连接你的邮件服务器并发送邮件。

下面是一个示例代码(来自于 Nodemailer的文件):

const nodemailer = require("nodemailer");

// async..await is not allowed in global scope, must use a wrapper
async function main() {
  // Generate test SMTP service account from ethereal.email
  // Only needed if you don't have a real mail account for testing
  let testAccount = await nodemailer.createTestAccount();

  // create reusable transporter object using the default SMTP transport
  let transporter = nodemailer.createTransport({
    host: "smtp.ethereal.email",
    port: 587,
    secure: false, // true for 465, false for other ports
    auth: {
      user: testAccount.user, // generated ethereal user
      pass: testAccount.pass, // generated ethereal password
    },
  });

  // send mail with defined transport object
  let info = await transporter.sendMail({
    from: '"Fred Foo 👻" <[email protected]>', // sender address
    to: "[email protected], [email protected]", // list of receivers
    subject: "Hello ✔", // Subject line
    text: "Hello world?", // plain text body
    html: "<b>Hello world?</b>", // html body
  });

  console.log("Message sent: %s", info.messageId);
  // Message sent: <[email protected]>

  // Preview only available when sending through an Ethereal account
  console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
  // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}

main().catch(console.error);
© www.soinside.com 2019 - 2024. All rights reserved.