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)};
|
}
|
|
}
|