코딩에 Nest.js를 사용하고 있는데 이제 이메일 데이터를 성공적으로 가져오고 있습니다. 이제 메시지 ID별로 각 이메일을 하나씩 가져오고 이메일을 읽었는지 또는 읽지 않았는지 확인하고 싶습니다. 이메일을 읽지 않은 경우 읽음으로 표시하고 데이터베이스에서 업데이트하고 싶습니다. 아시는 분은 이에 대한 코드를 다시 작성해 주세요.
참고: 저는 데이터베이스 작업에 Prisma ORM을 사용하고 있습니다
// google-sheet.service.ts import { Injectable } from '@nestjs/common'; import { google } from 'googleapis'; import { JWT } from 'google-auth-library'; import { EnvironmentService } from 'src/core/environments/environments.service'; import axios from 'axios'; @Injectable() export class GmailService { constructor(private environmentService: EnvironmentService) {} async getEMails() { try { const oAuth2Client = new google.auth.OAuth2( this.environmentService.clientId(), this.environmentService.clientSecret(), this.environmentService.googleUri(), ); await oAuth2Client.setCredentials({ refresh_token:this.environmentService.refresh_token() , }); // 获取所有id const fetchingIdUrl = `https://gmail.googleapis.com/gmail/v1/users/email@gmail.com/messages/`; const { token } = await oAuth2Client.getAccessToken(); const config: any = { headers: { Authorization: `Bearer ${token}`, }, }; const response = await axios.get(fetchingIdUrl, config); // 通过id获取邮件 const fetchingEmailById = `https://gmail.googleapis.com/gmail/v1/users/eamil@gmail.com/messages/${response.data.id}`; const emailResponse = await axios.get(fetchingEmailById, config); const emailData = response.data; console.log(emailData); // emailData.payload.parts.forEach((part, index) => { // if (part.body.size > 0) { // const bodyContent = Buffer.from(part.body.data, 'base64').toString(); // console.log('Body Content:'); // console.log(bodyContent); // } // }); } catch (err) { console.error('Error fetching emails:', err.message); } } }
으아악