java邮件发送

类1

<pre name="code" class="html">package com.hx.main.comm.util;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MailFactory {
	private static MailProperties defaultProp;
	static {
		defaultProp = new MailProperties();
		defaultProp.setMailServerHost("smtp.exmail.qq.com");
		defaultProp.setMailServerPort("25");
		defaultProp.setValidate(true);
		defaultProp.setFromAddress("support@i3gt.com");
		defaultProp.setUserName("support@i3gt.com");
		defaultProp.setPassword("hx86363828");// 您的邮箱密码
	}

	public static Map sendTextMail(String subject, String content, List toAddress,String[] fileName) {
		Map resultMap = new HashMap();

		if (toAddress != null && toAddress.size() > 0) {
			defaultProp.setToAddress(toAddress);
			defaultProp.setSubject(subject);
			defaultProp.setContent(content);
			defaultProp.setAttachFileNames(fileName);
			MailUtil.sendTextMail(defaultProp);
		} else {
			resultMap.put("state", "failed");
			resultMap.put("message", "邮件发送失败!错误原因:收件人为空");
		}
		return resultMap;
	}

	public static Map sendTextMail(String subject, String content, List toAddress) {
		Map resultMap = sendTextMail(subject, content, toAddress,null);
		return resultMap;
	}


	/**
	 * 发送没有抄送人的邮件
	 * 
	 * @param subject
	 * @param content
	 * @param toAddress
	 * @return
	 */
	/*public static Map<String, String> sendHtmlMail(String subject,
			String content, List<String> toAddress) {
		Map<String, String> resultMap = sendHtmlMail(subject, content,
				toAddress ,null);
		return resultMap;
	}*/
	
	/**
	 * 发送有抄送人的邮件
	 * 
	 * @param subject
	 * @param content
	 * @param toAddress
	 * @param ccAddress
	 * @return
	 */
	public static Map<String, String> sendHtmlMail(String subject,
			String content, List<String> toAddress,List<String> filename) {
		Map<String, String> resultMap = new HashMap<String, String>();

		if (toAddress != null && toAddress.size() > 0) {
			defaultProp.setToAddress(toAddress);
			defaultProp.setSubject(subject);
			defaultProp.setContent(content);
			defaultProp.addFileAffix(filename);
			MailUtil.sendHtmlMail(defaultProp);
		} else {
			resultMap.put("state", "failed");
			resultMap.put("message", "邮件发送失败!错误原因:收件人为空");
		}
		return resultMap;
	}

	/**
	 * 发送没有抄送人的邮件
	 * @param subject
	 * @param content
	 * @param toAddress
	 * @return
	 */
	public static Map<String, String> sendHtmlMail(String subject,
			String content, List<String> toAddress) {
		Map<String, String> resultMap = sendHtmlMail(subject, content,
				toAddress, null);
		return resultMap;
	}
}



类2
<pre name="code" class="html">package com.main.comm.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class MailProperties {
	// 发送邮件的服务器IP和端口
	private String mailServerHost;
	private String mailServerPort = "25";
	// 邮件发送者的地址
	private String fromAddress;
	// 邮件接收者的地址
	private List<String> toAddress;
	// 抄送人地址
	private List<String> ccAddress;
	// 登陆邮件发送服务器的用户名和密码
	private String userName;
	private String password;

	// 是否需要省份验证
	private boolean validate = false;
	// 邮件主题
	private String subject;
	// 邮件的文本内容
	private String content;

	/**
	 * 
	 */
	public Properties getProperties() {
		Properties p = new Properties();
		p.put("mail.smtp.host", this.mailServerHost);
		p.put("mail.smtp.port", this.mailServerPort);
		p.put("mail.smtp.auth", validate ? "true" : "false");
		return p;
	}

	public String getMailServerHost() {
		return mailServerHost;
	}

	public void setMailServerHost(String mailServerHost) {
		this.mailServerHost = mailServerHost;
	}

	public String getMailServerPort() {
		return mailServerPort;
	}

	public void setMailServerPort(String mailServerPort) {
		this.mailServerPort = mailServerPort;
	}

	public boolean isValidate() {
		return validate;
	}

	public void setValidate(boolean validate) {
		this.validate = validate;
	}

	public String getFromAddress() {
		String fromAdd = "";
		if (fromAddress != null && fromAddress != "") {
			fromAdd = fromAddress;
		} else {
			fromAdd = userName.split("@")[0]
					+ "@"
					+ mailServerHost.substring(mailServerHost.indexOf(".") + 1,
							mailServerHost.length());
		}
		return fromAdd;
	}

	public void setFromAddress(String fromAddress) {
		this.fromAddress = fromAddress;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public List<String> getToAddress() {
		return toAddress;
	}

	public void addToAddress(String toAddress) {
		if (toAddress == null) {
			this.toAddress = new ArrayList<String>();
		}
		this.toAddress.add(toAddress);
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String textContent) {
		this.content = textContent;
	}

	public List<String> getCcAddress() {
		return ccAddress;
	}

	public void addCcAddress(String ccAddress) {
		if (ccAddress == null) {
			this.ccAddress = new ArrayList<String>();
		}
		this.ccAddress.add(ccAddress);
	}

	public void setToAddress(List<String> toAddress) {
		this.toAddress = toAddress;
	}

	public void setCcAddress(List<String> ccAddress) {
		this.ccAddress = ccAddress;
	}
}


类3
<pre name="code" class="html">package com.main.comm.util;

import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.apache.commons.mail.HtmlEmail;

public class MailUtil {
	/**
	 * 以文本格式发送
	 */
	public synchronized static void sendTextMail(MailProperties mailPro) {
		// 判断是否需要身份认证
		MyAuthenticator authenticator = null;
		Properties pro = mailPro.getProperties();
		// 如果需要身份认证,则创建一个密码验证器
		if (mailPro.isValidate()) {
			authenticator = new MyAuthenticator(mailPro.getUserName(), mailPro
					.getPassword());
		}
		// 根据邮件会话属性和密码验证器构造一个发送邮件的session
		Session sendMailSession = Session
				.getDefaultInstance(pro, authenticator);
		try {
			// 根据session创建一个邮件消息
			MimeMessage mailMessage = new MimeMessage(sendMailSession);
			// 创建邮件发送者地址
			Address from = new InternetAddress(mailPro.getFromAddress());
			// 设置邮件消息的发送者
			mailMessage.setFrom(from);
			// 创建邮件的接收者地址,并设置到邮件消息中
			List<String> to = mailPro.getToAddress();
			List<String> cc = mailPro.getCcAddress();
			mailMessage.setRecipients(Message.RecipientType.TO,
					listToAddressArray(to));

			if (cc != null) {
				mailMessage.setRecipients(Message.RecipientType.CC,
						listToAddressArray(cc));
				// 设置邮件消息的主题
				mailMessage.setSubject(mailPro.getSubject());
				// 设置邮件消息发送的时间
				mailMessage.setSentDate(new Date());
				// 设置邮件消息的主要内容
				String mailContent = mailPro.getContent();
				mailMessage.setText(mailContent);
				// 发送邮件
				Transport.send(mailMessage);
			} else {
				// 设置邮件消息的主题
				mailMessage.setSubject(mailPro.getSubject());
				// 设置邮件消息发送的时间
				mailMessage.setSentDate(new Date());
				// 设置邮件消息的主要内容
				String mailContent = mailPro.getContent();
				mailMessage.setText(mailContent);
				// 发送邮件
				Transport.send(mailMessage);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static Address[] listToAddressArray(List<String> list) {
		Address[] array = new Address[list.size()];
		for (int i = 0; i < list.size(); i++) {
			String str = String.valueOf(list.get(i));
			Address address = null;
			try {
				address = new InternetAddress(str);
			} catch (AddressException e) {
				e.printStackTrace();
			}
			array[i] = address;
		}
		return array;

	}

	/**
	 * 以HTML发送
	 */
	public synchronized static void sendHtmlMail(MailProperties mailPro) {
		// 判断是否需要身份认证
		MyAuthenticator authenticator = null;
		Properties pro = mailPro.getProperties();
		// 如果需要身份认证,则创建一个密码验证器
		if (mailPro.isValidate()) {
			authenticator = new MyAuthenticator(mailPro.getUserName(), mailPro
					.getPassword());
		}
		try {
			// 创建邮件发送者地址
			Address from = new InternetAddress(mailPro.getFromAddress());
			// 根据session创建一个邮件消息
			HtmlEmail htmlEmail = new HtmlEmail();
			// 设置邮件消息的发送者
			htmlEmail.setFrom(from.toString());
			htmlEmail.setTLS(true);
			htmlEmail.setHostName(mailPro.getMailServerHost());
			htmlEmail.setAuthentication(mailPro.getUserName(), mailPro
					.getPassword());
			htmlEmail.setCharset("utf-8");
			// 创建邮件的接收者地址,并设置到邮件消息中
			List<String> to = mailPro.getToAddress();
			List<String> cc = mailPro.getCcAddress();
			for (int i = 0; i < to.size(); i++) {
				htmlEmail.addTo(to.get(i).toString());
			}
			if (cc != null) {
				// 有抄送人
				for (int i = 0; i < to.size(); i++) {
					htmlEmail.addCc(cc.get(i).toString());
				}
				// 设置邮件消息的主题
				htmlEmail.setSubject(mailPro.getSubject());
				// 设置邮件消息发送的时间
				htmlEmail.setSentDate(new Date());
				// 设置邮件消息的主要内容
				String mailContent = mailPro.getContent();
				htmlEmail.setHtmlMsg(mailContent);
				// 发送邮件
				htmlEmail.send();
			} else {
				// 没有抄送人

				// 设置邮件消息的主题
				htmlEmail.setSubject(mailPro.getSubject());
				// 设置邮件消息发送的时间
				htmlEmail.setSentDate(new Date());
				// 设置邮件消息的主要内容
				String mailContent = mailPro.getContent();
				htmlEmail.setHtmlMsg(mailContent);
				// 发送邮件
				htmlEmail.send();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


类4
package com.main.comm.util;


import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;


public class MyAuthenticator extends Authenticator {
<span style="white-space:pre">	</span>String userName=null;   
    String password=null;   
        
    public MyAuthenticator(){   
    }   
    public MyAuthenticator(String username, String password) {    
        this.userName = username;    
        this.password = password;    
    }    
    protected PasswordAuthentication getPasswordAuthentication(){   
        return new PasswordAuthentication(userName, password);   
    }   
}
</pre><pre class="html" name="code">//测试

public static void main(String[] args) {

MailFactory mailFactory = new MailFactory();

mailFactory.sendHtmlMail(subject, content, toAddress,fileName);//fileName带附件邮件

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值