NodemailerでBase64の画像を添付する
公開日:2021/8/23更新日:2023/1/21
NodemailderでBase64エンコードされた画像を送る場合、pathに文字列をそのまま指定するだけで添付できます。前半のメタ部分data:image/jpeg;base64
を正規表現で削除する必要も、エンコード形式にbase64を指定する必要もありません。
以下がサンプルコードです。
import { createTransport } from "nodemailer";
// postされたデータと仮定
const attachment = {
name: "example-picture.jpg",
url: "data:image/jpeg;base64,/9j/4AAQSk.."
};
const transporter = createTransport({
host: "mail.example.com",
port: 465,
secure: true,
auth: {
user: process.env.MAIL_AUTH_USER,
pass: process.env.MAIL_AUTH_PASS
}
});
transporter.sendMail({
from: `"Shinobi Works" <no-reply@example.com>`,
to: `administer@example.com`,
subject: "問い合わせがありました",
attachments: [
{
filename: attachment.name, // example-picture.jpg
path: attachment.url // data:image/jpeg;base64,/9j/4AAQSk..
}
],
text: `サイトにお問い合わせがありました...(略)`
});