我是node.js编程的新手.我正在使用nodemailer模块发送电子邮件.
const nodemailer = require ('nodemailer'),
credentials=require('./credentials.js');
var mailTransport=nodemailer.createTransport({
service:'Gmail',
auth: {
user : credentials.gmail.user,
pass : credentials.gmail.password,
}
});
function sendMail(mail_id){
mailTransport.sendMail({
from: ' "my name" <myname@gmail.com>',
to : mail_id, //user@gmail.com
subject : 'Hello',
text: "Hello How do u do ?",
},function(err,info){
if(err){
console.log('Unable to send the mail :'+err.message);
}
else{
console.log('Message response : '+info.response);
}
});
}
exports.sendMail=sendMail;
Run Code Online (Sandbox Code Playgroud)
这是我向不同用户发送电子邮件的程序.但我得到无效登录.我不知道为什么会这样.我是node.js和服务器端脚本的新手.
我正在使用我的gmail用户名和密码来获取凭据.
请帮我.
我正在尝试使用express.js构建一个Web应用程序.在我的应用程序中,我使用nodemailer发送邮件.如果我只是用它来发送基本邮件就可以了; 但是,当我尝试使用nodemailer发送呈现的ejs文件时,收件人只会收到一封空邮件.所以在这里我的代码的细节:
var transporter = nodemailer.createTransport({
host: 'smtp.zoho.com',
port: 465,
secure: true, // use SSL
auth: {
user: 'testmail@zoho.com',
pass: '123456'
}
});
fs.readFile('/test.ejs', 'utf8', function (err, data) {
if (err) {
return console.log(err);
}
var mainOptions = {
from: '"Tester" testmail@zoho.com',
to: email,
subject: 'Hello, world'
html: ejs.render(data, {name: 'Stranger'});
};
console.log(mainOptions.html);
});
transporter.sendMail(mainOptions, function (err, info) {
if (err) {
console.log(err);
} else {
console.log('Message sent: ' + info.response);
}
});
Run Code Online (Sandbox Code Playgroud)
这里的test.ejs(也就是结果console.log(mainOptions.html)很好,因为它正确地打印出渲染的ejs文件的字符串(<%= name%>替换为'Stranger')
<style type="text/css">
.header {
background: …Run Code Online (Sandbox Code Playgroud) 我已按照此示例将我的Angular应用程序中的数据发布到Node.js,以将webform发布到Sendgrid.这在一些变化后工作正常,并且非常感谢快速入门.将表单数据发布到Sendgrid现在正在运行!
对于这个项目我正在使用Angular Fullstack来在我的Angular应用程序中使用Node功能.
但是,此示例只包含输入字段和textarea.我希望能够添加文件(PDF,Docx等),以便人们可以通过Sendgrid向收件人发送附件.我搜索了一个解决方案,但找不到一个有效的例子.也许是因为我不想实现的目标.
我的观点(客户):
<div ng-controller="ContactFormCtrl" id="contactformbox" style="margin-top:50px;" class="mainbox" >
<div class="panel panel-info" >
<div class="panel-heading">
<div class="panel-title">Solliciteer direct</div>
</div>
<div style="padding-top:30px" class="panel-body" >
<form id="loginform" class="form-horizontal" role="form" name="contactform">
<div style="margin-bottom: 25px" class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input type="email" name="to" ng-model="email.to" ng-required="true" id="email-to" class="form-control" name="username" value="" placeholder="The emailadres from the employer">
</div>
<div style="margin-bottom: 25px" class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
<input type="email" name="from" ng-model="email.from" ng-required="true" id="email-from" class="form-control" name="email-from" placeholder="Your e-mail address">
</div>
<div style="margin-bottom: 25px" …Run Code Online (Sandbox Code Playgroud) 至少有两种使用SendGrid从Nodejs发送电子邮件的方法:
编辑2
所以,如果你现在开始一个项目,我会建议使用sendgrid-nodejs.
原始问题:
编辑以减少基于意见的问题:每种方法的优缺点是什么?我用谷歌搜索了几天,没看到两者的比较.还有另一个StackOverflow 问题要求区分两者(在其他几件事情中)没有得到答复.所以肯定这个问题的答案将有助于其他人.
我的具体用法,如果它有助于集中答案:我想允许iPhone应用程序的用户邀请其他人使用该应用程序.他们会在应用中看到默认的邀请文字,并可以对其进行自定义.自定义文本将发送到我的Nodejs服务器并添加到作业队列.处理队列时,会发送电子邮件.我希望电子邮件看起来不错,所以我想使用HTML电子邮件模板(以及明文交替主体).
在规模方面,这将开始非常小,但如果应用程序是succssful可以迅速扩大.
我试图使用node.js - nodemailer模块发送电子邮件,我的整个代码看起来像
var http=require("http");
var nodemailer=require("nodemailer");
http.createServer(function(req,res){
res.writeHead(200, {"Content-Type": "text/plain"});
var transporter = nodemailer.createTransport('SMTP',{
service: 'gmail',
auth: {
user: 'myemail@gmail.com', // my mail
pass: 'mypassword'
}
});
var mailOptions = {
from: 'Fred Foo ? <foo@blurdybloop.com>', // sender address
to: 'myemail@gmail.com', // the same mail = want to send it to myself
subject: 'Hello ?', // Subject line
text: 'Hello world ?', // plaintext body
html: '<b>Hello world ?</b>' // html body
};
transporter.sendMail(mailOptions, function(error, info){
if(error){
return console.log(error); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Nodejs 包 Nodemailer 发送电子邮件,但我无法将电子邮件从电子邮件更改为我的自定义域电子邮件。任何帮助将不胜感激。这是我用来发送电子邮件的代码。
transporter.sendMail({
from: 'support@domain.com',
to: 'recipient@example.com',
subject: 'Message',
text: 'I hope this message gets through!',
auth: {
user: 'zeshanvirk@gmail.com'
}
});
Run Code Online (Sandbox Code Playgroud) 尝试使用nodemailer从node.js服务器发送电子邮件时,出现以下错误:
ERROR: Send Error: No recipients defined
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
客户端:
var mailData = {
from: "myemail@gmail.com",
to: "someoneelse@something.com",
subject: "test",
text: "test email"
};
$.ajax({
type: 'POST',
data: mailData,
contentType: 'application/json',
url: 'http://localhost:8080/sendEmail',
success: function(mailData) {
console.log('successfully posted to server.');
}
});
Run Code Online (Sandbox Code Playgroud)
服务器端:
var nodemailer = require('nodemailer');
app.post('/sendEmail', function(mailData) {
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'myemail@gmail.com',
pass: 'mypassword'
},
});
transporter.sendMail(mailData, function(error, info) {
if (error) {
console.log(error);
return;
}
console.log('Message sent');
transporter.close();
});
});
Run Code Online (Sandbox Code Playgroud)
这与nodemailer文档一致,并且SMTP握手总是成功完成,因此我知道这不是传输器对象的问题.
我通过nodemailer发送电子邮件,如果我从本地服务器运行,它进入Gmail的收件箱,但如果我从microsoft azure服务器运行脚本,则进入gmail的垃圾邮件.以下是我的脚本
var nodemailer = require('nodemailer');
var EmailTemplates = require('swig-email-templates');
var smtpConfig = {
service: 'smtp.office365.com',
host: 'smtp.office365.com',
port: 587,
starttls: {
enable: true
},
secureConnection: true,
auth: {
user: 'xxxxx@yyyy.com',
pass: 'zzzzzz'
}
}
var templates = new EmailTemplates();
var transporter = nodemailer.createTransport(smtpConfig);
var context = {
username:'Rajesh',
email:'xxxxx@gmail.com',
link : 'www.google.co.in'
};
templates.render('activate_email.html', context, function(err, html,text, subject) {
transporter.sendMail({
from: '"Product Name" <no-reply@xxxxx.com>', // sender address
to: 'xxxx@gmail.com',
subject: 'Account activation',
html: html,
text:text
});
});
Run Code Online (Sandbox Code Playgroud) 我正在遵循nodemailer社区网站中使用的方法, 但我似乎无法让它工作,因为我收到错误
Failed to send email { Error: ENOENT: no such file or directory, open
'./rello-logo-full-svg.svg'
errno: -2,
code: 'ESTREAM',
syscall: 'open',
path: './rello-logo-full-svg.svg',
command: 'API' }
Run Code Online (Sandbox Code Playgroud)
nodemailer选项如下
let mailOptions = {
from: '<from_email>',
to: to_email_address.toString(),
subject: 'Subject',
text: 'Hello world', // plain text body
attachments: [{
filename: 'rello-logo-full-svg.svg',
path: './rello-logo-full-svg.svg',
cid: 'unique@cid'
}],
html: emailBody
};
Run Code Online (Sandbox Code Playgroud)
在emailBody变量中,我有一个带有图像标记行的模板字符串
<img style="width:250px;" cid:unique@cid>
Run Code Online (Sandbox Code Playgroud)
我是否可能需要为express设置静态资产或者什么,图像文件与具有上述代码的文件位于同一文件夹中,任何帮助表示赞赏
我尝试阅读用户输入并将其作为电子邮件发送。但是当我运行这段代码时,它给了我这个错误:分配给常量变量。
任何帮助将不胜感激
var mail= require('./email.js')
var express = require('express')
var router = express.Router()
router.post('/',function(req, res, next){
var address = req.fields.address
var text = req.fields.text
var subject = req.fields.subject
try{
if(text = 0){
throw new Error('Please enter what u want to say')
}
if(subject = 0){
throw new Error('Please enter subject')
}
}catch(e){
req.flash('error', e.message)
return res.redirect('back')
}
var detail = {
to:address,
text:text,
subject:subject,
from: 'test <nbuudilc@126.com>'
}
email(detail).then(function(){
req.flash('success','email sent success')
res.redirect('/posts')
})
})
module.exports = router
Run Code Online (Sandbox Code Playgroud) node.js ×10
nodemailer ×10
javascript ×5
express ×2
gmail ×2
sendgrid ×2
angularjs ×1
ejs ×1
email ×1
server-side ×1
smtp ×1
spam ×1