Nodejs 使用qq邮箱发送邮件出错。

Nodejs 使用qq邮箱发送邮件出错。

qq邮箱印象中如果帐号使用时间不长的话是不允许设置smtp服务的,另外,先需要在qq邮箱中设置开启smtp才行。可以用其它熟悉的语言试试。

5 回复

Node.js 使用 QQ 邮箱发送邮件出错

问题描述

在使用 Node.js 发送邮件时,如果使用的是 QQ 邮箱作为发件服务器,可能会遇到一些问题。这些问题通常与 QQ 邮箱的安全设置有关。QQ 邮箱可能需要用户手动开启 SMTP 服务,并且对于新注册的账户,SMTP 服务可能是默认关闭的。

解决方法

  1. 开启 SMTP 服务

    • 登录到你的 QQ 邮箱。
    • 进入设置 -> 账户。
    • 找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”部分。
    • 开启 SMTP 服务。
  2. 获取授权码

    • QQ 邮箱要求使用授权码而非密码来登录 SMTP 服务。
    • 在 QQ 邮箱的设置 -> 账户页面中,找到“生成授权码”的链接,点击后按提示操作即可获得授权码。
  3. 使用 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 发送邮件时,如果遇到错误,通常是因为以下几个原因:

  1. SMTP服务未开启:首先确保你的QQ邮箱账号已经开启了SMTP服务。你可以登录到你的QQ邮箱账户,在设置中找到POP3/IMAP/SMTP服务,并开启SMTP服务。

  2. 授权码问题:使用SMTP服务发送邮件时,需要使用授权码而不是密码。你可以在QQ邮箱的设置中生成一个授权码,并在代码中使用该授权码进行身份验证。

  3. 邮箱服务提供商的限制:有些新注册的QQ邮箱账号可能暂时无法使用SMTP服务,需要一段时间后才能正常使用。

  4. 代码示例:以下是一个使用 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.comyour_authorization_code 为你的实际QQ邮箱账号和授权码。希望这能帮助你解决问题!

回到顶部