java邮件
来源:互联网 发布:傲剑紫霞神功数据 编辑:程序博客网 时间:2024/05/22 11:42
恶魔之java邮件–简单易操作
配置
- pom.xml配置
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version>1.4</version> </dependency>
代码示例
- SendMail .java
package aaa;import java.io.File;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.Address;import javax.mail.Authenticator;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.PasswordAuthentication;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;import javax.mail.internet.MimeUtility;public class SendMail { private String username = null; private String password = null; private Authenticator auth = null; private MimeMessage mimeMessage =null; private Properties pros = null; private Multipart multipart = null; private BodyPart bodypart= null; /** * 初始化账号密码并验证 * 创建MimeMessage对象 * 发送邮件必须的步骤:1 * @param username * @param password */ public SendMail(String username,String password){ this.username = username; this.password = password; } /** * 初始化MimeMessage对象 * 发送邮件必须的步骤:3 */ public void initMessage(){ this.auth = new Email_Autherticator(); Session session = Session.getDefaultInstance(pros,auth); session.setDebug(true); //设置获取 debug 信息 mimeMessage = new MimeMessage(session); } /** * 设置email系统参数 * 接收一个map集合key为string类型,值为String * 发送邮件必须的步骤:2 * @param map */ public void setPros(Map<String,String> map){ pros = new Properties(); for(Map.Entry<String,String> entry:map.entrySet()){ pros.setProperty(entry.getKey(), entry.getValue()); } } /** * 验证账号密码 * 发送邮件必须的步骤 * @author Administrator * */ public class Email_Autherticator extends Authenticator { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } } /** * 设置发送邮件的基本参数(去除繁琐的邮件设置) * @param sub 设置邮件主题 * @param text 设置邮件文本内容 * @param rec 设置邮件接收人 * @throws MessagingException * @throws UnsupportedEncodingException */ public void setDefaultMessagePros(String sub,String text,String rec) throws MessagingException, UnsupportedEncodingException{ mimeMessage.setSubject(sub); mimeMessage.setText(text); mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(rec)); mimeMessage.setSentDate(new Date()); mimeMessage.setFrom(new InternetAddress(username,username)); } /** * 设置主题 * @param subject * @throws MessagingException */ public void setSubject(String subject) throws MessagingException{ mimeMessage.setSubject(subject); } /** * 设置日期 * @param date * @throws MessagingException */ public void setDate(Date date) throws MessagingException{ mimeMessage.setSentDate(new Date()); } /** * 设置邮件文本内容 * @param text * @throws MessagingException */ public void setText(String text) throws MessagingException{ mimeMessage.setText(text); } /** * 设置邮件头部 * @param arg0 * @param arg1 * @throws MessagingException */ public void setHeader(String arg0,String arg1) throws MessagingException{ mimeMessage.setHeader(arg0, arg1); } /** * 设置邮件接收人地址 <单人发送> * @param recipient * @throws MessagingException */ public void setRecipient(String recipient) throws MessagingException{ mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient)); } /** * 设置邮件接收人地址 <多人发送> * @param list * @throws MessagingException * @throws AddressException */ public String setRecipients(List<String> recs) throws AddressException, MessagingException{ if(recs.isEmpty()){ return "接收人地址为空!"; } for(String str:recs){ mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(str)); } return "加入接收人地址成功!"; } /** * 设置邮件接收人地址 <多人发送> * @param StringBuffer<parms,parms2,parms.....> * @throws MessagingException * @throws AddressException */ @SuppressWarnings("static-access") public String setRecipients(StringBuffer sb) throws AddressException, MessagingException{ if(sb==null||"".equals(sb)){ return "字符串数据为空!"; } Address []address = new InternetAddress().parse(sb.toString()); mimeMessage.addRecipients(Message.RecipientType.TO, address); return "收件人加入成功"; } /** * 设置邮件发送人的名字 * @param from * @throws UnsupportedEncodingException * @throws MessagingException */ public void setFrom(String from) throws UnsupportedEncodingException, MessagingException{ mimeMessage.setFrom(new InternetAddress(username,from)); } /** * 发送邮件<单人发送> * return 是否发送成功 * @throws MessagingException */ public String sendMessage() throws MessagingException{ Transport.send(mimeMessage); return "success"; } /** * 设置附件 * @param file 发送文件的路径 */ public void setMultipart(String file) throws MessagingException, IOException{ if(multipart==null){ multipart = new MimeMultipart(); } multipart.addBodyPart(writeFiles(file)); mimeMessage.setContent(multipart); } /** * 设置附件<添加多附件> * @param fileList<接收List集合> * @throws MessagingException * @throws IOException */ public void setMultiparts(List<String> fileList) throws MessagingException, IOException{ if(multipart==null){ multipart = new MimeMultipart(); } for(String s:fileList){ multipart.addBodyPart(writeFiles(s)); } mimeMessage.setContent(multipart); } /** * 发送文本内容,设置编码方式 * <方法与发送附件配套使用> * <发送普通的文本内容请使用setText()方法> * @param s * @param type * @throws MessagingException */ public void setContent(String s,String type) throws MessagingException{ if(multipart==null){ multipart = new MimeMultipart(); } bodypart = new MimeBodyPart(); bodypart.setContent(s, type); multipart.addBodyPart(bodypart); mimeMessage.setContent(multipart); mimeMessage.saveChanges(); } /** * 读取附件 * @param filePath * @return * @throws IOException * @throws MessagingException */ public BodyPart writeFiles(String filePath)throws IOException, MessagingException{ File file = new File(filePath); if(!file.exists()){ throw new IOException("文件不存在!请确定文件路径是否正确"); } bodypart = new MimeBodyPart(); DataSource dataSource = new FileDataSource(file); bodypart.setDataHandler(new DataHandler(dataSource)); //文件名要加入编码,不然出现乱码 bodypart.setFileName(MimeUtility.encodeText(file.getName())); return bodypart; } /*qq用户发送邮件*/ public static void SendQQEmail(List<String> list,List<String> fileList,String subject,String content) throws Exception{ Map<String,String> map= new HashMap<String,String>(); SendEmail mail = new SendEmail("username", "password"); map.put("mail.smtp.host", "smtp.qq.com"); map.put("mail.smtp.auth", "true"); map.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); map.put("mail.smtp.port", "465"); map.put("mail.smtp.socketFactory.port", "465"); mail.setPros(map); mail.initMessage(); mail.setRecipients(list); mail.setSubject(subject); mail.setDate(new Date()); mail.setFrom("验证邮件发送"); mail.setContent(content, "text/html; charset=UTF-8"); System.out.println(mail.sendMessage()); } /*新浪用户发送邮件*/ public static void SendSinaEmail(List<String> list,List<String> fileList,String subject,String content) throws Exception{ Map<String,String> map= new HashMap<String,String>(); SendEmail mail = new SendEmail("username", "password"); map.put("mail.smtp.host","smtp.sina.com");//存储发送邮件服务器的信息 map.put("mail.smtp.auth", "true"); map.put("mail.smtp.socketFactory.class", "javax.net.SocketFactory"); map.put("mail.smtp.port", "25"); map.put("mail.smtp.socketFactory.port", "25"); mail.setPros(map); mail.initMessage(); mail.setRecipients(list); mail.setSubject(subject); mail.setDate(new Date()); mail.setFrom("验证邮件发送"); mail.setContent(content, "text/html; charset=UTF-8"); System.out.println(mail.sendMessage()); } /*阿里云用户发送邮件*/ public static void SendAliyunEmail(List<String> list,List<String> fileList,String subject,String content) throws Exception{ Map<String,String> map= new HashMap<String,String>(); SendEmail mail = new SendEmail("username","password"); map.put("mail.smtp.host", "smtp.owlbest.com"); map.put("mail.smtp.auth", "true"); map.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); map.put("mail.smtp.port", "465"); map.put("mail.smtp.socketFactory.port", "465"); mail.setPros(map); mail.initMessage(); mail.setRecipients(list); mail.setSubject(subject); mail.setDate(new Date()); mail.setFrom("xxxxxx"); mail.setContent(content, "text/html; charset=UTF-8"); System.out.println(mail.sendMessage()); } public static void main(String[] args) throws Exception { List<String> list = new ArrayList<String>(); list.add("xxx@qq.com"); list.add("xxx@qq.com"); SendSinaEmail(list , null, "邮件发送成功了嘛", "发送失败了"); }}class Email_Authenticator extends Authenticator { String userName = null; String password = null; public Email_Authenticator() { } public Email_Authenticator(String username, String password) { this.userName = username; this.password = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(userName, password); }}
阅读全文
0 0
- java邮件
- java 邮件
- java邮件
- java邮件
- Java邮件
- java邮件
- [java]Java发送邮件
- 实战java发邮件
- 实战java发邮件
- 实战java发邮件
- 用java发送邮件
- java邮件收发
- 用Java发送邮件
- java发送邮件源码
- 实战java发邮件
- java发送邮件
- 实战java发邮件
- java 邮件服务
- Spring-Boot项目实现热部署
- 服务器
- 一个Java对象到底占用多大内存?
- 自定义在springMvc中实现struts2的赋值操作
- 双向可控硅在交流调压电路中的使用
- java邮件
- 整数中1出现的次数(从1到n整数中1出现的次数)(java版)
- hibernate入门之环境准备,以及第一个例子。
- 二叉搜索树转换为双向链表
- PHP哈希表碰撞攻击原理
- 开发者入门必读:最值得看的十大机器学习公开课
- Android存储---SQLite数据库存储
- 软考笔记0608
- 19 linux字符设备驱动