package com.sogou.qadev.service.cynthia.bean;
import java.io.ByteArrayInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import com.sogou.qadev.service.cynthia.service.MailSender;
import com.sogou.qadev.service.cynthia.util.ConfigUtil;
import com.sogou.qadev.service.cynthia.util.URLUtil;
import com.sogou.qadev.service.cynthia.util.XMLUtil;
/**
* @description:Send script Mail
* @author:liming
* @mail:liming@sogou-inc.com
* @date:2014-5-6 下午4:24:05
* @version:v1.0
*/
public class SendMail
{
/**
* @description:send mail from action id
* @date:2014-5-6 下午4:24:18
* @version:v1.0
* @param id:action id
* @param content:
* @param username:current user
* @param xml:action xml
* @return
*/
public boolean sendMail(String id, String content, String username, String xml)
{
try
{
Document document = XMLUtil.string2Document(xml, "UTF-8");
NodeList paramList = document.getElementsByTagName( "param" );
MailSender sender = new MailSender();
sender.setFromUser( username );
sender.setHtml( true );
sender.setSmtp( "transport.mail.sogou-inc.com" );
for( int in = 0; in < paramList.getLength(); in++ )
{
Element node = (Element)paramList.item( in );
if( node.getAttribute( "name" ).equals( "title") )
sender.setSubject( node.getAttribute( "value" ) );
else if( node.getAttribute( "name" ).equals( "mailList") )
{
String value = node.getAttribute( "value" );
value = value.replaceAll( ";", "," );
value = value.replaceAll( "\r\n", "," );
value = value.replaceAll( "\n", "," );
sender.setToUsers( value.split( "," ) );
}
else if( node.getAttribute( "name" ).equals( "ccMailList") )
{
String value = node.getAttribute( "value" );
value = value.replaceAll( ";", "," );
value = value.replaceAll( "\r\n", "," );
value = value.replaceAll( "\n", "," );
sender.setCcUsers( value.split( "," ) );
}
else if( node.getAttribute( "name" ).equals( "bccMailList") )
{
String value = node.getAttribute( "value" );
value = value.replaceAll( ";", "," );
value = value.replaceAll( "\r\n", "," );
value = value.replaceAll( "\n", "," );
sender.setBccUsers( value.split( "," ) );
}
}
sender.setContent( content.replaceAll("utf-8", "GBK").replaceAll("UTF-8", "GBK") );
sender.setEncode( "GBK" );
return sender.sendHtmlEx("GBK");
}
catch( Exception e )
{
e.printStackTrace();
}
return false;
}
/**
* @description:send mail from data array
* @date:2014-5-6 下午4:24:51
* @version:v1.0
* @param id:action id
* @param dataArray:data
* @param username:current user
* @param xml:action xml
* @return
*/
public boolean sendMail(String id,Data[] dataArray, String username, String xml)
{
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse( new ByteArrayInputStream( xml.getBytes() ) );
NodeList paramList = document.getElementsByTagName( "param" );
MailSender sender = new MailSender();
sender.setFromUser( username );
sender.setHtml( true );
sender.setSmtp( "transport.mail.sogou-inc.com" );
for( int in = 0; in < paramList.getLength(); in++ )
{
Element node = (Element)paramList.item( in );
if( node.getAttribute( "name" ).equals( "title") )
sender.setSubject( node.getAttribute( "value" ) );
else if( node.getAttribute( "name" ).equals( "mailList") )
{
String value = node.getAttribute( "value" );
value = value.replaceAll( ";", "," );
value = value.replaceAll( "\r\n", "," );
value = value.replaceAll( "\n", "," );
sender.setToUsers( value.split( "," ) );
}
else if( node.getAttribute( "name" ).equals( "ccMailList") )
{
String value = node.getAttribute( "value" );
value = value.replaceAll( ";", "," );
value = value.replaceAll( "\r\n", "," );
value = value.replaceAll( "\n", "," );
sender.setCcUsers( value.split( "," ) );
}
else if( node.getAttribute( "name" ).equals( "bccMailList") )
{
String value = node.getAttribute( "value" );
value = value.replaceAll( ";", "," );
value = value.replaceAll( "\r\n", "," );
value = value.replaceAll( "\n", "," );
sender.setBccUsers( value.split( "," ) );
}
}
StringBuffer content = new StringBuffer();
if( dataArray != null && dataArray.length > 0 )
{
content.append( "<table>" );
content.append( "<tr bgcolor='#EEFFFF'>" );
content.append( "<td nowrap>序号</td>" );
content.append( "<td nowrap>任务ID</td>" );
content.append( "<td nowrap>任务标题</td>" );
content.append( "<td nowrap>状态</td>" );
content.append( "<td nowrap>描述</td>" );
content.append( "<td nowrap>指派人</td>" );
content.append( "<td nowrap>指派类型</td>" );
content.append( "<td nowrap>创建人</td>" );
content.append( "<td nowrap>创建时间</td>" );
content.append( "<td nowrap>最后修改时间</td>" );
content.append( "</tr>" );
for( int i = 0; i < dataArray.length; i ++ )
{
content.append( "<tr bgcolor='#EEEEEE'>" );
content.append( "<td nowrap>").append((i + 1)).append("</td>" );
content.append( "<td nowrap>").append(dataArray[i].getId()).append("</td>" );
content.append( "<td nowrap><a href=\"").append(ConfigUtil.getCynthiaWebRoot()).append("taskManagement.html?operation=read&taskid=").append(URLUtil.toSafeURLString(dataArray[i].getId().toString())).append("\">").append(( dataArray[i].getTitle()==null?"-":dataArray[i].getTitle() )).append("</a></td>" );
content.append( "<td nowrap>").append(dataArray[i].getStatusId()).append("</td>" );
content.append( "<td nowrap>").append(( dataArray[i].getDescription() == null?"-":dataArray[i].getDescription() )).append("</td>" );
content.append( "<td nowrap>").append(( dataArray[i].getAssignUsername() == null?"-":dataArray[i].getAssignUsername() )).append("</td>" );
content.append( "<td nowrap>").append(dataArray[i].getCreateUsername() ).append("</td>" );
content.append( "<td nowrap>").append(dataArray[i].getCreateTime().toString() ).append("</td>" );
content.append( "<td nowrap>").append(dataArray[i].getLastModifyTime().toString() ).append("</td>" );
content.append( "</tr>" );
}
content.append( "</table>" );
}
sender.setContent( content.toString() );
return sender.send();
}
catch( Exception e )
{
e.printStackTrace();
}
return false;
}
}