发送电子邮件附件似乎尚未在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) 我已经完成了使用Nodemailer和AngularJS以及NodeJS发送电子邮件的基本电子邮件设置,我已经在heroku上部署了项目.
当我在heroku上运行应用程序时,电子邮件似乎工作得很好,但是当我将它部署到Heroku时,没有发送电子邮件.
为了验证我使用的是gmail地址,我还有bcc另一个gmail地址.因此from,bcc地址是两个不同的Gmail地址.该from地址与用于身份验证的地址相同.
有人可以帮我解决这个问题吗?
编辑:添加代码
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: 'foobar@gmail.com',
pass: 'foobar'
}
});
router.post('/send',function(req,res){
var mailOptions = {
from: 'Foo Bar ? <foobar@gmail.com>',
to: req.body.email,
subject: "Hello " + req.body.email,
text: 'Hello ' + req.body.email + '?',
html: "<p>Hello " + req.body.email + " </p>",
bcc: "fred@gmail.com"
};
transporter.sendMail(mailOptions, function(error, info){
if(error){
console.log(error);
}else{
console.log('Message sent: ' + info.response);
res.send(200);
}
}); …Run Code Online (Sandbox Code Playgroud) 我正在使用nodemailer模块在我的 Sails.js 项目中发送电子邮件。现在我想知道是否有一种方法可以知道电子邮件是否已成功发送,或者电子邮件是否因某些附件而失败或可能是错误的电子邮件地址。
我如何确保电子邮件地址有效?或者电子邮件是否成功发送到相关电子邮件地址?
我已经阅读了 nodemailer 文档并对其进行了一些研发,但到目前为止我找不到任何有成效的东西。
请让我知道是否有办法确认电子邮件。
谢谢。
我有一些使用nodemailer模块的代码。
在路由器(router.js)中,我有
const transporter = nodeMailer.createTransport(emailArgs);
Run Code Online (Sandbox Code Playgroud)
然后在路线(/login)内我有:
...
return transporter.sendMail(mailOptions);
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用jest测试框架测试这条路线。我在模拟对sendMail. 我读了这篇关于如何使用 jest mocking 的好博文,但我收到了这个错误:
类型错误:无法读取未定义的属性“sendMail”
事实上,当我检查transporter它的值是未定义的。
这是我的测试代码(不起作用):
import request from "supertest";
import router from "./router";
jest.mock("nodemailer");
describe("", () => {
...
test("", async () => {
// 1 - 200 status code; 2 - check email was sent
expect.assertions(2);
const response = await request(router)
.post("/login")
// global variable
.send({ "email": email })
.set("Accept", "application/json")
.expect("Content-Type", …Run Code Online (Sandbox Code Playgroud) 我使用带有 gmail 帐户的 Nodemailer,我想更改发件人姓名。但我不知道该怎么做。发件人姓名实际上是我的电子邮件地址,但我更喜欢“咨询”。
这是我的代码:
var smtpTransport = mailer.createTransport("SMTP", {
service: "Gmail",
auth: {
user: "m***@gmail.com",
pass: "****"
}},
{from: 'Consultation'}
);
module.exports = {
sendNewUserEmail: function (user) {
var mail = {
from: "Consultation",
to: "i***@gmail.com",
subject: `Consultation: New client ${user.firstname} ${user.lastname}`,
html: `<h1>New client for kitomba</h1>
<ul>
<li>Firstname: ${user.firstname}</li>
<li>Lastname: ${user.lastname}</li>
<li>Phone: ${user.phone}</li>
<li>Mail: ${user.mail}</li>
<li>Address: ${user.address}</li>
<li>Suburb: ${user.suburb}</li>
<li>State: ${user.state}</li>
<li>Postal code: ${user.postalcode}</li>
</ul>`
}
smtpTransport.sendMail(mail, function (error, response) {
if (error) {
console.log("Error");
console.log(error);
} else …Run Code Online (Sandbox Code Playgroud) 我们在 Nodemailer 中使用我们的 Gmail 凭据发送开发中的测试电子邮件。我们今天尝试使用与昨天相同的配置发送一个并收到以下错误:
2020-05-04T10:17:35.547Z Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at
04/05/2020 12:17:35 535 5.7.8 https://support.google.com/mail/?p=BadCredentials s18sm19281474wra.94 - gsmtp
04/05/2020 12:17:35 at SMTPConnection._formatError (/home/node/backend/node_modules/nodemailer/lib/smtp-connection/index.js:784:19)
04/05/2020 12:17:35 at SMTPConnection._actionAUTHComplete (/home/node/backend/node_modules/nodemailer/lib/smtp-connection/index.js:1523:34)
04/05/2020 12:17:35 at SMTPConnection.<anonymous> (/home/node/backend/node_modules/nodemailer/lib/smtp-connection/index.js:550:26)
04/05/2020 12:17:35 at SMTPConnection._processResponse (/home/node/backend/node_modules/nodemailer/lib/smtp-connection/index.js:942:20)
04/05/2020 12:17:35 at SMTPConnection._onData (/home/node/backend/node_modules/nodemailer/lib/smtp-connection/index.js:749:14)
04/05/2020 12:17:35 at TLSSocket.SMTPConnection._onSocketData (/home/node/backend/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)
04/05/2020 12:17:35 at TLSSocket.emit (events.js:310:20)
04/05/2020 12:17:35 at addChunk (_stream_readable.js:286:12)
04/05/2020 12:17:35 at readableAddChunk (_stream_readable.js:268:9)
04/05/2020 12:17:35 at TLSSocket.Readable.push (_stream_readable.js:209:10)
04/05/2020 12:17:35 2020-05-04T10:17:34.439Z RES …Run Code Online (Sandbox Code Playgroud) 我在 next.js 中的联系表单有问题,我没有任何错误(显示),一切正常,直到部署(在 Vercel 上)。我获取了我的表单,状态为 200,但我没有在 Gmail 上收到我的电子邮件。此外,我没有收到任何其他信息。当我在“开发”和“构建”上测试我的应用程序时,我收到了电子邮件。我在 Gmail 帐户中也有“不太安全的应用”选项。
这是我在 Next.JS 中的代码:
contact.js 中的 fetch 方法:
fetch("/api/contact", {
method: "POST",
headers: {
Accept: "application/json, text/plain, */*",
"Content-Type": "application/json",
},
body: JSON.stringify({
name: mailName,
email: mailAddress,
text: mailText,
}),
}).then((res) => {
console.log("Fetch: ", res);
res.status === 200
?
router.push("/success")
: router.push("/error");
Run Code Online (Sandbox Code Playgroud)
在 api/contact.js 中
require("dotenv").config();
const nodemailer = require("nodemailer");
export default (req, res) => {
const { name, email, text } = req.body;
const transporter = nodemailer.createTransport({
service: "gmail", …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过nodemailer 发送电子邮件。发件人电子邮件是 microsoft azure。但我收到错误响应:'535 5.7.139 身份验证失败,请求不符合成功身份验证的标准。请联系您的管理员。MFA 已启用。我还生成了应用程序密码。谁能帮我解决这个问题。发送邮件的代码片段-
var userTransporter = nodemailer.createTransport({
host: 'smtp.office365.com',
port: 587, // secure SMTP
secure: false,
auth: {
user:SENDER_EMAIL,
pass: SENDER_APP_PASSWORD,
}
});
var mailOptions = {
from: SENDER_EMAIL,
to: email,
template: path.join(__dirname, "../public/views/email-verification"),
context: {
token: otp,
email: email,
url: EMAIL_VERIFICATION_LINK,
name: user_name
},
};
let mail = await transporter.sendMail(mailOptions);
Run Code Online (Sandbox Code Playgroud) 随着 Google 于 2022 年 5 月 30 日关闭安全性较低的应用程序,将 Gmail 与 nodemailer 结合使用现在会引发错误,提示response: '535-5.7.8 Username and Password not accepted. Learn more at\n' + '535 5.7.8 https://support.google.com/mail/?p=BadCredentials。Nodemailer文档似乎尚未就安全性较低的应用程序问题进行更新,但建议使用其他交付提供商。我以前只是打开 LSA,将凭据存储在环境变量中,然后让 Nodemailer 完成它的工作,经过此更改,如何仍然可以将 gmail 与 Nodemailer 一起使用?目前还没有 YouTube 教程来解决这个问题,并且查看google 文档,它没有显示 nodemailer
我需要创建一个脚本,使用 Gmail 帐户每天发送一次邮件。我使用过 nodemailer 并且有这个简单的测试代码
const fs = require('fs');
const path = require('path');
const nodemailer = require('nodemailer');
const transport = nodemailer.createTransport({
host: 'smtp.gmail.com',
//secure: true,
//port: 465,
auth: {
user: 'myuser@companyworkspace.com',
pass: 'mypassword'
}
})
let mailOptions = {
from: 'bruno.paolillo@ohspa.it', // sender address
to: 'bruno.paolillo@ohspa.it', // list of receivers
subject: 'Test email', // Subject line
text: 'this is some text', //, // plaintext body
html: '<b>Hello world </b>' // You can choose to send an HTML body instead
} …Run Code Online (Sandbox Code Playgroud) nodemailer ×10
node.js ×6
email ×4
gmail ×4
javascript ×4
angularjs ×1
azure ×1
credentials ×1
email-client ×1
heroku ×1
jestjs ×1
meteor ×1
mocking ×1
next.js ×1
reactjs ×1
sails.js ×1
smtp ×1
unit-testing ×1