package com.trade.service.message;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

/**
 * @description: 邮箱模板
 * @Author: wanglang
 * @Date: 2024/3/30 14:19
 * @Version: 1.0
 */
public interface EmailTemplate {

    /**
     * 动态生成邮件 表格模板Html
     * 
     * @param headers 表头
     * @param rows 数据行
     * @return html字符串
     */
    String getDynamicTableProcess(List<String> headers, List<List<String>> rows);

    /**
     * 发送邮件Html
     *
     * @param title 主题
     * @param html 模板或者自定义html
     * @param cc 抄送人 可为空
     * @param receiver 收件人/可以发送给多个人
     * @param filePath 附件路径
     * @return 失败or成功
     */
    boolean sendHtmlMail(String title, String html, String[] cc, String filePath, String[] receiver);

    /**
     * 发送邮件模板
     *
     * @param title 主题
     * @param templateName 模板名称
     * @param attachment 附件
     * @param fileName 附件名称
     * @param variables 模板变量
     * @param cc 抄送人 可为空
     * @param bcc 密送人 可为空
     * @param receiver 收件人/可以发送给多个人
     * @return 失败or成功
     */
    boolean sendMailTemplate(String title, String templateName, byte[] attachment, String fileName,
            Map<String, Object> variables, String[] cc, String[] bcc, String[] receiver);

    /**
     * 发送邮件 文本
     *
     * @param title 主题
     * @param content 内容
     * @param cc 抄送人 可为空
     * @param filePath 附件路径
     * @param receiver 收件人/可以发送给多个人
     * @return 失败or成功
     */
    boolean sendSimpleMail(String title, String content, String[] cc, String filePath, String[] receiver);

    /**
     * 发送邮件Html
     *
     * @param title 主题
     * @param html 模板或者自定义html
     * @param cc 抄送人 可为空
     * @param receiver 收件人/可以发送给多个人
     * @param fileName 附件名称
     * @param in 文件流
     * @return 失败or成功
     */
    boolean sendHtmlMail(String title, String html, String[] cc, String fileName, InputStream in, String... receiver);
}
