← back to Animate Museum Posts
src/sendEmail.js
55 lines
import nodemailer from 'nodemailer';
import dotenv from 'dotenv';
dotenv.config();
export async function sendPostNotification(tweetText, metadata, mediaPath) {
try {
if (!process.env.EMAIL_HOST || !process.env.EMAIL_USER || !process.env.EMAIL_PASS) {
console.log('Email credentials not configured, skipping email notification');
return;
}
const transporter = nodemailer.createTransport({
host: process.env.EMAIL_HOST,
port: process.env.EMAIL_PORT || 587,
secure: process.env.EMAIL_SECURE === 'true',
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_PASS,
},
});
const mailOptions = {
from: process.env.EMAIL_FROM || process.env.EMAIL_USER,
to: 'steve@designerwallcoverings.com',
subject: `Posted: ${metadata.title}`,
text: tweetText,
html: `
<div style="font-family: Arial, sans-serif; max-width: 600px;">
<h2>New Post Published</h2>
<p><strong>Tweet:</strong></p>
<pre style="background: #f5f5f5; padding: 15px; border-radius: 5px;">${tweetText}</pre>
<hr>
<p><strong>Artwork Details:</strong></p>
<ul>
<li><strong>Title:</strong> ${metadata.title}</li>
<li><strong>Artist:</strong> ${metadata.artist}</li>
<li><strong>Year:</strong> ${metadata.year}</li>
<li><strong>Credit:</strong> ${metadata.creditLine}</li>
</ul>
</div>
`,
attachments: mediaPath ? [{
filename: mediaPath.split('/').pop(),
path: mediaPath
}] : []
};
await transporter.sendMail(mailOptions);
console.log('Email notification sent to steve@designerwallcoverings.com');
} catch (error) {
console.error('Error sending email:', error.message);
}
}