/** * 邮件模板 */ export interface FavoriteUpdate { title: string; oldEpisodes: number; newEpisodes: number; url: string; cover?: string; } /** * 收藏更新邮件模板 */ export function getFavoriteUpdateEmailTemplate( userName: string, updates: FavoriteUpdate[], siteUrl: string, siteName?: string ): string { const updatesList = updates .map( (u) => `
${ u.cover ? `${u.title}` : '' }
${u.title}
更新:第 ${u.oldEpisodes} 集 → 第 ${u.newEpisodes} 集
立即观看
` ) .join(''); return `

📺 收藏更新通知

Hi ${userName}

您收藏的以下影片有更新:

${updatesList}

快去观看吧!

`; } /** * 单个收藏更新邮件模板(简化版) */ export function getSingleFavoriteUpdateEmailTemplate( userName: string, title: string, oldEpisodes: number, newEpisodes: number, url: string, cover?: string, siteName?: string ): string { return getFavoriteUpdateEmailTemplate( userName, [{ title, oldEpisodes, newEpisodes, url, cover }], url.split('/play')[0] || 'http://localhost:3000', siteName ); } /** * 批量收藏更新邮件模板(每日汇总) */ export function getBatchFavoriteUpdateEmailTemplate( userName: string, updates: FavoriteUpdate[], siteUrl: string, siteName?: string ): string { const totalUpdates = updates.length; const totalNewEpisodes = updates.reduce( (sum, u) => sum + (u.newEpisodes - u.oldEpisodes), 0 ); const updatesList = updates .map( (u) => `
${ u.cover ? `${u.title}` : '' }
${u.title}
第 ${u.oldEpisodes} 集 → 第 ${u.newEpisodes} 集 (+${u.newEpisodes - u.oldEpisodes})
立即观看
` ) .join(''); return `

📺 收藏更新汇总

${totalUpdates} 部影片更新 · 共 ${totalNewEpisodes} 集新内容
Hi ${userName}

您收藏的影片有以下更新:

${updatesList}

快去观看吧!

`; }