/**
* 邮件模板
*/
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.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.oldEpisodes} 集 → 第 ${u.newEpisodes} 集
(+${u.newEpisodes - u.oldEpisodes})
立即观看
`
)
.join('');
return `
Hi ${userName},
您收藏的影片有以下更新:
${updatesList}
快去观看吧!
`;
}