package foundation.send.mail; import javax.mail.Address; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import foundation.dao.DataPackage; import foundation.dao.PackageItem; import foundation.data.entity.Entity; import foundation.variant.expression.VariantExpression; import foundation.variant.expression.VariantSegment; public class Mail { private MailAction action; private String toAddress; private String body; public Mail(MailAction action) { this.action = action; } public void build(DataPackage dataPackage) throws Exception { Entity entity = dataPackage.getMasterEntity(); //1. 获取收件地址 String fieldMailAddress = action.getFieldMailAddress(); int pos = fieldMailAddress.indexOf("__"); if (pos > 0) { String itemName = fieldMailAddress.substring(0, pos); PackageItem packageItem = dataPackage.getItem(itemName); if(packageItem == null) { DataPackage host = dataPackage.getHost(); host.loadOneDataFromDB(); entity = host.getItemEntity(itemName); }else { entity = dataPackage.getItemEntity(itemName); } fieldMailAddress = fieldMailAddress.substring(pos+2); } toAddress = entity.getString(fieldMailAddress); if(toAddress == null) { toAddress = action.getFieldMailAddress(); } //2. 创建邮件内容 MailTemplate template = action.getTemplate(); createBody(template, dataPackage); } private void createBody(MailTemplate template, DataPackage dataPackage) { VariantExpression content = template.getContent(); for (VariantSegment variant: content) { String value = dataPackage.getString(variant.getName(), ""); variant.setValue(value); } body = template.getContentValue(); } public String getName() { return action.getName(); } public String getSubject() { return action.getSubject(); } public String getMailContent() { return body.toString(); } public String getContentType() { return "text/html;charset=utf-8"; } public Address[] getToAddress() throws AddressException { return new Address[]{new InternetAddress(toAddress)}; } }