# EMail邮箱[电子邮件]组件

系统内置有发送邮件相关接口,可以复用。

# 核心接口WebmailApi

代码及注释如下:

/**
 * 电子邮件接口
 */
public interface WebmailApi {

    /**
     * 判断人员是否有默认邮箱
     *
     * 正常:<br>
     *     1、传入正确的人员id(人员有默认邮箱),返回true<br>
     *     2、传入正确的人员id(人员没有默认邮箱),返回false<br>
     *
     * @param memberId 人员id
     * @return
     * @throws BusinessException
     */
    public boolean hasDefaultMbc(Long memberId) throws BusinessException;

    /**
     * 获取人员邮件所占空间大小
     *
     * 正常:<br>
     *     1、传入正确的人员id,返回邮件所占空间大小<br>
     *
     * @param memberId 人员id
     * @return
     */
    public long getMailSpaceSize(Long memberId) throws BusinessException;

    /**
     * 转发邮件
     *
     * 正常:<br>
     *     1、传入正确的协同id、标题、正文内容、附件列表,返回邮件实体<br>
     *     2、传入正确的计划id、标题、正文内容、附件列表为空,返回邮件实体<br>
     *     3、传入正确的文档id、标题、正文内容为空、附件列表为空,返回邮件实体<br>
     * 异常:<br>
     *     4、所有参数传入null,抛异常<br>
     *
     * @param referenceId 源id,如:协同id/文档id
     * @param subject 标题
     * @param body 正文内容
     * @param attachments 附件列表
     * @return
     */
    public ModelAndView forwardMail(Long referenceId, String subject, String body, List<Attachment> attachments);

}

# 调用示例

public class ColManagerImpl implements ColManager {
	private WebmailApi webmailApi;
	public void setWebmailApi(WebmailApi webmailApi) {
		this.webmailApi = webmailApi;
	}

	/**
     * 协同转发邮件
     * @param params
     * @return
     * @throws BusinessException
     */
    public ModelAndView getforwordMail(Map params) throws BusinessException {
        User user = AppContext.getCurrentUser();
        try {
			// 判断人员是否有默认邮箱,无邮箱则重定向到错误页面
            boolean hasDefaultMbc = webmailApi.hasDefaultMbc(user.getId());
            if(!hasDefaultMbc){
                ModelAndView mav = new ModelAndView("webmail/error");
                mav.addObject("errorMsg", "2");
                mav.addObject("errorUrls", "?method=list&jsp=set");
                return mav;
            }
        } catch (Exception e1) {
            LOG.error("调用邮件接口判断当前用户是否有邮箱设置:", e1);
        }
		Long summaryId; // 源id,如:协同id/文档id
		String subject; //标题
		String bodyContent; // 正文内容
		List<Attachment> attachments; // 附件列表
		// 调用转发动作
		ModelAndView mv = webmailApi.forwardMail(summaryId, subject, bodyContent, attachments);
        return mv;
	}

}
编撰人:het