jmail发送邮件(转)

package com.chinahrt.zyn;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
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;
public class MailUtil {
	
	
	private MimeMessage mimeMsg; // MIME邮件对象   
	private Session session; // 邮件会话对象   
	private Properties props; // 系统属性   
	private boolean needAuth = false; // smtp是否需要认证   
	private String username = ""; // smtp认证用户名和密码   
	private String password = "";
	private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成//MimeMessage对象   
	public MailUtil(String smtp){
		setSmtpHost(smtp);
		createMimeMessage();
	}
	
	public void setSmtpHost(String hostName){
		if(props == null){
			props = System.getProperties();
			props.put("mail.smtp.host", hostName);
		}
	}
	
	public boolean createMimeMessage(){
		try{
			System.out.println("准备获取邮件回话对象");
			session = Session.getDefaultInstance(props,null);
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
		System.out.println("准备常见mime邮件对象");
		try{
			mimeMsg = new MimeMessage(session);
			mp = new MimeMultipart();
			return true;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}
	
	public void setNeedAuth(boolean need){
		System.out.println("设置smtp身份认证:mail.smtp.auth="+need);
		if(props == null){
			props = System.getProperties();
		}
		if(need){
			props.put("mail.smtp.auth","true");
		}else{
			props.put("mail.smtp.auth", "false");
		}
	}
	
	public void setNamePass(String name,String pass){
		System.out.println("程序得到用户名与密码");
		username = name;
		password = pass;
	}
	
	public boolean setSubject(String mailSubject){
		System.out.println("设置邮件主题");
		try{
			mimeMsg.setSubject(mailSubject);
			return true;
		}catch(Exception e){
			System.out.println("设置邮件主题发生错误!");
			return false;
		}
	}
	
	public boolean setBody(String mailBody){
		try{
			System.out.println("设置邮件格式");
			BodyPart bp = new MimeBodyPart();
			bp.setContent("<meta http-equiv=Content-Type content=text/html;charset=gb2312>"+
			mailBody,"text/html;charset=GB2312");
			mp.addBodyPart(bp);
			return true;
		}catch(Exception e){
			System.out.println("设置邮件格式错误");
			e.printStackTrace();
			return false;
		}
	}
	
	public boolean addFileAffix(String filename){
		System.out.println("增加邮件附件:"+filename);
		try{
			BodyPart bp = new MimeBodyPart();
			FileDataSource fields = new FileDataSource(filename);
			bp.setDataHandler(new DataHandler(fields));
			bp.setFileName(fields.getName());
			mp.addBodyPart(bp);
			return true;
		}catch(Exception e){
			System.out.println("增加邮件附件:"+filename+"发生错误!");
			e.printStackTrace();
			return false;
		}
	}
	
	public boolean setFrom(String from){
		System.out.println("设置发信人");
		try{
			mimeMsg.setFrom(new InternetAddress(from));
			return true;
		}catch(Exception e){
			return false;
		}
	}
	
	public boolean setTo(String to){
		System.out.println("设置收信人");
		if(to == null){
			return false;
		}
		try{
			mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
			return true;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}
	
	public boolean setCopyTo(String copyto){
		System.out.println("发邮件到"+copyto);
		if(copyto == null){
			return false;
		}
		try{
			mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copyto));
			return true;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}
	
	public boolean sendout(){
		try{
			mimeMsg.setContent(mp);
			mimeMsg.saveChanges();
			System.out.println("正在发送邮件...");
			Session mailSession = Session.getInstance(props,null);
			Transport transport = mailSession.getTransport("smtp");
			transport.connect((String)props.get("mail.smtp.host"),username, password);
			transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
//加了才可以发到抄送人
			transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.CC));
//加了才可以发到密送人
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.BCC));

			System.out.println("邮件发送成功");
			transport.close();
			return true;
		}catch(Exception e){
			System.out.println("邮件发送失败");
			e.printStackTrace();
			return false;
		}
	}
	
	public static void main(String[] args){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String mailbody = "邮件注册测试 "+sdf.format(new Date());
		MailUtil themail = new MailUtil("smtp.163.com");
		themail.setNeedAuth(true);
		if (themail.setSubject("chinahrt邮件测试") == false) 
			return;
		//邮件内容 支持html 如 <font color=red>欢迎光临</font> <a href=\"http://www.laabc.com\">啦ABC</a>   
		if (themail.setBody(mailbody) == false)
			return; 
		//收件人邮箱   
		if (themail.setCopyTo("1111111@qq.com,") == false)
			return; 
		if (themail.setTo("111111@sina.com") == false)
			return; 
		//发件人邮箱   
		if (themail.setFrom("zhangyanan@chinanet.gov.cn") == false)
			return;
		//设置附件   
		//if (themail.addFileAffix("#######") == false)   //return; // 附件在本地机子上的绝对路径   
		themail.setNamePass("444444444@chinanet.gov.cn", "123456"); // 用户名与密码   
		if (themail.sendout() == false)
			return;
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值