nodemailer,如何將圖像嵌入電子郵件

我需要在使用 nodemailer 發送的電子郵件中嵌入圖像。 我試過使用附件的方式,但圖像卻被添加為附件。 因此,我將圖像以 base64 的形式嵌入到電子郵件正文中。 首先,我們需要添加一些引用: import fs from 'node:fs' import path from 'path' import { fileURLToPath } from 'url' const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) 我們需要這樣做是因為在 ES 模塊中,__dirname 在作用域內無效,我們必須使用 fs 的 readFileSync() 函數來引用文件,但它需要絕對路徑,而不是相對路徑。 長話短說,就是這樣。 現在讀取圖像: const imageData = fs.readFileSync(__dirname + '/image.jpg', 'binary') 將其轉換為 base64 編碼的字符串: const src = `data:image/jpg;base64,${Buffer.from( imageData, 'binary' ).toString('base64')}` 最後,將其添加到電子郵件正文中: const mailOptions = { //... html: `<img style="width:800px;" src="${src}">`, }

如何使用nodemailer發送電子郵件

以下是使用nodemailer發送電子郵件的方法。 首先安裝nodemailer: npm install nodemailer 然後在您的Node腳本或應用程序中導入它: import nodemailer from 'nodemailer' 初始化一個傳輸器對象,稍後將使用它來發送電子郵件: const transporter = nodemailer.createTransport({ host: 'smtp.yoursmtpserver.com', port: 465, secure: true, auth: { user: 'smtp_user', pass: 'smtp_pass', }, }) 注意:您需要用真實的SMTP服務器憑據填充這些值。 現在,創建一個options對象,其中包含您要發送的電子郵件的詳細信息: const options = { from: '[[email protected]](/cdn-cgi/l/email-protection)', to: '[[email protected]](/cdn-cgi/l/email-protection)', subject: 'Hi!', html: `<p>Hello</>`, } 最後,在之前創建的transporter對象上調用sendMail()方法,傳遞options和一個回調函數,當完成時將會執行該回調函數: transporter.sendMail(options, (err, info) => { if (err) { console.log(err) } else { console.log('郵件已發送') } }) 這也可以使用基於Promise的語法: const info = await transporter.sendMail(options) 完整代碼: import nodemailer from 'nodemailer' const sendEmail = () => { const transporter = nodemailer....