首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Node.js中使用Gmail API发送带有附件的电子邮件?

在Node.js中使用Gmail API发送带有附件的电子邮件,可以按照以下步骤进行:

  1. 安装依赖:首先,确保已经安装了Node.js和npm。然后,在命令行中进入项目目录,并执行以下命令安装所需的依赖包:
代码语言:txt
复制
npm install googleapis google-auth-library nodemailer
  1. 创建Gmail API凭据:在Google Cloud Console中创建一个项目,并启用Gmail API。然后,创建OAuth 2.0凭据,以便在Node.js中进行身份验证和授权。将凭据下载为JSON文件,并将其保存在项目目录中。
  2. 设置授权范围:在项目目录中创建一个名为credentials.json的文件,并将以下内容复制到文件中:
代码语言:txt
复制
{
  "installed": {
    "client_id": "YOUR_CLIENT_ID",
    "project_id": "YOUR_PROJECT_ID",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://accounts.google.com/o/oauth2/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_secret": "YOUR_CLIENT_SECRET",
    "redirect_uris": ["urn:ietf:wg:oauth:2.0:oob", "http://localhost"]
  }
}

YOUR_CLIENT_IDYOUR_CLIENT_SECRET替换为你在Google Cloud Console中创建的凭据的实际值。

  1. 编写代码:在项目目录中创建一个名为sendEmail.js的文件,并将以下代码复制到文件中:
代码语言:txt
复制
const fs = require('fs');
const readline = require('readline');
const { google } = require('googleapis');
const { OAuth2Client } = require('google-auth-library');
const nodemailer = require('nodemailer');

// 读取凭据文件
const credentials = require('./credentials.json');

// 定义要发送的邮件内容
const emailContent = {
  to: 'recipient@example.com',
  subject: '邮件主题',
  text: '邮件正文',
  attachments: [
    {
      filename: '附件文件名',
      path: '附件文件路径'
    }
  ]
};

// 创建OAuth 2.0客户端
const oAuth2Client = new OAuth2Client(
  credentials.installed.client_id,
  credentials.installed.client_secret,
  credentials.installed.redirect_uris[0]
);

// 获取访问令牌
async function getAccessToken() {
  const authUrl = oAuth2Client.generateAuthUrl({
    access_type: 'offline',
    scope: ['https://www.googleapis.com/auth/gmail.send']
  });

  console.log('请访问以下URL并授权:\n', authUrl);

  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
  });

  return new Promise((resolve, reject) => {
    rl.question('请输入授权码:', (code) => {
      rl.close();
      oAuth2Client.getToken(code, (err, token) => {
        if (err) {
          reject(err);
        } else {
          resolve(token);
        }
      });
    });
  });
}

// 发送邮件
async function sendEmail(auth) {
  const transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
      type: 'OAuth2',
      user: 'your.email@gmail.com',
      clientId: credentials.installed.client_id,
      clientSecret: credentials.installed.client_secret,
      refreshToken: auth.refresh_token,
      accessToken: auth.access_token
    }
  });

  const mailOptions = {
    from: 'your.email@gmail.com',
    ...emailContent
  };

  transporter.sendMail(mailOptions, (err, info) => {
    if (err) {
      console.error('发送邮件时出错:', err);
    } else {
      console.log('邮件已发送:', info.response);
    }
  });
}

// 主函数
async function main() {
  try {
    const token = await getAccessToken();
    oAuth2Client.setCredentials(token);
    sendEmail(token);
  } catch (err) {
    console.error('发生错误:', err);
  }
}

// 执行主函数
main();
  1. 替换邮件内容:在sendEmail.js文件中,将recipient@example.com替换为收件人的实际电子邮件地址,将邮件主题替换为邮件的实际主题,将邮件正文替换为邮件的实际正文,将附件文件名替换为附件的实际文件名,将附件文件路径替换为附件的实际文件路径。
  2. 运行代码:在命令行中执行以下命令来运行代码:
代码语言:txt
复制
node sendEmail.js
  1. 授权访问:在命令行中会显示一个授权URL,请访问该URL并授权访问。然后,将授权码输入到命令行中。
  2. 邮件发送:完成授权后,代码将使用Gmail API发送带有附件的电子邮件。

请注意,以上代码示例中使用了nodemailer库来发送电子邮件,并使用了googleapis库来进行Gmail API的身份验证和授权。这些库提供了丰富的功能和选项,可以根据实际需求进行进一步的定制和扩展。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券