我尝试使用nodemailer使用NodeJS实现联系表单,但它只适用于本地,它不能在远程服务器上运行...
我的错误信息:
[website.fr-11 (out) 2013-11-09T15:40:26] { [AuthError: Invalid login - 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbvlX
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 V-dFQLgb7aRCYApxlOBuha5ESrQEbRXK0iVtOgBoYeARpm3cLZuUS_86kK7yPis7in3dGC
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 N1sqhr3D2IYxHAN3m7QLJGukwPSZVGyhz4nHUXv_ldo9QfqRydPhSvFp9lnev3YQryM5TX
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 XL1LZuJL7zCT5dywMVQyWqqg9_TCwbLonJnpezfBLvZwUyersknTP7L-VAAL6rhddMmp_r
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 A_5pRpA> Please log in via your web browser and then try again.
[website.fr-11 (out) 2013-11-09T15:40:26] 534-5.7.14 Learn more at https://support.google.com/mail/bin/answer.py?answer=787
[website.fr-11 (out) 2013-11-09T15:40:26] 534 5.7.14 54 fr4sm15630311wib.0 - gsmtp]
[website.fr-11 (out) 2013-11-09T15:40:26] name: 'AuthError',
[website.fr-11 (out) 2013-11-09T15:40:26] data: '534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbvlX\r\n534-5.7.14 V-dFQLgb7aRCYApxlOBuha5ESrQEbRXK0iVtOgBoYeARpm3cLZuUS_86kK7yPis7in3dGC\r\n534-5.7.14 N1sqhr3D2IYxHAN3m7QLJGukwPSZVGyhz4nHUXv_ldo9QfqRydPhSvFp9lnev3YQryM5TX\r\n534-5.7.14 XL1LZuJL7zCT5dywMVQyWqqg9_TCwbLonJnpezfBLvZwUyersknTP7L-VAAL6rhddMmp_r\r\n534-5.7.14 A_5pRpA> Please log in via your …
Run Code Online (Sandbox Code Playgroud) 我在尝试在我的应用程序中执行POST请求时遇到问题并且我搜索了很多,但是我找不到解决方案.
所以,我有一个nodeJS应用程序和一个网站,我正在尝试使用此站点的表单进行POST请求,但我总是这样做:
在控制台中我看到:
Uncaught TypeError: Cannot read property 'value' of null
Post "http://name.github.io/APP-example/file.html " not allowed
Run Code Online (Sandbox Code Playgroud)
在这行代码中:
file.html:
<form id="add_Emails" method ="POST" action="">
<textarea rows="5" cols="50" name="email">Put the emails here...
</textarea>
<p>
<INPUT type="submit" onclick="sendInvitation()" name='sendInvitationButton' value ='Send Invitation'/>
</p>
</form>
<script src="scripts/file.js"></script>
Run Code Online (Sandbox Code Playgroud)
file.js:
function sendInvitation(){
var teammateEmail= document.getElementById("email").value;
Run Code Online (Sandbox Code Playgroud)
我阅读了很多帖子和跨域文档,但它没有用.研究来源1:http://enable-cors.org/server.html 研究来源2:http://www.w3.org/TR/2013/CR-cors-20130129/#http-access-control-max-年龄
我现在在做什么:
我正在尝试从我的服务器的不同域POST:
POST REQUEST: http://name.github.io/APP-example/file.html,github repository
POST LISTENER:" http://xxx.xxx.x.xx:9000/email,server localhost(x->我的ip地址)
所以,我在其他文件中遇到了同样的问题,但是我修复了它将这段代码放在每条路径的开头:
var express = require('express');
var sha1 = require('sha1');
var router …
Run Code Online (Sandbox Code Playgroud) 我已经将node.js应用程序部署到node.js,但无法从我的应用程序中看到完整的console.log语句.我在用:
heroku logs
Run Code Online (Sandbox Code Playgroud)
显示了一些日志记录,但看起来它不是完整的日志.是否有node.js包来从已部署的应用程序发送电子邮件?电子邮件在我的本地机器上工作正常.
电邮代码:
console.log('try to send email hold on');
var nodemailer = require("nodemailer");
var smtpTransport = nodemailer.createTransport({
service: "Gmail",
auth: {
user: "myemail@gmail.com",
pass: "mypw"
}
});
smtpTransport.sendMail({
from: "Dikkebil", // sender address
to: "myemail@gmail.com", // comma separated list of receivers
subject: "Error body", // Subject line
text: 'Error body: ' +error.body+ '\n'+ 'error type:' + error.type +'\n' +'error statuscode:' +error.statusCode +'\n' + 'error args:' + error.arguments[0]
}, function(error, response){
if(error){
console.log(error);
}else{
console.log("Message sent: " + response.message); …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在节点应用程序中使用一个简单的联系表单nodemailer
.我希望所有的msg都是从我为此目的制作的Gmail帐户发送到我的个人邮件.
在客户端,我所做的就是获取客户的名称/邮件/消息并将其发送到服务器.它在本地工作正常但在部署时无法工作(在heroku btw上).
快速搜索后,看来我必须生成一个ClientId
与ClientSecret
来自谷歌开发者控制台-我做到了-但是,当涉及到产生"刷新令牌" iI'm完全丧失.
var smtpTransport = nodemailer.createTransport("SMTP",{
service:"Gmail",
auth:{
XOAuth2: {
user:"myaccount@gmail.com",
clientId:"",
clientSecret:"",
refreshToken:""
}
}
});
Run Code Online (Sandbox Code Playgroud)
我很困惑:什么是刷新令牌,我该如何获得?
我已经在本地(http://localhost:8080
)设置了一个基本的NodeJS服务器(使用nodemailer模块),这样我就可以测试服务器是否可以实际发送电子邮件了.
如果我理解正确的SMTP选项(请纠正我,如果我错了),我可以尝试从我的服务器发送电子邮件给某人的电子邮件帐户直接,或者我可以发送电子邮件,仍然使用Node.js的,但通过实际的电子邮件帐户(在这种情况下是我的个人Gmail帐户),即使用SMTP.此选项要求我通过NodeJS远程登录该帐户.
因此,在下面的服务器中,我实际上是尝试使用NodeJ从我的个人电子邮件帐户向我的个人电子邮件帐户发送电子邮件.
这是我的简单服务器:
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport("SMTP", {
service: 'Gmail',
auth: {
user: '*my personal Gmail address*',
pass: '*my personal Gmail password*'
}
});
var http = require('http');
var httpServer = http.createServer(function (request, response)
{
transporter.sendMail({
from: '*my personal Gmail address*',
to: '*my personal Gmail address*',
subject: 'hello world!',
text: 'hello world!'
});
}).listen(8080);
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用.我收到了谷歌的一封电子邮件说:
Google帐户:登录尝试已被阻止如果是您的话您可以切换到Google制作的应用程序(如Gmail)来访问您的帐户(推荐)或更改您的设置,网址为https://www.google.com/settings/security/ lesssecureapps,以便您的帐户不再受现代安全标准的保护.
我在nodemailer GitHub页面上找不到上述问题的解决方案.有没有人有解决方案/建议?
谢谢!:-)
我正在尝试向多个收件人发送电子邮件.为此,我创建了一个收件人数组,但是使用我的代码,我只能将邮件发送到阵列的最后一次电子邮件ID三次.我的代码出了什么问题?
var nodemailer = require("nodemailer");
var smtpTransport = nodemailer.createTransport(
"SMTP",{
host: '',
// secureConnection: true, // use SSL
port: 25
});
var maillist = [
'****.sharma3@****.com',
'****.bussa@****.com',
'****.gawri@****.com',
];
var msg = {
from: "******", // sender address
subject: "Hello ?", // Subject line
text: "Hello This is an auto generated Email for testing from node please ignore it ?", // plaintext body
cc: "*******"
// html: "<b>Hello world ?</b>" // html body
}
maillist.forEach(function (to, i , array) { …
Run Code Online (Sandbox Code Playgroud) Google 报告称,5 月 30 日之后第三方应用程序将无法使用用户名和密码登录。这是否会影响 NodeMailer。我们通常在 gsuit gmail 设置中允许不太安全的应用程序,然后再在 Nodemailer 中使用它。
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'youremail@address.com',
pass: 'yourpassword'
}
});
Run Code Online (Sandbox Code Playgroud) 我想使用html模板向nodemailer发送电子邮件.在那个模板中,我需要动态注入一些变量,我真的不能这样做.我的代码:
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
smtpTransport = nodemailer.createTransport(smtpTransport({
host: mailConfig.host,
secure: mailConfig.secure,
port: mailConfig.port,
auth: {
user: mailConfig.auth.user,
pass: mailConfig.auth.pass
}
}));
var mailOptions = {
from: 'my@email.com',
to : 'some@email.com',
subject : 'test subject',
html : { path: 'app/public/pages/emailWithPDF.html' }
};
smtpTransport.sendMail(mailOptions, function (error, response) {
if (error) {
console.log(error);
callback(error);
}
});
Run Code Online (Sandbox Code Playgroud)
假设我想在emailWithPDF.html中这样:
Hello {{username}}!
Run Code Online (Sandbox Code Playgroud)
我找到了一些例子,其中有如下情况:
...
html: '<p>Hello {{username}}</p>'
...
Run Code Online (Sandbox Code Playgroud)
但我希望它在单独的html文件中.可能吗?
我有一个非常简单的应用程序,只是开始弄脏nodemailer.当我运行应用程序时,我在模块本身中遇到错误.
app.js:
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport('smtps://me%40gmail.com:supersecretpw@smtp.gmail.com');
var mailOptions = {
from: '"Me" <me@gmail.com>', // sender address
to: 'him@him.com, her@her.com', // list of receivers
subject: 'Hello dude', // Subject line
text: 'Test email with text', // plaintext body
html: "Testing 1..2..7" // html body
};
// send mail with defined transport object
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
return console.log(error);
}
console.log('Message sent: ' + info.response);
});
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
C:\Users\Andrew\desktop\messy4\node_modules\nodemailer\lib\mailer\index.js:31
compile: [(...args) => this._convertDataImages(...args)],
^^^
SyntaxError: …
Run Code Online (Sandbox Code Playgroud) 我试图将我创建的表单中的数据发送到我的Gmail帐户,当点击sumbit按钮时我总是得到相同的错误.我发现了很多关于nodemailer的问题,但它们似乎都不像我遇到的那样.
当然我已经说过我的clientId但是刚刚删除了这篇文章.
TypeError: Cannot create property 'mailer' on string 'SMTP'
at Mail (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\nodemailer\lib\mailer\index.js:45:33)
at Object.module.exports.createTransport (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\nodemailer\lib\nodemailer.js:46:14)
at C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\src\app.js:39:26
at Layer.handle [as handle_request] (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\route.js:131:13)
at Route.dispatch (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:277:22
at Function.process_params (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:330:12)
at next (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:271:10)
at serveStatic (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\node_modules\serve-static\index.js:75:16)
at Layer.handle [as handle_request] (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:312:13)
at C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:280:7
at Function.process_params (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:330:12)
at next (C:\Users\snowr\Documents\dev\zorgkaartnl\zorgkaartnl\node_modules\express\lib\router\index.js:271:10)
Run Code Online (Sandbox Code Playgroud)
这是我的app.js:
// require modules
const express = require('express');
const app = express();
const pug = require('pug');
const fs = …
Run Code Online (Sandbox Code Playgroud) node.js ×10
nodemailer ×10
javascript ×6
email ×3
express ×2
gmail ×2
cross-domain ×1
heroku ×1
html ×1
nginx ×1
npm ×1
properties ×1
smtp ×1
syntax-error ×1
token ×1