www.pudn.com > javamailtest.rar > sendMail.java, change:2007-11-12,size:5505b


package mailTest; 
 
import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.*; 
import javax.activation.*; 
 
public class sendMail { 
 
	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 sendMail(String smtp) { 
		setSmtpHost(smtp); 
		createMimeMessage(); 
	} 
 
	/** 
	 * 设置服务器 
	 * @param hostName 
	 *            String 
	 */ 
	public void setSmtpHost(String hostName) { 
		System.out.println("设置系统属性:mail.smtp.host = " + hostName); 
		if (props == null) 
			props = System.getProperties(); // 获得系统属性对象 
 
		props.put("mail.smtp.host", hostName); // 设置SMTP主机 
	} 
 
	/** 
	 * 创建邮件 
	 * @return boolean 
	 */ 
	public boolean createMimeMessage() { 
		try { 
			System.out.println("准备获取邮件会话对象!"); 
			session = Session.getDefaultInstance(props, null); // 获得邮件会话对象 
		} catch (Exception e) { 
			System.err.println("获取邮件会话对象时发生错误!" + e); 
			return false; 
		} 
 
		System.out.println("准备创建MIME邮件对象!"); 
		try { 
			mimeMsg = new MimeMessage(session); // 创建MIME邮件对象 
			mp = new MimeMultipart(); 
 
			return true; 
		} catch (Exception e) { 
			System.err.println("创建MIME邮件对象失败!" + e); 
			return false; 
		} 
	} 
 
	/** 
	 * 设置是否需要认证 
	 * @param need 
	 *            boolean 
	 */ 
	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"); 
		} 
	} 
 
	/** 
	 * 设置认证的用户和密码 
	 * @param name 
	 *            String 
	 * @param pass 
	 *            String 
	 */ 
	public void setNamePass(String name, String pass) { 
		username = name; 
		password = pass; 
	} 
 
	/** 
	 * 设置主题 
	 * @param mailSubject 
	 *            String 
	 */ 
	public void setSubject(String mailSubject) { 
		System.out.println("设置邮件主题!"); 
		try { 
			mimeMsg.setSubject(mailSubject); 
		} catch (Exception e) { 
			System.err.println("设置邮件主题发生错误!"); 
		} 
	} 
 
	/** 
	 * 设置邮件内容 
	 * @param mailBody 
	 *            String 
	 */ 
	public void setBody(String mailBody) { 
		try { 
			BodyPart bp = new MimeBodyPart(); 
			bp.setContent( 
					"" 
							+ mailBody, "text/html;charset=GB2312"); 
			mp.addBodyPart(bp); 
 
		} catch (Exception e) { 
			System.err.println("设置邮件正文时发生错误!" + e); 
		} 
	} 
 
	/** 
	 * 增加附件 
	 * @param name 
	 *            String 
	 * @param pass 
	 *            String 
	 */ 
	public void addFileAffix(String filename) { 
 
		System.out.println("增加邮件附件:" + filename); 
 
		try { 
			BodyPart bp = new MimeBodyPart(); 
			FileDataSource fileds = new FileDataSource(filename); 
			bp.setDataHandler(new DataHandler(fileds)); 
			bp.setFileName(fileds.getName()); 
 
			mp.addBodyPart(bp); 
 
		} catch (Exception e) { 
			System.err.println("增加邮件附件:" + filename + "发生错误!" + e); 
		} 
	} 
 
	/** 
	 * 设置发件人 
	 * @param name 
	 *            String 
	 * @param pass 
	 *            String 
	 */ 
	public void setFrom(String from) { 
		System.out.println("设置发信人!"); 
		try { 
			mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人 
		} catch (Exception e) { 
		} 
	} 
 
	/** 
	 * 设置收件人 
	 * @param name 
	 *            String 
	 * @param pass 
	 *            String 
	 */ 
	public void setTo(String to) { 
		try { 
			mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress 
					.parse(to)); 
		} catch (Exception e) { 
		} 
 
	} 
 
	/** 
	 * 设置抄送 
	 * @param name 
	 *            String 
	 * @param pass 
	 *            String 
	 */ 
	public void setCopyTo(String copyto) { 
		try { 
			mimeMsg.setRecipients(Message.RecipientType.CC, 
					(Address[]) InternetAddress.parse(copyto)); 
		} catch (Exception e) { 
		} 
	} 
 
	/** 
	 * 发送邮件 
	 * @param name 
	 *            String 
	 * @param pass 
	 *            String 
	 */ 
	public void 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)); 
 
			System.out.println("发送邮件成功!"); 
			transport.close(); 
 
		} catch (Exception e) { 
			System.err.println("邮件发送失败!" + e); 
		} 
	} 
 
	/** 
	 * 测试 
	 * Just do it as this 
	 */ 
	public static void main(String[] args) { 
 
		String mailbody = "" 
				+ "
csdn
"; sendMail themail = new sendMail("exchange.shanghai3h.com"); themail.setNeedAuth(false); themail.setSubject("标题"); themail.setBody(mailbody); themail.setTo("zhangxinhua@shanghai3h.com"); themail.setFrom("anguoqing@shanghai3h.com"); themail.sendout(); } }