Java网络编程:利用Java mail包发送电子邮件
2016-01-12 08:37
399 查看
下面代码是利用Java mail包封装了一个发送邮件的类
使用举例
import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class SendMail { private static final String MAIL_ADDRESS_REGEX = "^[\\w\\.=-]+@[\\w\\.-]+\\.[\\w]{2,3}$"; private String mailServer; private String sender; private String[] receiver; public SendMail(){ } public void setMailBasicInfo(String mailServer,String sender,String receiver){ this.mailServer = mailServer; this.sender = sender; this.receiver =receiver.split(","); } public void setMailBasicInfo(String mailServer,String sender,String[] users){ this.mailServer = mailServer; this.sender = sender; this.receiver = users; } public void setMailBasicInfo(String mailServer,String sender,List<String> users){ this.mailServer = mailServer; this.sender = sender; this.receiver = new String[users.size()]; users.toArray(this.receiver); } public boolean send(String subject, String content, List<String> fileNames) { subject = subject==null?"":subject; content = content==null?"":content; Properties props = new Properties(); props.put("mail.smtp.host", mailServer); Session session = Session.getInstance(props, null); try { InternetAddress[] receiver = getReceiverList(); if (receiver.length == 0) { System.out.println("receiver is null"); return false; } MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(sender)); msg.setRecipients(Message.RecipientType.TO, receiver); msg.setSubject(subject); msg.setSentDate(new Date()); Multipart container = new MimeMultipart(); MimeBodyPart textBodyPart = new MimeBodyPart(); textBodyPart.setContent(content.toString(), "text/html;charset=gbk"); container.addBodyPart(textBodyPart); doAttachFile(container,fileNames); msg.setContent(container); System.out.println("begin send mail"); Transport.send(msg); System.out.println("send mail success"); } catch (MessagingException e) { System.out.println("send mail fail"); System.out.println(e); return false; } catch(Exception e){ return false; } return true; } public boolean send(String subject, String content){ return send(subject,content,null); } public boolean send(String subject){ return send(subject,null); } private void doAttachFile(Multipart container, List<String> fileNames) throws MessagingException{ if(fileNames==null || fileNames.size()==0) return; for(String filename:fileNames){ File f = new File(filename); if(!f.isFile()) continue; System.out.println("the attach file is:"+filename); MimeBodyPart fileBodyPart = new MimeBodyPart(); FileDataSource fds = new FileDataSource(f);// 要发送的附件地址 fileBodyPart.setDataHandler(new DataHandler(fds)); fileBodyPart.setFileName(fds.getName());// 设置附件的名称 container.addBodyPart(fileBodyPart); } } private InternetAddress[] getReceiverList() throws AddressException { ArrayList<InternetAddress> toList = new ArrayList<InternetAddress>(); for (int i = 0; i < receiver.length; ++i) { if (receiver[i].matches(MAIL_ADDRESS_REGEX)) { toList.add(new InternetAddress(receiver[i])); } } return (InternetAddress[]) toList.toArray(new InternetAddress[toList.size()]); } }
使用举例
String host = "168.xx.xx.xx"; //邮件服务器的地址 String subject = "发送邮件的主题"; String sender = "test@gmail.com"; List<String> receivers = new ArrayList<String>(); receivers.add("user1@263.com"); receivers.add("user2@263.com"); String content = "邮件主题"; SendMail sendMail = new SendMail(); sendMail.setMailBasicInfo(host, sender, receivers); sendMail.send(subject, content, null); //没有附件 正文也可以是html内容,如 String content = "<html>详细信息:<a href='xxxx'>请点击查看!</a></html>";
相关文章推荐
- http://shameant.iteye.com/blog/163007
- HTTP安全验证机制和Spring Security
- 四种方法下载网络文本数据到本地内存
- 使用ImageLoader第三方框架,加载网络图片
- IOS网络Socke(客户端,服务器端)t的简单介绍
- 2MSL TCP三次握手连接与四次握手关闭过程
- 网络基础
- 从http开始说Volley缓存
- 陕西高校试点在线授课 学生可跨校选修学分
- 优化网站的方法1-减少HTTP 请求
- 什么是网络分销?
- tcpdump
- HTTPS研究(1)—https协议入门
- 网络舆情分析师
- slf4j的个人学习--转载自http://www.cnblogs.com/xing901022/p/4149524.html
- HttpClient4.3 关于https 中SSL证书请求问题
- python网络编程(定时器)
- Neural Networks and Deep Learning学习笔记ch3 - 改进神经网络的学习方法
- 网络子系统的调优
- [Python]网络爬虫(六):一个简单的百度贴吧的小爬虫