- 浏览: 831404 次
- 性别:
- 来自: 北京、四川
文章分类
最新评论
-
sunbeamzheng:
总结的很好,好好看看。 拷贝问题确实很需要注意,特别是影不影响 ...
java深拷贝与浅拷贝 -
xmh8023:
...
获取POST数据的值 -
xmh8023:
我访问别的服务器怎么办?急求
获取POST数据的值 -
xmh8023:
String urlString="http://l ...
获取POST数据的值 -
lv12312:
Tomcat 7的老版本么?有bug的,https://iss ...
JMX问题
仅仅实现了基本功能,如果需要有复杂的逻辑,在这个类的基础上进行扩展就行了,比如:邮件内容,邮箱,密码等基本信息放在配置文件里;实现群发引用该类,隔几秒发送一封邮箱灯等
下面是一个应用,这只是部分代码:
package cn.test; import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; 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; /** * Nov 26, 2008 */ public class SendMail { /** * 授权,可以理解为用户登录吧 * */ public class MyAuthenticator extends Authenticator{ String username=null; String password=null; public MyAuthenticator(){} public PasswordAuthentication check(String userName,String pwd){ username=userName; password=pwd; return getPasswordAuthentication(); } protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(username, password); } } public boolean send(){ boolean result=false; Properties props = new Properties(); String smtpUser="qinshuangping@163.cn"; String smtpPwd="****"; String to="shuangping2003@163.com"; props.put("mail.smtp.host", "smtp.canofy.cn"); props.put("mail.smtp.user", smtpUser); props.put("mail.smtp.password", smtpPwd); //有了这条语句才能通过验证,否则会出错 props.put("mail.smtp.auth", "true"); MyAuthenticator auth=new MyAuthenticator(); PasswordAuthentication pop=auth.check(smtpUser, smtpPwd); Session mailSession=Session.getDefaultInstance(props,auth); MimeMessage mimeMessage=new MimeMessage(mailSession); try { //发件人 mimeMessage.setFrom(this.getInternetAddress(smtpUser)); //收件人 Message.RecipientType.TO 发送,Message.RecipientType.CC 抄送,Message.RecipientType.BCC 暗送 mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(to)); //标题 mimeMessage.setSubject("title"); //时间 mimeMessage.setSentDate(new Date()); //设置内容显示 BodyPart mdp=new MimeBodyPart(); mdp.setText(this.getContent()); //内容以text/html形式发送 // mdp.setContent(this.getContent(), "text/html;charset=gb2312"); Multipart mp=new MimeMultipart(); mp.addBodyPart(mdp); mimeMessage.setContent(mp); mimeMessage.saveChanges(); //发送邮件 Transport transport=mailSession.getTransport("smtp"); transport.send(mimeMessage); // Transport.send(mimeMessage); result=true; } catch (Exception e) { // System.out.println(e.getMessage()); e.printStackTrace(); } return result; } public InternetAddress getInternetAddress(String mail) throws Exception{ return new InternetAddress(mail); } /** * 获取邮件内容 * @return */ public String getContent(){ String result=""; result="content"; return result; } /** * 获取邮件地址 * @return */ public String getMainAddr(){ String result=""; return result; } /** * 获取邮件标题 * @return */ public String getMailTitle(){ String result=""; return result; } public static void main(String[] args){ SendMail sm=new SendMail(); if(sm.send()){ System.out.println("发送成功"); }else{ System.out.println("发送失败"); } } }
下面是一个应用,这只是部分代码:
package cn.mail; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Timer; import java.util.TimerTask; import org.apache.log4j.Logger; import jp.mail.SendMail; /** * Sep 28, 2008 */ public class TaskSend extends Thread { private Logger logger=Logger.getLogger(TaskSend.class); private List mailList = new ArrayList();//发邮件列表 private HashMap sendedMailMap = new HashMap();//已发送的邮件列表 private HashMap errorMailMap = new HashMap();//已发错了的邮件列表 public void run() { String currentPath = System.getProperty("user.dir"); // 当前路径 String path_content = currentPath + "/mailContent.txt";//邮件内容 String path_title = currentPath + "/mailTitle.txt";//邮件主题 String path1 = currentPath + "/mailList.txt"; //发邮件列表 String path2 = currentPath + "/sendedList.txt"; //已发送的邮件列表 String path_error = currentPath + "/errorMail.txt"; //失败的邮件列表 //读邮件列表 this.getSendMailList(path1, path2, path_error); String title = this.getFileContent(path_title); String content= this.getFileContent(path_content); //logger.info("邮件主题:" + title); //logger.info("邮件内容:" + content); long begin = System.currentTimeMillis(); String userName=""; String mail=""; boolean isresult = true; int len=mailList.size(); int errCount = 0; String line = ""; try{ SendMail send = null; logger.info("begin......."); for(int i=0;i<len;i++){ logger.error("total=" + len + " current=" + (i+1)); line = mailList.get(i).toString(); String temp[] = line.split("\t"); if(temp.length<2) continue; userName = temp[0]; mail = temp[1]; logger.info("stop=" + i); sleep(1 * 1000 ); // if(i!=0 && i%200==0){ // logger.info("stop=" + i); // sleep(10 * 1000 ); // } send = new SendMail(); send.setContent(content.replaceAll("###USERNAME###", userName)); send.setTitle(title); send.setRecipients(mail); logger.info(line); if(send.send()){ //发送成功 this.writeFile(path2, line+"\r\n"); }else{ errCount++; //发送10次失败了 if(errCount==3){ errCount=0; // return 0; sleep(5 * 1000 ); } //发送失败 this.writeFile(path_error, line+"\r\n"); } } logger.info("end......."); }catch(Exception e){ logger.error("发邮件失败:" + line, e); } long end = System.currentTimeMillis(); logger.error("全部发送完毕,共用时:"+(end-begin)); // return 9; } /** * 获取发邮件列表 * @param path1 * @param path2 */ public void getSendMailList(String path1, String path2, String path3){ //读发邮件列表 this.readMailList(path1); //读已成功发送的邮件列表 this.readSendedMailList(path2); //读已出错的邮件列表 this.readErrorMailList(path3); //如果已发送了的邮件就不再发送了 String key=""; if(this.sendedMailMap!=null && sendedMailMap.size()>0){ int i = 0; while(i < mailList.size()){ //查找如果有则去掉已发邮件项 key = mailList.get(i).toString(); if(sendedMailMap.containsKey(key)){ mailList.remove(i); //System.out.println(i+"="+key); } else i++; } } //处理错误的邮件列表不再发送 key=""; if(this.errorMailMap!=null && this.errorMailMap.size()>0){ int i = 0; while(i < mailList.size()){ //查找如果有则去掉已发邮件项 key = mailList.get(i).toString(); if(errorMailMap.containsKey(key)){ mailList.remove(i); //System.out.println(i+"="+key); } else i++; } } } /** * 读发邮件列表 * @param path * @return */ public boolean readMailList(String path){ boolean isresult=true; InputStream is = null; InputStreamReader isr = null; BufferedReader bf =null; try{ is = new FileInputStream(path); isr = new InputStreamReader(is); bf = new BufferedReader(isr); String line = ""; while((line=bf.readLine())!=null){ //String temp[] = line.split("\t"); mailList.add(line); } bf.close(); isr.close(); is.close(); }catch(Exception e){ logger.error("读邮件列表出错:" + path, e); isresult=false; // } return isresult; } /** * 读已成功发送的邮件列表 * @param path * @return */ public boolean readSendedMailList(String path){ boolean isresult=true; InputStream is = null; InputStreamReader isr = null; BufferedReader bf =null; try{ is = new FileInputStream(path); isr = new InputStreamReader(is); bf = new BufferedReader(isr); String line = ""; while((line=bf.readLine())!=null){ //String temp[] = line.split("\t"); sendedMailMap.put(line, line); } bf.close(); isr.close(); is.close(); }catch(Exception e){ logger.error("读邮件列表出错:" + path, e); isresult=false; // } return isresult; } /** * 出错误发送的邮件列表 * @param path * @return */ public boolean readErrorMailList(String path){ boolean isresult=true; InputStream is = null; InputStreamReader isr = null; BufferedReader bf =null; try{ is = new FileInputStream(path); isr = new InputStreamReader(is); bf = new BufferedReader(isr); String line = ""; while((line=bf.readLine())!=null){ //String temp[] = line.split("\t"); this.errorMailMap.put(line, line); } bf.close(); isr.close(); is.close(); }catch(Exception e){ logger.error("读邮件列表出错:" + path, e); isresult=false; // } return isresult; } /** * 获取文件内容 * @param path * @return */ public String getFileContent(String path){ String context = ""; InputStream is = null; InputStreamReader isr = null; BufferedReader bf =null; try{ is = new FileInputStream(path); isr = new InputStreamReader(is,"utf-8"); bf = new BufferedReader(isr); String line = ""; while((line=bf.readLine())!=null){ context += line; } bf.close(); isr.close(); is.close(); }catch(Exception e){ logger.error("读邮件内容出错:" + path, e); } return context; } /** * 写文件 * @param path * @param content * @return */ public boolean writeFile(String path, String content){ File file = null; try{ file = new File(path); // System.out.println("文件的路径是:" + file); BufferedWriter fileout = new BufferedWriter(new FileWriter(file, true)); fileout.write(content); fileout.flush(); fileout.close(); } catch(Exception e){ logger.error("写文件失败:" + file, e); } // System.out.println("写文件完毕"); return true; } /** * @param args */ public static void main(String[] args) { TaskSend task=new TaskSend(); task.start(); } }
- javamail-1_4_1.zip (2.4 MB)
- 下载次数: 20
- service.rar (331 KB)
- 下载次数: 15
评论
2 楼
mniz
2009-05-08
看了你的文章,我有几个疑问想问下
1、你发送的邮件到了服务器上面,看到你有读取已经发送成功的,在这里你是用什么来判断的?
2、看到你分了好几个类别
这些东西路径怎么不对? 这是什么,你详细说明下吗。看到你下面用这个东西去查找邮件能,File(path1) ?你确定这个path 对了?
能详细的解释下吗 ?如果可以的话,希望在QQ上请教下
793270160
1、你发送的邮件到了服务器上面,看到你有读取已经发送成功的,在这里你是用什么来判断的?
2、看到你分了好几个类别
String currentPath = System.getProperty("user.dir"); // 当前路径 String path_content = currentPath + "/mailContent.txt";//邮件内容 String path_title = currentPath + "/mailTitle.txt";//邮件主题 String path1 = currentPath + "/mailList.txt"; //发邮件列表 String path2 = currentPath + "/sendedList.txt"; //已发送的邮件列表 String path_error = currentPath + "/errorMail.txt"; //失败的邮件列表
这些东西路径怎么不对? 这是什么,你详细说明下吗。看到你下面用这个东西去查找邮件能,File(path1) ?你确定这个path 对了?
能详细的解释下吗 ?如果可以的话,希望在QQ上请教下
793270160
1 楼
mniz
2009-05-08
实现群发引用该类,隔几秒发送一封邮箱灯等
发表评论
-
Java并发编程:volatile关键字解析
2015-07-30 11:30 642转:http://www.cnblogs.com/dolp ... -
Java内存模型
2015-07-29 13:55 9201. 概述 多任务和 ... -
自定义classloader
2015-07-29 13:54 700转:http://tiantian911.iteye.com ... -
自定义ClassLoader实现java应用核心逻辑模块热部署
2015-07-29 13:51 1026转:http://blog.csdn.net/zhangda ... -
java classloader原理初探
2015-07-29 10:14 674转:http://www.cnblogs.com/ ... -
Java 内存分配全面浅析
2015-07-29 08:52 614转:http://blog.csdn.net/shimi ... -
http stream
2014-07-29 16:38 1152StringBuilder sb = new String ... -
Tomcat远程调试
2011-04-09 12:33 1066需要在Tomcat中的catalina.bat中添加如下的一行 ... -
用jmx监控多台服务器(tomcat)
2010-09-08 18:25 4584因为需要写一个后台监控服务器的程序,涉及到jmx,也涉 ... -
call cmd /c start 一点疑问
2010-09-01 10:16 2254call "cmd /c start aaa.bat ... -
Windows计划任务之schtasks
2010-08-30 13:21 3604创建:SCHTASKS /Create /RU SYSTEM ... -
ajax返回值中有中文存在的乱码现象
2010-08-27 16:28 1452ajax返回值中有中文存在的乱码现象,解决就加入下面一行代码即 ... -
MIME TYPE
2010-08-26 16:23 7267最近要做需要在页面上放音频的东西,因此需要用到mime typ ... -
JMX问题
2010-08-20 17:20 5515这个问题貌似是启动tomcat之后就获取不到jmx的链接了,不 ... -
Eclipse控制台乱码
2010-08-05 15:18 4900安装了Eclipse,在运行tomcat时,控制台的中文显示乱 ... -
JMX服务端和客户端的代码
2010-07-27 15:37 3580服务端代码如下 package com.rmi; i ... -
JMX连接Tomcat的JMX测试类
2010-07-27 15:33 3305首先是为了使tomcat支持JMX,必须在tomcat的启动项 ... -
JMX的一个链接类
2010-07-27 09:37 1474package com.pachira.oamp.jmxS ... -
java中文转unicode码
2010-07-22 11:04 43435转载地址:http://www.iteye.com/topic ... -
获取POST数据的值
2010-07-21 14:17 9929当method为POST,Content-Type为 ...
相关推荐
对于初学者来说,理解和掌握JavaMail组件的基本应用是至关重要的,因为这将帮助他们构建出能够处理邮件交互的系统。本文将深入探讨JavaMail的核心概念、主要组件以及如何在实际项目中进行简单应用。 1. **JavaMail ...
JavaMail API 是Java平台上的一个标准扩展库,用于开发能够读写和发送电子邮件的应用程序。这个API的设计目标是实现与邮件服务提供商和具体协议无关的邮件操作,使得开发者可以轻松地在不同邮件系统间进行交互。...
首先,我们要了解JavaMail的基本概念。JavaMail API 提供了 javax.mail 包,其中包含了许多类和接口,如 Session、Store、Folder、Message 和 Transport 等,它们分别代表邮件会话、邮件存储、邮件文件夹、邮件信息...
7. **认证机制**:JavaMail 支持多种身份验证机制,包括基本认证、NTLM、DIGEST-MD5等,以适应各种安全需求。 8. **邮件会话和属性**:邮件会话是JavaMail的核心概念,它封装了与邮件服务器交互所需的所有配置信息...
JavaMail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的功能。这个API包括了多种协议的支持,如SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)。在...
1. **JavaMail 基本概念**:首先,我们会了解 JavaMail 的基本架构和组件,如 Session、Message、Store 和 Transport。Session 是 JavaMail 的核心,用于设置配置信息和提供全局访问点。Message 表示电子邮件,Store...
在Java应用程序中发送电子邮件,通常需要依赖特定的库,JavaMail 就是其中之一。本主题将详细介绍JavaMail以及与之相关的`javamail1_4_5`和`jaf-1_1_1`这两个Jar包。 `javamail1_4_5.jar`是JavaMail的核心库,包含...
使用JavaMail发送邮件的基本步骤如下: 1. 创建一个`Properties`对象,设置SMTP服务器的属性,如主机名、端口、身份验证等。 2. 使用`Session.getInstance()`创建一个`Session`对象,传入上面的属性。 3. 创建一个`...
首先,让我们了解JavaMail的基本组件: 1. **JavaMail API**:这是JavaMail的核心部分,提供了一组接口和类,使得开发者能够与邮件服务器进行交互,包括发送、接收邮件,以及处理附件、MIME类型等内容。 2. **Java...
JavaMail是一种在Java应用程序中发送和接收电子邮件的标准API,它为开发者提供了强大的功能,使得处理邮件变得简单而高效。在JavaMail中,我们主要利用 javax.mail 和 javax.mail.internet 这两个包中的类来实现邮件...
最后,`2008美河原创视频.JavaMail系列讲座1` 可能是一系列视频教程的第一部分,这些教程可能通过实际操作进一步解释 JavaMail 的使用,包括基本概念的演示和复杂场景的处理。 总之,JavaMail 是 Java 平台上强大的...
通过对这些官方示例的深入学习和实践,开发者不仅可以掌握 JavaMail 的基本用法,还能了解如何解决实际开发中遇到的各种邮件处理问题。在使用 JavaMail 1.6.0 的过程中,理解并应用这些知识点将大大提高开发效率和...
在实际应用中,开发者通常会结合 JavaMail API 与 JavaEE 中的 JavaMail Session 组件,或者 Spring Framework 中的 JavaMailSender 接口来集成邮件发送功能。JavaMail 1.4.7 版本虽然较旧,但依然广泛使用,因为其...
JavaMail 是一个开源库,用于在Java应用程序中处理电子邮件。它提供了一组API,使得开发者可以方便地发送、接收和管理邮件。JavaMail API 支持SMTP、POP3、IMAP等多种邮件传输协议,同时也支持MIME标准,能处理复杂...
`Session` 类是JavaMail的核心,它定义了一个基本的邮件会话。所有的邮件操作都需要通过`Session`实例来完成。`Session`对象通过`java.util.Properties`获取配置信息,如邮件服务器地址、用户名、密码等。通常,我们...
JavaMail 是一个强大的开源库,专门用于在Java应用程序中实现电子邮件的发送和接收。它提供了对各种邮件协议的支持,如 Simple Mail Transfer Protocol (SMTP)、Post Office Protocol (POP3) 和 Internet Message ...
在JavaMail 1.4.0版本中,除了基本的SMTP、IMAP和POP3支持外,还可能包含了一些增强功能和错误修复,比如对SSL/TLS加密的支持,这使得邮件通信更加安全。此外,可能还有对MIME(多用途互联网邮件扩展)的支持,MIME...
这个"javamail使用demo示例"是JavaMail官方提供的一个实例集合,旨在帮助开发者更好地理解和应用JavaMail库。下面我们将深入探讨JavaMail的核心概念、主要功能以及如何使用这些示例代码。 一、JavaMail核心概念 1....