建站极客
软件编程 java 正文
Java邮件发送程序(可以同时发给多个地址、可以带附件)
所属分类:
软件编程 / java
阅读数:
109
收藏 0
赞 0
分享
发送邮件的主程序 import java.util.Properties; import common.util.Email_Autherticatorbean; import javax.mail.Authenticator; import javax.mail.internet.InternetAddress; import org.apache.commons.lang.StringUtils; import javax.mail.internet.MimeBodyPart; import javax.mail.Multipart; import javax.activation.FileDataSource; import javax.mail.internet.MimeMultipart; import javax.activation.DataHandler; import javax.mail.internet.MimeUtility; import java.util.Date; /** * 利用java.mail的邮件发送程序 */ public class SendMailTest { public static void main(String[] args) { String title = "titleTest";//所发送邮件的标题 String from ="sir_znp@163.com";//从那里发送 String sendTo[] = {"znp@163.net","sir_znp@163.com"};//发送到那里 //邮件的文本内容,可以包含html标记则显示为html页面 String content = "mail test!!!!!!<br><a href=#>aaa</a>"; //所包含的附件,及附件的重新命名 String fileNames[] = {"F:\\music\\text1.txt,text1.txt","F:\\music\\text2.txt,text2.txt"}; try { // MailSender mailsender = new MailSender(); sendmail(title, from, sendTo, content, fileNames,"text/html;charset=gb2312"); } catch (Exception ex) { ex.printStackTrace(); } } public static void sendmail(String subject, String from, String[] to, String text, String[] filenames,String mimeType) throws Exception { //ResourceBundle mailProps = ResourceBundle.getBundle("mail"); 可以从配置文件读取相应的参数 Properties props = new Properties(); String smtp = "smtp.163.com"; //设置发送邮件所用到的smtp String servername = "sir_znp"; String serverpaswd = "123"; javax.mail.Session mailSession; //邮件会话对象 javax.mail.internet.MimeMessage mimeMsg; //MIME邮件对象 props = java.lang.System.getProperties(); //获得系统属性对象 props.put("mail.smtp.host", smtp); //设置SMTP主机 props.put("mail.smtp.auth", "true"); //是否到服务器用户名和密码验证 //到服务器验证发送的用户名和密码是否正确 Email_Autherticatorbean myEmailAuther = new Email_Autherticatorbean(servername, serverpaswd); //设置邮件会话 mailSession = javax.mail.Session.getInstance(props, (Authenticator) myEmailAuther); //设置传输协议 javax.mail.Transport transport = mailSession.getTransport("smtp"); //设置from、to等信息 mimeMsg = new javax.mail.internet.MimeMessage(mailSession); if (!StringUtils.isEmpty(from)) { InternetAddress sentFrom = new InternetAddress(from); mimeMsg.setFrom(sentFrom); //设置发送人地址 } InternetAddress[] sendTo = new InternetAddress[to.length]; for (int i = 0; i < to.length; i++) { System.out.println("发送到:" + to[i]); sendTo[i] = new InternetAddress(to[i]); } mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo); mimeMsg.setSubject(subject, "gb2312"); MimeBodyPart messageBodyPart1 = new MimeBodyPart(); //messageBodyPart.setText(UnicodeToChinese(text)); messageBodyPart1.setContent(text, mimeType); Multipart multipart = new MimeMultipart();//附件传输格式 multipart.addBodyPart(messageBodyPart1); for (int i = 0; i < filenames.length; i++) { MimeBodyPart messageBodyPart2 = new MimeBodyPart(); //选择出每一个附件名 String filename = filenames[i].split(",")[0]; System.out.println("附件名:" + filename); String displayname = filenames[i].split(",")[1]; //得到数据源 FileDataSource fds = new FileDataSource(filename); //得到附件本身并至入BodyPart messageBodyPart2.setDataHandler(new DataHandler(fds)); //得到文件名同样至入BodyPart //messageBodyPart2.setFileName(displayname); // messageBodyPart2.setFileName(fds.getName()); messageBodyPart2.setFileName(MimeUtility.encodeText(displayname)); multipart.addBodyPart(messageBodyPart2); } mimeMsg.setContent(multipart); //设置信件头的发送日期 mimeMsg.setSentDate(new Date()); mimeMsg.saveChanges(); //发送邮件 transport.send(mimeMsg); transport.close(); } } 验证类 package common.util; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class Email_Autherticatorbean extends Authenticator { private String m_username = null; private String m_userpass = null; public void setUsername(String username) { m_username = username; } public void setUserpass(String userpass) { m_userpass = userpass; } public Email_Autherticatorbean(String username, String userpass) { super(); setUsername(username); setUserpass(userpass); } public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(m_username,m_userpass); } }
Java正则判断日期格式是否正确的方法示例 这篇文章主要介绍了Java正则判断日期格式是否正确的方法,结合实例形式分析了Java针对日期字符串正则判断的相关操作技巧,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
java Future 接口使用方法详解 这篇文章主要介绍了java Future 接口使用方法详解,Future接口是Java线程Future模式的实现,可以来进行异步计算的相关资料,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
Java 读取外部资源的方法详解及实例代码 这篇文章主要介绍了Java 读取外部资源的方法详解及实例代码的相关资料,经常有读取外部资源的要求,如配置文件等等需要读取,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
Java正则表达式之split()方法实例详解 这篇文章主要介绍了Java正则表达式之split()方法,结合实例形式较为详细的分析了split方法的功能、使用方法及相关注意事项,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
Java 存储模型和共享对象详解 这篇文章主要介绍了Java 存储模型和共享对象详解的相关资料,对Java存储模型,可见性和安全发布的问题是起源于Java的存储结构及共享对象安全,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
Java使用正则表达式实现找出数字功能示例 这篇文章主要介绍了Java使用正则表达式实现找出数字功能,结合实例形式分析了Java针对数字的匹配查找及非数字替换操作相关实现技巧,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
详解Spring AOP 拦截器的基本实现 本篇文章主要介绍了详解Spring AOP 拦截器的基本实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
评论 0
收藏 0
赞 0
分享
查看更多