java邮件发送

来源:互联网 发布:wpf编程宝典 编辑:程序博客网 时间:2024/05/21 07:54

类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());}// 根据邮件会话属性和密码验证器构造一个发送邮件的sessionSession 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带附件邮件

}


0 0