/*
* 创建日期 2005-10-16
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package com.email.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Date;
import java.util.Properties;
import java.util.Vector;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.apache.commons.codec.binary.Base64;
import com.db.DatabaseImp;
import com.email.config.EmailConfig;
import com.email.portal.EmailData;
/**
* @author nakata
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class EmailUtil {
String host = ""; //邮件服务器ip
String port = ""; //邮件服务器端口
String username = ""; //登陆用户名密码
String password = "";
String socksProxyHost = ""; //代理ip
String socksProxyPort = ""; //代理端口
public boolean sendEmail(String adjuncts[],String frommail,String fromname,
String tomails[],String ccmails[],
String contenttype,String sendtxt,String subject){
boolean flag=true;
//代理
if(socksProxyHost!=null&&!"".equals(socksProxyHost.trim())&&
socksProxyPort!=null&&!"".equals(socksProxyPort.trim())){
System.getProperties().put("socksProxySet","true");
System.getProperties().put("socksProxyHost",socksProxyHost); //10.210.1.35
System.getProperties().put("socksProxyPort",socksProxyPort); //1080
}
Properties props = System.getProperties();
props.put("mail.smtp.host", host); //218.94.62.106
//默认端口不是25的指定一个端口
if(port!=null&&!"".equals(port)&&!"25".equals(port)){
props.put("mail.smtp.port", port);
}
Session session = null;
if(username!=null&&!"".equals(username)){ //需要登陆认证的
props.put("mail.smtp.auth", "true");
session = Session.getDefaultInstance(props,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
}else{ //不需要登陆认证的
props.put("mail.smtp.auth", "false");
session = Session.getInstance(props, null);
}
try {
MimeMessage msg = new MimeMessage(session);
if(fromname==null) fromname = "";
fromname = "=?GB2312?B?" + new String(Base64.encodeBase64((fromname).getBytes())) + "?=";
msg.setFrom(new InternetAddress(frommail, fromname)); //发送人地址和名称***@lianchuang.com
InternetAddress[] toaddress = new InternetAddress[tomails.length];
//接收人地址
for(int i=0;i<tomails.length;i++){
toaddress[i]=new InternetAddress(tomails[i]);
}
msg.setRecipients(Message.RecipientType.TO, toaddress);
//抄送人地址
if(ccmails!=null){
InternetAddress[] ccaddress = new InternetAddress[ccmails.length];
for(int i=0;i<ccmails.length;i++){
ccaddress[i]=new InternetAddress(ccmails[i]);
}
msg.setRecipients(Message.RecipientType.CC, ccaddress);
}
Multipart mp = new MimeMultipart();
//主题
if(subject!=null){
//msg.setSubject(subject,"GBK");
msg.setSubject("=?GB2312?B?" + new String(Base64.encodeBase64((subject).getBytes())) + "?=");
}
//发送内容
if(sendtxt!=null){
MimeBodyPart mbp1 = new MimeBodyPart();
if(contenttype.equals("1")){
mbp1.setContent(sendtxt,"text/html;charset=GBK");
}else{
mbp1.setText(sendtxt,"GBK");
}
mp.addBodyPart(mbp1);
}
msg.setContent(mp);
//附件
if(adjuncts!=null){
for(int i=0;i<adjuncts.length;i++){
MimeBodyPart mbp2 = new MimeBodyPart();
FileDataSource fds = new FileDataSource(adjuncts[i]);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
mp.addBodyPart(mbp2);
}
}
msg.setSentDate(new Date());
//发送定制好的邮件
Transport.send(msg);
}catch (Exception e){
System.out.println("-||||--"+e.toString());
flag=false;
}
return flag;
}
//批量发送
public boolean sendEmail(Vector vEmailData){
String adjuncts[]=null; //附件
String frommail=""; //发送人地址
String fromname=""; //发送人名称
String tomails[]=null; //接收人
String ccmails[]=null; //抄送人
String contenttype=""; //内容格式
String sendtxt=""; //内容
String subject=""; //主题
boolean flag=true;
//代理
if(socksProxyHost!=null&&!"".equals(socksProxyHost.trim())&&
socksProxyPort!=null&&!"".equals(socksProxyPort.trim())){
System.getProperties().put("socksProxySet","true");
System.getProperties().put("socksProxyHost",socksProxyHost); //10.210.1.35
System.getProperties().put("socksProxyPort",socksProxyPort); //1080
}
Properties props = System.getProperties();
props.put("mail.smtp.host", host); //218.94.62.106
//默认端口不是25的指定一个端口
if(port!=null&&!"".equals(port)&&!"25".equals(port)){
props.put("mail.smtp.port", port);
}
Session session = null;
if(username!=null&&!"".equals(username)){ //需要登陆认证的
props.put("mail.smtp.auth", "true");
session = Session.getDefaultInstance(props,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
}else{ //不需要登陆认证的
props.put("mail.smtp.auth", "false");
session = Session.getInstance(props, null);
}
try {
MimeMessage msg = new MimeMessage(session);
if(vEmailData==null||vEmailData.size()==0)
return flag;
for(int j=0;j<vEmailData.size();j++){
EmailData ed=(EmailData)vEmailData.elementAt(j);
adjuncts = ed.getAdjunctsCode();
frommail = ed.getSendCode();
fromname = ed.getSendName();
tomails = ed.getReceiveCode();
ccmails = ed.getCopierCode();
contenttype = ed.getContentType();
sendtxt = ed.getEmContent();
subject = ed.getEmSubject();
if(fromname==null) fromname = "";
fromname = "=?GB2312?B?" + new String(Base64.encodeBase64((fromname).getBytes())) + "?=";
msg.setFrom(new InternetAddress(frommail, fromname)); //发送人***@lianchuang.com
InternetAddress[] toaddress = new InternetAddress[tomails.length];
//接收人地址
for(int i=0;i<tomails.length;i++){
toaddress[i]=new InternetAddress(tomails[i]);
}
msg.setRecipients(Message.RecipientType.TO, toaddress);
//抄送人地址
if(ccmails!=null){
InternetAddress[] ccaddress = new InternetAddress[ccmails.length];
for(int i=0;i<ccmails.length;i++){
ccaddress[i]=new InternetAddress(ccmails[i]);
}
msg.setRecipients(Message.RecipientType.CC, ccaddress);
}
Multipart mp = new MimeMultipart();
//主题
if(subject!=null){
//msg.setSubject(subject,"GBK");
msg.setSubject("=?GB2312?B?" + new String(Base64.encodeBase64((subject).getBytes())) + "?=");
}
//发送内容
if(sendtxt!=null){
MimeBodyPart mbp1 = new MimeBodyPart();
if(contenttype.equals("1")){
mbp1.setContent(sendtxt,"text/html;charset=GBK");
}else{
mbp1.setText(sendtxt,"GBK");
}
mp.addBodyPart(mbp1);
}
msg.setContent(mp);
//附件
if(adjuncts!=null){
for(int i=0;i<adjuncts.length;i++){
MimeBodyPart mbp2 = new MimeBodyPart();
FileDataSource fds = new FileDataSource(adjuncts[i]);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
mp.addBodyPart(mbp2);
}
}
msg.setSentDate(new Date());
//发送定制好的邮件
Transport.send(msg);
//已发送
ed.setStatus(1);
}
}catch (Exception e){
System.out.println("-||||--"+e.toString());
flag=false;
}
return flag;
}
/**
* @return 返回 host。
*/
public String getHost() {
return host;
}
/**
* @param host 要设置的 host。
*/
public void setHost(String host) {
this.host = host;
}
/**
* @return 返回 password。
*/
public String getPassword() {
return password;
}
/**
* @param password 要设置的 password。
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @return 返回 port。
*/
public String getPort() {
return port;
}
/**
* @param port 要设置的 port。
*/
public void setPort(String port) {
this.port = port;
}
/**
* @return 返回 socksProxyHost。
*/
public String getSocksProxyHost() {
return socksProxyHost;
}
/**
* @param socksProxyHost 要设置的 socksProxyHost。
*/
public void setSocksProxyHost(String socksProxyHost) {
this.socksProxyHost = socksProxyHost;
}
/**
* @return 返回 socksProxyPort。
*/
public String getSocksProxyPort() {
return socksProxyPort;
}
/**
* @param socksProxyPort 要设置的 socksProxyPort。
*/
public void setSocksProxyPort(String socksProxyPort) {
this.socksProxyPort = socksProxyPort;
}
/**
* @return 返回 username。
*/
public String getUsername() {
return username;
}
/**
* @param username 要设置的 username。
*/
public void setUsername(String username) {
this.username = username;
}
public static void main(String args[]) {
EmailUtil eu = new EmailUtil();
eu.setHost("10.210.1.48");
eu.setUsername("report");
eu.setPassword("123456");
eu.setSocksProxyHost("10.210.1.35");
eu.setSocksProxyPort("1080");
boolean b = eu.sendEmail(null, "report@unicomgd.com", "省计费报表中心", new String[]{"13322810498@cumail.com.cn"}, null,
"0", "彩Etest...中文", "百日争收战报(20051205)");
System.out.println(b+"|||||||||");
}
}