我不知道我缺少什么,我使用Nodemailer示例:
var nodemailer = require("nodemailer");
// create reusable transport method (opens pool of SMTP connections)
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail",
auth: {
user: "gmail.user@gmail.com",
pass: "userpass"
}
});
// setup e-mail data with unicode symbols
var mailOptions = {
from: "Fred Foo ? <foo@blurdybloop.com>", // sender address
to: "bar@blurdybloop.com, baz@blurdybloop.com", // list of receivers
subject: "Hello ?", // Subject line
text: "Hello world ?", // plaintext body
html: "<b>Hello world ?</b>" // html body
}
// send mail with …
Run Code Online (Sandbox Code Playgroud) 我已经阅读了一些很棒的在线资源,比如http://www.jwz.org/doc/threading.html,似乎任何电子邮件都是通过Message-ID
标题发送的,然后对它的任何回复包括In-Reply-To
命名该ID以及Refences
哪些可以命名父级消息ID列表,电子邮件客户端在查看线程视图中的电子邮件列表时使用此信息构造线程.
我的问题是:是否可以将一系列电子邮件发送给带有伪标题的收件人,以使它们出现在一个没有收件人回复的线程中?如果是这样,为什么下面的尝试不起作用?
我们有一个系统可以发送几封与我们系统中特定实体相关的电子邮件.假设我们多次向每个小部件销售小部件和电子邮件用户.我们希望特定小部件ID的所有电子邮件在我们用户的电子邮件客户端中显示为电子邮件主题.
这里的旅行似乎通常是发送电子邮件,然后回复.我们的系统只是想发送几封电子邮件,并伪造In-Reply-To和References标题,以诱骗电子邮件客户端在树中显示它们.
我正在使用的Message-ID格式是:'foobar'+ widgetId + sequence
第一封邮箱:
<foobar-1234-0@server.com>
第二封邮箱:
<foobar-1234-1@server.com>
<foobar-1234-0@server.com>
<foobar-1234-0@server.com>
第三封邮箱:
<foobar-1234-2@server.com>
<foobar-1234-1@server.com>
<foobar-1234-0@server.com> <foobar-1234-1@server.com>
(顺便说一句,包括@server.com
消息ID 的部分似乎是至关重要的.没有它,使用例如foobar-123-0
,我们的SMTP服务器只是忽略它并使用它自己生成的消息ID)
电子邮件在Thunderbird中正确显示,作为一棵树,但在Gmail中没有,它们只是在收件箱中一个接一个地列出,而其他会话在它们旁边正确地进行了线程化.我不确定我是否弄错了,Thunderbird在糟糕的数据方面做得最好,或者如果Gmail需要一些我不提供的额外非标准糖.
这是我的node.js测试脚本:
/*jshint dojo:true */
/*global console:true */
'use strict';
var Q = require('q'),
nconf = require('nconf'),
optimist = require('optimist'),
nodemailer = require('nodemailer');
console.log('Started to run.');
var argv = optimist.argv,
config = nconf.argv().env().file('conf.json'),
smtpConfig …
Run Code Online (Sandbox Code Playgroud) 我正在使用 nodemailer 发送邮件。我需要知道邮件是否已发送,然后更新我的数据库,但邮件是在传输器中发送的(我认为它不会返回承诺),这需要时间,因此即使发送了邮件,返回也始终是错误的.
这是我从其他路由调用的邮件发送文件
//mail_file.js
//imports
sendmail= async(req)=>{
let transporter = nodemailer.createTransport({
//settings
});
var mailOptions = {
//mailoptions
};
let resp=false;
await transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log("error is "+error);
resp =false;
}
else {
console.log('Email sent: ' + info.response);
resp=true;
}
});
return resp
}
module.exports = sendmail;
Run Code Online (Sandbox Code Playgroud)
这是我称之为的路线:
//imports including the mail_file.js
//somepath.js
router.post('/somepath',(req,res,next)=>{
sendresetmail=async()=>
{
parameters={
//some email parameters
}
return await sendmail(params);
}
sendmail()
.then(response=>{
//response is always false even when the mail is …
Run Code Online (Sandbox Code Playgroud) 我正在使用nodemailer npm 包和gmail 作为nodejs 中的服务。对于某些电子邮件,我收到以下错误,
Data command failed: 421 4.3.0 Temporary System Problem. Try again later (10). c124sm10820896qke.13 - gsmtp
at SMTPConnection._formatError (/home/ubuntu/node_12-24/Roo-Node/node_modules/nodemailer/lib/smtp-connection/index.js:606:19)
at SMTPConnection._actionDATA (/home/ubuntu/node_12-24/Roo-Node/node_modules/nodemailer/lib/smtp-connection/index.js:1449:34)
at SMTPConnection._responseActions.push.str (/home/ubuntu/node_12-24/Roo-Node/node_modules/nodemailer/lib/smtp-connection/index.js:1421:26)
at SMTPConnection._processResponse (/home/ubuntu/node_12-24/Roo-Node/node_modules/nodemailer/lib/smtp-connection/index.js:762:20)
at SMTPConnection._onData (/home/ubuntu/node_12-24/Roo-Node/node_modules/nodemailer/lib/smtp-connection/index.js:558:14)
at TLSSocket._socket.on.chunk (/home/ubuntu/node_12-24/Roo-Node/node_modules/nodemailer/lib/smtp-connection/index.js:510:47)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at TLSSocket.Readable.push (_stream_readable.js:208:10)
at TLSWrap.onread (net.js:597:20)
Run Code Online (Sandbox Code Playgroud)
我看到了很多关于此的事情,但不是一个完美的解决方案
我通过godaddy电子邮件帐户发送电子邮件.为此,我使用节点js发送电子邮件,但它给出以下错误:
{ [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }
Run Code Online (Sandbox Code Playgroud)
源代码:
var transporter = nodemailer.createTransport({
host: 'ssl://smtpout.secureserver.net',
port: 465,
auth: {
user: 'Email address',
pass: 'password'
}
});
var mailOption = {
from: from,
to: to ,
subject: subject,
text: body
};
transporter.sendMail(mailOption,function(error, response){
if(error){
console.log(error);
}
else{
var successRes = { "status": "success" }
res.send(successRes,200);
}
});
Run Code Online (Sandbox Code Playgroud) 发送电子邮件附件似乎尚未在Meteor的官方电子邮件包中实现.我已经尝试了nodemailer建议(见此处),但收到错误"无法读取未定义的属性'createTransport'".
我正在尝试在数据URI中创建CSV文件,然后发送该附件.以下是使用官方电子邮件包时的代码片段:
csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv);
var options = {
from: "xxx@gmail.com",
to: "xxx@gmail.com",
subject: "xxx",
html: html,
attachment: {
fileName: fileName,
path: csvData
}
};
Meteor.call('sendEmail', options);
Run Code Online (Sandbox Code Playgroud)
编辑:
这基本上是我的nodemailer代码的样子:
var nodemailer = Nodemailer;
var transporter = nodemailer.createTransport();
transporter.sendMail({
from: 'sender@address',
to: 'receiver@address',
subject: 'hello',
text: 'hello world!',
attachments: [
{
path: csvData
}
]
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Office365 SMTP使用Nodemailer发送电子邮件(在MEANjs脚手架中),但是我收到以下错误:
[Error: 140735277183760:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:795:]
Run Code Online (Sandbox Code Playgroud)
我正在使用以下Nodemailer选项:
{
host: 'smtp.office365.com',
port: '587',
auth: { user: 'xxxx', pass: 'xxxx' },
secure: 'false',
tls: { ciphers: 'SSLv3' }
}
Run Code Online (Sandbox Code Playgroud)
删除tls字段没有任何区别.我错过了什么?
我想我在这里错过了很简单的东西.我有一个简单的单页node.js应用程序,它使用nodemailer将任何表单数据通过电子邮件发送到我的收件箱.
我的index.js文件:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var nodemailer = require('nodemailer');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'myemail@gmail.com',
pass: 'mypassword'
}
});
app.use(express.static('public')); //public folder with my html files
app.get('', function (req, res) {
res.sendFile(__dirname + "/");
})
app.post('/', function (req, res) {
response = {
name: req.body.name,
email: req.body.email,
message: req.body.message
};
var mailClient = {
from: 'myemail@gmail.com',
to: 'myemail@gmail.com',
subject: `Message from ${response.name}`, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在联系表单中使用nodemailer来接收反馈并将其直接发送到电子邮件.这是下面的表格.
<form method="post" action="/contact">
<label for="name">Name:</label>
<input type="text" name="name" placeholder="Enter Your Name" required><br>
<label for="email">Email:</label>
<input type="email" name="email" placeholder="Enter Your Email" required><br>
<label for="feedback">Feedback:</label>
<textarea name="feedback" placeholder="Enter Feedback Here"></textarea><br>
<input type="submit" name="sumbit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)
这就是服务器端的请求
app.post('/contact',(req,res)=>{
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'user@gmail.com',
password: 'password'
}
});
var mailOptions = {
from: req.body.name + '<' + req.body.email + '>',
to: 'bantspl@gmail.com',
subject: 'Plbants Feedback',
text: req.body.feedback
};
transporter.sendMail(mailOptions,(err,res)=>{
if(err){
console.log(err);
}
else {
}
});
Run Code Online (Sandbox Code Playgroud)
我收到了错误Missing …
我已经在主机上设置了电子邮件服务器。它基本上是一个侦听端口25的SMTP服务器。
const recvServer = new SMTPServer({
requireTLS: true,
authOptional: true,
logger: true,
onConnect(session, callback) {
return callback();
},
onMailFrom(address, session, callback) {
console.log('from', address, session);
return callback();
},
onData(stream, session, callback) {
console.log('new msg');
let message = '';
stream.on('data', chunk => {
message += chunk;
});
stream.on('end', () => {
callback(null, 'Message queued');
simpleParser(message)
.then(parsed => {
console.log(parsed);
// here I wish to forward the message to outside gmail addresses
})
.catch(err => {
console.log(ee)
});
});
}
});
recvServer.listen(25); …
Run Code Online (Sandbox Code Playgroud) nodemailer ×10
node.js ×8
email ×4
javascript ×4
gmail ×2
smtp ×2
async-await ×1
firebase ×1
meanjs ×1
meteor ×1
office365 ×1
promise ×1
scripting ×1
server ×1