- 浏览: 772381 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
corelengine:
好文,支持一下!
在 Spring Web Flow 项目中应用 Hessian 服务 -
corelengine:
感谢分享,不过你的工程太简单了,怎么可以导入eclipse
Spring Web Flow 2.0 入门 例子源码 -
chenrongtao2132:
melody404 写道请教博主一个问题
登录成功以后为什么老 ...
CAS 单点登录安装笔记4 -- asp.net client端的设置 -
chxiaowu:
从头到尾没发现 那里有 cxf bean配置啊。。。。
WebService开发笔记 3 -- 增强访问 WebService 的安全性 -
chxiaowu:
严重: StandardWrapper.Throwable
o ...
WebService开发笔记 3 -- 增强访问 WebService 的安全性
http://www.blogjava.net/shmily432685/archive/2005/12/30/26041.html
http://www.blogjava.net/Crying/archive/2007/09/22/142701.html
re: 使用Spring邮件抽象层发送简单邮件
java 代码
- import java.util.*;
- import javax.mail.*;
- import javax.mail.internet.*;
- import javax.activation.*;
- import java.io.*;
- public class SendMail
- {
- static final String MAIL_HOST = "61.177.95.155";
- static final boolean MAIL_NEEDAUTH = true;
- static final String DEFAULT_MAIL_USER = "lioulb@126.com";
- static final String DEFAULT_MAIL_PASSWORD = ".......";
- static final String DEFAULT_FORMAT = "plain"; //纯文本
- private MimeMessage mimeMsg; //MIME邮件对象
- private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
- private Session session; //邮件会话对象
- private Properties props; //系统属性
- private boolean needAuth; //smtp是否需要认证
- private String userName; //smtp认证用户名和密码
- private String password; //smtp认证密码
- private String mailFormat = DEFAULT_FORMAT; //邮件文本格式
- public SendMail(String host,boolean needAuth,String user,String password)
- { //构造方法
- if(host==null||host.trim().equals(""))
- {
- host = MAIL_HOST;
- }
- setHost(host);
- createMimeMessage();
- setAuth(needAuth);
- if(user==null)
- {
- user = "";
- }
- if(password==null)
- {
- password = "";
- }
- setUser(user,password);
- setFrom(user);
- }
- public SendMail()
- {
- setHost(MAIL_HOST);
- createMimeMessage();
- setAuth(MAIL_NEEDAUTH);
- setUser(DEFAULT_MAIL_USER,DEFAULT_MAIL_PASSWORD);
- setFrom(DEFAULT_MAIL_USER);
- }
- private void setHost(String hostName)
- { //设置smtp的主机地址
- if(props==null)
- {
- props = System.getProperties(); //获得系统属性对象
- }
- props.put("mail.smtp.host",hostName); //设置SMTP主机
- }
- private void setAuth(boolean need)
- { //smtp认证
- if(props==null)
- {
- props = System.getProperties();
- }
- if(need)
- {
- props.put("mail.smtp.auth","true");
- }
- else
- {
- props.put("mail.smtp.auth","false");
- }
- }
- private void setUser(String userName,String password)
- { //设置smtp用户名和密码
- this.userName = userName;
- this.password = password;
- }
- private boolean createMimeMessage()
- { //生成邮件对象
- try
- {
- session = Session.getDefaultInstance(props,null); //获得邮件会话对象
- }
- catch(Exception e)
- {
- e.printStackTrace();
- return false;
- }
- try
- {
- mimeMsg = new MimeMessage(session); //创建MIME邮件对象
- mp = new MimeMultipart();
- return true;
- }
- catch(Exception e)
- {
- e.printStackTrace();
- return false;
- }
- }
- private void setMailFormat(String format)
- { //设置邮件的正文格式 plain:纯文本格式 html:html格式
- if(format==null)
- {
- format = "plain";
- }
- format = format.trim();
- if(format.equals("plain")||format.equals("html"))
- {
- this.mailFormat = "text/"+format;
- }
- else
- {
- this.mailFormat = "text/plain";
- }
- }
- public boolean sendMail(String to,String subject,String body,String format)
- { //发送不带附件,不转发的邮件
- boolean theReturn = true;
- setMailFormat(format);
- // String aLine = Time.getdate()+" "+Time.gettime()+" send: "+this.userName
- //+" "+to+" "+Common.convertToGb(subject);
- String aLine = " send: "+this.userName
- +" "+to+" "+subject;
- if(setSubject(subject)&&setBody(body)&&setTo(to))
- {
- theReturn = sendOut();
- aLine = aLine+" [Success]";
- }
- else
- {
- theReturn = false;
- aLine = aLine+" [Failed]";
- }
- return theReturn;
- }
- public boolean sendMail(String to,String subject,String body)
- {
- return sendMail(to,subject,body,DEFAULT_FORMAT);
- }
- private boolean setSubject(String mailSubject)
- { //设置邮件主题
- try
- {
- //mailSubject = Common.convertToGb(mailSubject);
- mimeMsg.setSubject(mailSubject);
- return true;
- }
- catch(Exception e)
- {
- e.printStackTrace();
- return false;
- }
- }
- private boolean setBody(String mailBody)
- { //设置邮件正文
- try
- {
- //mailBody = Common.convertToGb(mailBody);
- BodyPart bp = new MimeBodyPart();
- bp.setContent(mailBody,this.mailFormat+";charset=GB2312"); //"<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+mailBody
- mp.addBodyPart(bp);
- return true;
- }
- catch(Exception e)
- {
- e.printStackTrace();
- return false;
- }
- }
- private boolean setFrom(String from)
- { //设置发信人地址
- try
- {
- mimeMsg.setFrom(new InternetAddress(from));
- return true;
- }
- catch(Exception e)
- {
- e.printStackTrace();
- return false;
- }
- }
- private boolean setTo(String to)
- { //设置收信人地址
- if(to==null)
- {
- return false;
- }
- try
- {
- mimeMsg.addRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
- return true;
- }
- catch(Exception e)
- {
- e.printStackTrace();
- return false;
- }
- }
- private boolean addFileAffix(String filename)
- { //添加附件
- try
- {
- BodyPart bp = new MimeBodyPart();
- FileDataSource fileds = new FileDataSource(filename);
- bp.setDataHandler(new DataHandler(fileds));
- bp.setFileName(fileds.getName());
- mp.addBodyPart(bp);
- return true;
- }
- catch(Exception e)
- {
- e.printStackTrace();
- return false;
- }
- }
- private boolean setCopyTo(String copyto)
- { //设置转发人地址
- if(copyto==null)
- {
- return false;
- }
- try
- {
- mimeMsg.addRecipients(Message.RecipientType.CC,
- (Address[])InternetAddress.parse(copyto));
- return true;
- }
- catch(Exception e)
- {
- e.printStackTrace();
- return false;
- }
- }
- public int tryToConnect()
- { //连接邮箱 1:连接成功 0:连接失败 -1:已经连接或系统忙
- int theReturn = 0;
- // String aLine = Time.getdate()+" "+Time.gettime()+" Connect: "+this.userName
- //+" "+this.userName+" "+this.password;
- String aLine = " Connect: "+this.userName
- +" "+this.userName+" "+this.password;
- try
- {
- Session mailSession = Session.getInstance(props,null);
- Transport transport = mailSession.getTransport("smtp");
- transport.connect((String)props.get("mail.smtp.host"),this.userName,
- this.password);
- transport.close();
- theReturn = 1;
- aLine = aLine+" [Success]";
- }
- catch(MessagingException e)
- {
- e.printStackTrace();
- theReturn = 0;
- }
- catch(IllegalStateException e)
- {
- e.printStackTrace();
- theReturn = -1;
- }
- catch(Exception e)
- {
- e.printStackTrace();
- theReturn = 0;
- aLine = aLine+" [Failed]";
- }
- return theReturn;
- }
- private boolean sendOut()
- { //发送邮件
- try
- {
- mimeMsg.setContent(mp);
- mimeMsg.saveChanges();
- Session mailSession = Session.getInstance(props,null);
- Transport transport = mailSession.getTransport("smtp");
- transport.connect((String)props.get("mail.smtp.host"),this.userName,
- this.password);
- transport.sendMessage(mimeMsg,mimeMsg.getAllRecipients());
- transport.close();
- return true;
- }
- catch(Exception e)
- {
- e.printStackTrace();
- return false;
- }
- }
- public boolean changePwd(String userName,String newPwd)
- { //修改邮箱密码
- boolean theReturn = false;
- try
- {
- String commond = "passwd "+userName;
- Process process = Runtime.getRuntime().exec(commond);
- BufferedReader br = new BufferedReader(new InputStreamReader(process.
- getInputStream()));
- PrintStream ps = new PrintStream(process.getOutputStream());
- BufferedReader br1 = new BufferedReader(new InputStreamReader(process.
- getErrorStream()));
- char ac[] = new char[1024];
- br1.read(ac);
- ps.println(newPwd);
- ps.flush();
- br1.read(ac);
- ps.println(newPwd);
- ps.flush();
- br1.read(ac);
- if(process.waitFor()==0)
- {
- theReturn = true;
- }
- }
- catch(Exception e)
- {
- e.printStackTrace();
- //e.printStackTrace(System.out);
- System.out.println(e.toString());
- theReturn = false;
- }
- return theReturn;
- }
- public boolean addUser(String userName)
- { //添加邮件用户 (密码默认为空)
- boolean theReturn = false;
- try
- {
- String commond = "/usr/sbin/useradd "+userName+
- " -g mail -d /dev/null -s /bin/false";
- Process process = Runtime.getRuntime().exec(commond);
- BufferedReader br = new BufferedReader(new InputStreamReader(process.
- getInputStream()));
- PrintStream ps = new PrintStream(process.getOutputStream());
- BufferedReader br1 = new BufferedReader(new InputStreamReader(process.
- getErrorStream()));
- char ac[] = new char[1024];
- br1.read(ac);
- if(process.waitFor()==0)
- {
- theReturn = true;
- }
- }
- catch(Exception e)
- {
- e.printStackTrace(System.out);
- theReturn = false;
- }
- return theReturn;
- }
- public boolean addUser(String userName,String pwd)
- { //添加邮件用户
- boolean theReturn = addUser(userName);
- if(theReturn)
- {
- theReturn = changePwd(userName,pwd);
- if(!theReturn)
- { //修改密码失败
- deleUser(userName);
- }
- }
- return theReturn;
- }
- public boolean deleUser(String userName)
- { //删除邮件用户
- boolean theReturn = false;
- try
- {
- String commond = "/usr/sbin/userdel "+userName;
- Process process = Runtime.getRuntime().exec(commond);
- BufferedReader br = new BufferedReader(new InputStreamReader(process.
- getInputStream()));
- PrintStream ps = new PrintStream(process.getOutputStream());
- BufferedReader br1 = new BufferedReader(new InputStreamReader(process.
- getErrorStream()));
- char ac[] = new char[1024];
- br1.read(ac);
- if(process.waitFor()==0)
- {
- theReturn = true;
- }
- }
- catch(Exception exception)
- {
- exception.printStackTrace(System.out);
- theReturn = false;
- }
- return theReturn;
- }
- public static void main(String args[]){
- SendMail myMail=new SendMail();
- System.out.println(myMail.sendMail("oxservice@126.com","this is test","my \n test"));
- }
- }
发表评论
-
Android开发笔记
2009-10-19 09:11 16771.复制数据库文件: D:\Program Files\and ... -
天气预报的 WebService 服务网站
2009-06-29 10:53 0http://www.webxml.com.cn/WebSer ... -
在 Spring Web Flow 项目中应用 Hessian 服务
2009-05-21 11:19 2611原来作的一个项目因为页面跳转比较多,应用了S ... -
Spring Web Flow 2.0 入门 例子源码
2008-12-22 11:34 11828developerWorks 中有一篇教材讲解了 Spr ... -
JAD反编译工具
2008-05-29 11:33 5079This is README file for Jad - t ... -
压力测试与系统调优
2008-05-04 16:19 2359最近用loadrunne ... -
通过压力测试排查Bug(二)--排查Bug
2008-05-04 11:44 1855最近的一个项目 ... -
通过压力测试排查Bug(一)--测试过程
2008-05-04 11:05 1649最近的一个项目应用了Acegi作为安全框架,项目试运 ... -
WebService开发笔记 3 -- 增强访问 WebService 的安全性
2008-03-19 09:50 21893在WebService开发笔记 1中我们创建了一个WebSer ... -
WebService开发笔记 2 -- VS 2005 访问WebServcie更简单
2008-03-12 19:32 11222WebService开发笔记 2 -- VS 2005 访问W ... -
WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单
2008-03-12 18:37 27593WebService开发笔记 1 -- 利用cxf开发WebS ... -
Tomcat 配置 -- 打开中文文件名的附件
2008-03-04 10:23 1987设计了文件上传的工具,但在Tomcat服务器上访问中文文件名的 ... -
常用的System.getProperty()
2008-03-02 11:53 29常用的System.getProperty()System.g ... -
CAS 单点登录安装笔记4 -- asp.net client端的设置
2008-03-02 11:51 16548CAS 单点登录安装笔记4 --- asp.net clien ... -
CAS 单点登录安装笔记3 -- 与acegi集成
2008-02-28 23:38 8330CAS 单点登录安装笔记3 -- 与acegi集成 在我的项 ... -
CAS 单点登录安装笔记2 -- 配置CAS,访问自己的用户表
2008-02-27 17:45 7049CAS 单点登录安装笔记2 1.修改cas/webapp/ ... -
CAS 单点登录安装笔记1 -- 基本设置与数字证书的安装
2008-02-26 16:35 5749安装JA-SIG SSO系统笔记1 (关于配置访问数据库的用 ... -
JAVA文档
2007-12-19 16:05 1210JAVA相关文档 http://www.lybbs.net/n ... -
Tomcat性能调优(2)
2007-12-19 15:37 2962原文出处:http://www.lybbs.n ... -
Spring 通过 Tomcat 6.0 下的数据源连接池 访问Oracle数据库
2007-12-17 18:26 6003头疼的老问题,折腾了一天,tomcat6.0数据源配置 to ...
相关推荐
Spring邮件抽象层是Spring框架提供的一套用于发送电子邮件的高级接口,它隐藏了与底层邮件系统交互的复杂性,使得开发者能够以一种简洁的方式发送邮件。这个抽象层主要包含在`org.springframework.mail`包中,提供了...
Spring邮件抽象层的主要包为org.springframework.mail。它包括了发送电子邮件的主要接口MailSender,和值对象SimpleMailMessage,它封装了简单邮件的属性如from, to,cc, subject,text。 包里还包含一棵以...
此外,Spring的邮件抽象层还有一套异常处理机制,以更好地封装和处理邮件系统可能出现的异常。 使用Spring发送邮件的基本步骤如下: 1. 添加Spring核心库和相关的邮件发送库(如JavaMail API)到项目依赖中。 2. ...
总的来说,Spring集成邮件服务使得在Java应用中发送邮件变得简单且灵活。通过合理的配置和编程,你可以实现各种复杂的邮件需求,比如触发式邮件、批量邮件、包含动态内容的邮件等。这个过程涉及的技术和概念对于任何...
Spring 整合 Quartz 定时发送邮件是一种常见的任务调度场景,用于定期执行如发送通知、报告等操作。Quartz 是一个开源的作业调度框架,它允许开发者创建、调度和管理任务。而Spring作为一个强大的企业级应用开发框架...
在这个场景中,Spring 提供了电子邮件服务的抽象层,使得发送邮件变得简单。 2. **FreeMarker**:FreeMarker 是一个基于模板的 Java 模板引擎,常用于生成动态 HTML、XML 或其他文本格式的文档。在这里,我们使用 ...
1. **邮件服务**:在Spring中,可以使用`JavaMailSender`接口来发送邮件,结合`SimpleMailMessage`对象定义邮件内容。 2. **异步处理**:通过集成ActiveMQ,可以创建一个消息生产者,将发送邮件的任务作为一个消息...
- 使用`JavaMailSender`发送邮件,如: ```java SimpleMailMessage mail = new SimpleMailMessage(); mail.setTo("recipient@example.com"); mail.setSubject("测试邮件"); mail.setText("这是一封测试邮件");...
总结起来,Spring结合JavaMail API发送邮件的过程主要包括:配置`JavaMailSender` bean,创建邮件消息对象,设置邮件内容和属性,最后通过`JavaMailSender`实例发送邮件。通过这种方式,开发者可以轻松地在Spring...
Spring Mail则是在这个API之上提供了一层抽象,使得邮件发送的代码更加简洁和易于管理。 1. **配置Spring Mail**: 在Spring应用中配置Spring Mail通常涉及以下步骤: - 添加依赖:确保项目中包含了`spring-...
首先,Spring支持两种方式发送邮件:一是使用JavaMailSender接口,二是通过JavaMailSenderImpl类和MailSenderUtils工具类。这两种方法都基于JavaMail API,但Spring提供了一层抽象,使得邮件发送的代码更加简洁和...
2. **多线程处理**:为了提高群发效率,可以使用多线程并发发送邮件。但是,过多的并发可能会触发邮件服务商的反垃圾邮件策略,因此需要适当控制并发数量。 3. **错误处理和重试机制**:在群发过程中,可能会遇到...
Spring 框架使用 JavaMailSender 接口为发送邮件提供了一个简单的抽象,并且 Spring Boot 也为它提供了自动配置和一个 starter 模块。如果 spring.mail.host 和相关的库(通过 spring-boot-starter-mail 定义)都...
Spring邮件抽象层的主要包为org.springframework.mail。它包括了发送电子邮件的主要接口MailSender(实现类为org.springframework.mail.javamail.JavaMailSenderImpl,下面会用到改实现类)和封装了简单邮件属性的值...
有了配置后,我们可以通过Spring的`JavaMailSender`接口来发送邮件。下面是一个简单的示例,展示了如何创建并发送一封带有文本内容的邮件: ```java @Autowired private JavaMailSender javaMailSender; public ...
在Java中,发送邮件通常使用JavaMail API。Spring提供了一个更高级别的抽象,即`JavaMailSender`接口,它简化了邮件发送的过程。在这个例子中,我们将使用Spring的邮件服务来发送HTML格式的邮件。 4. **HTML格式的...
通过Spring的抽象层,我们可以方便地集成各种邮件服务提供商,如Gmail、Yahoo等,而无需直接处理复杂的JavaMail API。本篇文章将深入探讨如何在Spring中使用Spring Mail进行电子邮件的发送。 首先,我们需要在项目...