javascript - 我可以在浏览器中使用 nodemailer 吗?

标签 javascript node.js reactjs webpack nodemailer

我创建了一个简单的 react redux 应用程序(使用 webpack),带有一个联系表单,当用户点击提交时我想生成并发送电子邮件。为此,我一直在尝试像这样使用 nodemailer:

import nodemailer from 'nodemailer';

//...

sendEmail () {

    const emailInfo = {
        to: 'foo@bar.com',
        from: 'bar@foo.com',
        subject: 'Message from bar',
        text: 'Hello world!'
    };

    const connectionInfo = {
         host: '...',
         port: 123,
         secure: true,
         auth: {
              user: 'foo@bar.com',
              pass: 'foo123'
         }
     };

     const transporter = nodemailer.createTransport('SMTP', connectionInfo);
     transporter.sendMail(emailInfo, function(error){
          if(error){ console.log('error'); }
          console.log('sent');
     });
}

...但是我遇到了很多与 nodemailer 导入有关的错误。

ERROR in ./~/nodemailer/package.json
Module parse failed: /Users/myUser/website/node_modules/nodemailer/package.json Unexpected token (2:8)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (2:8)

ERROR in ./~/nodemailer/lib/http-proxy.js
Module not found: Error: Cannot resolve module 'net' in /Users/myUser/website/node_modules/nodemailer/lib
 @ ./~/nodemailer/lib/http-proxy.js 7:10-24

ERROR in ./~/nodemailer/lib/http-proxy.js
Module not found: Error: Cannot resolve module 'tls' in /Users/myUser/website/node_modules/nodemailer/lib
 @ ./~/nodemailer/lib/http-proxy.js 8:10-24

ERROR in ./~/nodemailer/~/nodemailer-direct-transport/lib/direct-transport.js
Module not found: Error: Cannot resolve module 'dns' in /Users/myUser/website/node_modules/nodemailer/node_modules/nodemailer-direct-transport/lib
 @ ./~/nodemailer/~/nodemailer-direct-transport/lib/direct-transport.js 5:10-24

ERROR in ./~/nodemailer/~/nodemailer-direct-transport/lib/direct-transport.js
Module not found: Error: Cannot resolve module 'net' in /Users/myUser/website/node_modules/nodemailer/node_modules/nodemailer-direct-transport/lib
 @ ./~/nodemailer/~/nodemailer-direct-transport/lib/direct-transport.js 6:10-24

ERROR in ./~/nodemailer/~/nodemailer-direct-transport/package.json
Module parse failed: /Users/myUser/website/node_modules/nodemailer/node_modules/nodemailer-direct-transport/package.json Unexpected token (2:8)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (2:8)

我是不是漏掉了什么,或者 nodemailer 根本就不是为在浏览器中使用而设计的?如果是这种情况,我应该考虑其他选择吗?

最佳答案

node.js 适用于服务器端 JavaScript,它允许您做许多在浏览器中无法完成的事情。

发送电子邮件不是浏览器提供的沙箱中可以完成的事情,超出了mailto links的有限能力。它基本上可以弹出用户的电子邮件客户端,其中填充了一些链接。

您需要实现服务器端代码来执行此操作,由客户端的某些操作触发,可能是 node.js 和 nodemailer。

关于javascript - 我可以在浏览器中使用 nodemailer 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37630543/

相关文章:

javascript - 循环遍历数组并将文本应用于 n :th element

node.js - 作为系统进程启动新进程

javascript - 使用ReactJS和Material-UI的Fake Select占位符

javascript - 如何使用 onClick 获取数组?

javascript - Google SteppedArea 图表 - 自定义工具提示两个动画数据集

javascript - 如何将变量绑定(bind)到 jquery ajax 请求?

javascript - 打印大量字符串但将其限制为 40 个字符

javascript - Node + MongoDB 问题 EADDRINUSE

mysql - 使用 NodeJS 从 MySQL 数据库中检索数据并将其传递给 AngularJS 页面

javascript - 如何在 DraftJS 的 Anchor 标签中显示子组件?