我可以在浏览器中使用 nodemailer 吗?
Can I use nodemailer in browser?
我创建了一个简单的 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。
我创建了一个简单的 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。