Nodejs 使用qq邮箱发送邮件出错。
Nodejs 使用qq邮箱发送邮件出错。
qq邮箱印象中如果帐号使用时间不长的话是不允许设置smtp服务的,另外,先需要在qq邮箱中设置开启smtp才行。可以用其它熟悉的语言试试。
Node.js 使用 QQ 邮箱发送邮件出错
问题描述
在使用 Node.js 发送邮件时,如果使用的是 QQ 邮箱作为发件服务器,可能会遇到一些问题。这些问题通常与 QQ 邮箱的安全设置有关。QQ 邮箱可能需要用户手动开启 SMTP 服务,并且对于新注册的账户,SMTP 服务可能是默认关闭的。
解决方法
-
开启 SMTP 服务
- 登录到你的 QQ 邮箱。
- 进入设置 -> 账户。
- 找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”部分。
- 开启 SMTP 服务。
-
获取授权码
- QQ 邮箱要求使用授权码而非密码来登录 SMTP 服务。
- 在 QQ 邮箱的设置 -> 账户页面中,找到“生成授权码”的链接,点击后按提示操作即可获得授权码。
-
使用 Node.js 发送邮件
你可以使用
nodemailer
库来发送邮件。以下是一个简单的示例代码:const nodemailer = require('nodemailer'); // 创建一个SMTP传输对象 let transporter = nodemailer.createTransport({ host: 'smtp.qq.com', // 使用QQ邮箱服务器 port: 465, // SSL端口 secure: true, auth: { user: 'your_qq_email@qq.com', // 你的QQ邮箱账号 pass: 'your_authorization_code' // 你生成的授权码 } }); // 发送邮件的选项 let mailOptions = { from: '"Your Name" <your_qq_email@qq.com>', // 发件人 to: 'recipient@example.com', // 收件人地址,可以是数组 subject: 'Hello ✔', // 邮件主题 text: 'Hello world?', // 纯文本正文 html: '<b>Hello world?</b>' // HTML正文 }; // 发送邮件 transporter.sendMail(mailOptions, (error, info) => { if (error) { return console.log(error); } console.log('Message sent: %s', info.messageId); });
注意事项
- 确保你的 QQ 邮箱账号已经开启了 SMTP 服务。
- 使用授权码而不是密码进行身份验证。
- 如果仍然遇到问题,可以检查 QQ 邮箱的安全设置,确保没有被封锁或限制。
通过以上步骤,你应该能够解决使用 Node.js 和 QQ 邮箱发送邮件时遇到的问题。
我也发不出去,这可是参考cnodeClub的代码啊
mail_opts: {
host: 'smtp.qq.com',
port: 465,
secureConnection: true,
requiresAuth: true,
domains: ["qq.com"],
auth: {
user: 'dodo.XX@qq.com',
pass: 'XX'
}
}
port 25试试
- Ubuntu 14.04 64位
- Node.js 0.10.29
- npm 1.4.14
- Nodemailer 0.7.1:
npm i nodemailer@0.7.1
。
然后执行上述代码,成功地从自己的QQ邮箱发送邮件到Gmail邮箱。
标题:Nodejs 使用qq邮箱发送邮件出错。
内容: 在使用 Node.js 发送邮件时,如果遇到错误,通常是因为以下几个原因:
-
SMTP服务未开启:首先确保你的QQ邮箱账号已经开启了SMTP服务。你可以登录到你的QQ邮箱账户,在设置中找到POP3/IMAP/SMTP服务,并开启SMTP服务。
-
授权码问题:使用SMTP服务发送邮件时,需要使用授权码而不是密码。你可以在QQ邮箱的设置中生成一个授权码,并在代码中使用该授权码进行身份验证。
-
邮箱服务提供商的限制:有些新注册的QQ邮箱账号可能暂时无法使用SMTP服务,需要一段时间后才能正常使用。
-
代码示例:以下是一个使用
nodemailer
库通过QQ邮箱发送邮件的基本示例。
const nodemailer = require('nodemailer');
// 创建一个SMTP传输器对象
let transporter = nodemailer.createTransport({
host: 'smtp.qq.com', // SMTP服务器地址
port: 465, // SMTP端口
secure: true, // 使用SSL
auth: {
user: 'your_qq_email@qq.com', // 你的QQ邮箱账号
pass: 'your_authorization_code' // 你的授权码
}
});
// 邮件信息
let mailOptions = {
from: '"发件人名" <your_qq_email@qq.com>', // 发件人
to: 'recipient_email@example.com', // 收件人,可以是多个收件人,用逗号分隔
subject: 'Hello ✔', // 邮件主题
text: 'Hello world?', // 纯文本正文
html: '<b>Hello world?</b>' // HTML正文
};
// 发送邮件
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
});
注意替换上述代码中的 your_qq_email@qq.com
和 your_authorization_code
为你的实际QQ邮箱账号和授权码。希望这能帮助你解决问题!