- 浏览: 233372 次
- 性别:
- 来自: 我也来自火星?
文章分类
最新评论
-
chengUFO:
Test tes = c.newInstance();执行以上 ...
自定义ClassLoader -
lliiqiang:
资料太少了,伪造客户端和事先标准以外数据为攻击,其它的是bug ...
Openlaszlo调用JavaRPC和JAVA类通信 -
tianshaojie:
楼主,为什么我安装你的方法建立工程后,访问就出错,我用的是ta ...
Tapestry4入门 -
panshunchang:
发帖过程这么辛苦,还要回答一大堆问题,受不了了
[常用代码整理]JAVA反射 -
活靶子:
生成一个join的SQL语句
SELECT items.* F ...
Better looking URLs with friendly_id
几天来一直在开发一个项目,其中一部分需要用 JavaMail 收发邮件,于是就在网上找了一些相关的源代码,最后经过整理和修改,终于好使了,希望能够给使用 JavaMail 收发邮件的朋友提供一个参考 J
使用 JavaMail 收发邮件只需要下载两个开源的 jar 文件, mail.jar 和 activation.jar, 这两个 jar 包可以很容易的在网上找到,这里就不提供下载链接了。
下面是发送邮件SendMail.java(含附件)代码:
ReceiveMail.java代码如下:
使用 JavaMail 收发邮件只需要下载两个开源的 jar 文件, mail.jar 和 activation.jar, 这两个 jar 包可以很容易的在网上找到,这里就不提供下载链接了。
下面是发送邮件SendMail.java(含附件)代码:
//SendMail.java import javax.mail.*; import javax.mail.internet.*; import java.util.*; import javax.activation.*; public class SendMail ...{ public static void send(String customMailBoxAddress,String username,String password,String serverMailBoxAddress,String subject,String attachmentPath,String attachmentName) ...{ //这里面使用新浪作为发送邮件的邮件服务器,其他的smtp服务器可以到相关网站上查到。 String host = "smtp.sina.com.cn"; //发送方邮箱地址(如BlogJava2006@blog.com.cn.) String from = customMailBoxAddress; //收件人邮箱地址 String to = serverMailBoxAddress; //发送者的邮箱用户名 String user = username; //发送者的邮箱密码 String ps = password; Properties props = new Properties(); //设置发送邮件的邮件服务器的属性(这里使用新浪的smtp服务器) props.put("mail.smtp.host", host); //需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有//这一条) props.put("mail.smtp.auth", "true"); //用刚刚设置好的props对象构建一个session Session session = Session.getDefaultInstance(props); //有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使 //用(有的时候网络连通性不够好,发送邮件可能会有延迟,在这里面会有所//提示,所以最好是加上这句,避免盲目的等待) session.setDebug(true); //定义消息对象 MimeMessage message = new MimeMessage(session); try...{ message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject(subject); // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); //设置邮件的文本内容 BodyPart contentPart = new MimeBodyPart(); contentPart.setText("邮件的具体内容在此"); multipart. addBodyPart(contentPart); //添加附件 BodyPart attachmentPart= new MimeBodyPart(); DataSource source = new FileDataSource(attachmentPath); attachmentPart.setDataHandler(new DataHandler(source)); //注意:下面定义的enc对象用来处理中文附件名,否则名称是中文的附//件在邮箱里面显示的会是乱码, sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); messageBodyPart.setFileName("=?GBK?B?"+enc.encode(attachmentName.getBytes())+"?="); multipart.addBodyPart(messageBodyPart); //将multipart对象放到message中 message.setContent(multipart); //发送邮件 message.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host, username, password); transport.sendMessage(message, message.getAllRecipients()); transport.close(); }catch(Exception e)...{ e.printStackTrace(); } } }
ReceiveMail.java代码如下:
import javax.mail.*; import java.util.*; import java.io.*; public class ReceiveMail ...{ //处理任何一种邮件都需要的方法 private void handle(Message msg) throws Exception ...{ System.out.println("邮件主题:" + msg.getSubject()); System.out.println("邮件作者:" + msg.getFrom()[0].toString()); System.out.println("发送日期:" + msg.getSentDate()); } //处理文本邮件 private void handleText(Message msg) throws Exception ...{ this.handle(msg); System.out.println("邮件内容:"+msg.getContent()); } //处理Multipart邮件,包括了保存附件的功能 private static void handleMultipart(Message msg) throws Exception ...{ String disposition; BodyPart part; Multipart mp = (Multipart) msg.getContent(); //Miltipart的数量,用于除了多个part,比如多个附件 int mpCount = mp.getCount(); for (int m = 0; m < mpCount; m++) ...{ this.handle(msg); part = mp.getBodyPart(m); disposition = part.getDisposition(); //判断是否有附件 if (disposition != null && disposition.equals(Part.ATTACHMENT)) ...{ //这个方法负责保存附件 saveAttach(part); } else ...{ //不是附件,就只显示文本内容 System.out.println(part.getContent()); } } } private static void saveAttach(BodyPart part) throws Exception ...{ //得到未经处理的附件名字 String temp = part.getFileName(); //除去发送邮件时,对中文附件名编码的头和尾,得到正确的附件名 //(请参考发送邮件程序SendMail的附件名编码部分) String s = temp.substring(8, temp.indexOf("?=")); //文件名经过了base64编码,下面是解码 String fileName = base64Decoder(s); System.out.println("有附件:" + fileName); InputStream in = part.getInputStream(); FileOutputStream writer = new FileOutputStream(new File( "保存附件的本地路径"+ "\"+fileName)); byte[] content = new byte[255]; int read = 0; while ((read = in.read(content)) != -1) ...{ writer.write(content); } writer.close(); in.close(); } //base64解码 private static String base64Decoder(String s) throws Exception ...{ sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder(); byte[] b = decoder.decodeBuffer(s); return (new String(b)); } public static void receive(String receiverMailBoxAddress, String username,String password) ...{ //本人用的是yahoo邮箱,故接受邮件使用yahoo的pop3邮件服务器 String host = "pop.mail.yahoo.com.cn"; try ...{ //连接到邮件服务器并获得邮件 Properties prop = new Properties(); prop.put("mail.pop3.host", host); Session session = Session.getDefaultInstance(prop); Store store = session.getStore("pop3"); store.connect(host, username, password); Folder inbox = store.getDefaultFolder().getFolder("INBOX"); //设置inbox对象属性为可读写,这样可以控制在读完邮件后直接删除该附件 inbox.open(Folder.READ_WRITE); Message[] msg = inbox.getMessages(); FetchProfile profile = new FetchProfile(); profile.add(FetchProfile.Item.ENVELOPE); inbox.fetch(msg, profile); for (int i = 0; i < msg.length; i++) ...{ //标记此邮件的flag标志对象的DELETED位为true,可以在读完邮件后直接删除该附件,具体执行时间是在调用 //inbox.close()方法的时候 msg[i].setFlag(Flags.Flag.DELETED, true); handleMultipart(msg[i]); System.out.println("****************************"); } if (inbox != null) ...{ //参数为true表明阅读完此邮件后将其删除,更多的属性请参考mail.jar的API inbox.close(true); } if (store != null) ...{ store.close(); } } catch (Exception e) ...{ e.printStackTrace(); } } }
发表评论
-
vim补全
2009-10-13 16:42 0引用VIM自动不齐不需要特殊配置,只需要打开 filetype ... -
一次小项目的思考
2009-08-20 23:11 3450最近的一个项目,四个 ... -
IntelliJ Idea插件Jetty Integration恢复开发
2009-08-19 14:34 3583今天在je上面看到了一条新闻 Google 选择 Jetty, ... -
PowerDesigner 中将Comment(注释)及Name(名称)内容互相COPY的VBS代码
2009-07-30 14:05 2259在用PowerDesigner时.常常在NAME或Commen ... -
使用VisualSVN Server构建自己的版本库
2008-12-16 16:13 1705VisualSVN Server是用于Subversion管理 ... -
在laszlo方法中使用参数
2006-03-22 14:56 963<canvas debug="true&quo ... -
openlasz入门---openlaszlo环境的建立
2006-04-11 22:09 1699关于openlaszlo的介绍网站上面也蛮多了,所以,在这里也 ... -
Openlaszlo调用JavaRPC和JAVA类通信
2006-04-20 10:31 1837JavaRPC允许Laszlo客户端远程调用服务端的JAVA类 ... -
FCKEditor使用说明
2007-02-17 13:53 14971. FCKeditor 介绍 FCKeditor 这个开源的 ... -
一个不错的开源数据库H2
2007-02-17 14:10 1496H2是一个采用Java开发开源的嵌入式SQL数据库。它支持集群 ... -
JAVA获取系统当前的用户
2007-03-02 17:15 6732public class Test { ... -
FCKeditor插件开发
2007-03-23 21:45 2963FCKeditor插件开发建立 ... -
Idea8试用
2008-03-23 21:56 1667刚刚在新闻频道看到关于Idea的新闻,对它的javascrip ... -
HtmlUnit测试页面
2008-03-02 22:29 9886HtmlUnit简介:引自 www.open-open.com ... -
java的数据结构
2007-11-11 19:04 1490线性表,链表,哈希表是常用的数据结构,在进行Java开发时,J ... -
P6SPY监控数据库性能
2007-11-11 18:51 2931P6SPY监控数据库性能 P6SPY通过对JDBC API的 ... -
Idea7.0注册机
2007-10-20 22:55 3231Idea7.0注册机 -
[转]普元JS验证
2007-09-16 22:25 1685* -------------------------- ... -
Apache和Subversion搭建版本控制环境
2007-08-03 23:40 15351. 安装Apache2.0.59(Apache 2.2.4和 ... -
IDEA的RUBY插件试用
2007-07-31 22:21 3877经过http://www.intellij.org.cn站长的 ...
相关推荐
javamail收发邮件(带附件,正文带图).doc
在提供的压缩包文件“james+javaMail收发邮件”中,可能包含了示例代码和配置文件,供开发者参考和学习如何在实际项目中实现邮件收发功能,特别是处理中文内容和附件。通过理解和实践这些示例,开发者可以更好地掌握...
在实际开发中,使用 JavaMail 进行邮件收发的步骤大致如下: 1. 创建 Session 对象,配置邮件服务器的相关信息。 2. 使用 Session 创建 Store 对象,连接到邮件服务器。 3. 打开 Folder,读取或管理邮件。 4. 如果...
#### 二、使用JavaMail收发Gmail邮件 在使用JavaMail进行Gmail邮件的收发时,需要注意几个关键点: 1. **SSL加密**: 为了确保数据的安全传输,通常会使用SSL加密技术。 2. **Gmail的SMTP和POP3设置**: - SMTP服务器...
在JavaMail中,我们可以利用其API来实现邮件的收发功能,包括处理附件。下面我们将详细探讨如何使用JavaMail API实现邮件的收取,特别是如何通过POP3和IMAP协议获取邮件信息。 首先,确保你的项目中已经引入了...
总的来说,JavaMail类库是Java开发人员处理电子邮件的得力工具,无论是简单的文本邮件还是复杂的多媒体邮件,甚至是包含大量附件的邮件,都可以通过其API轻松实现。结合JAF,JavaMail能够优雅地处理各种邮件格式和...
5. 附件处理:JavaMail 提供了 `MimeBodyPart` 类来处理邮件附件。通过创建 `MimeBodyPart`,设置 `DataHandler`,然后将其添加到 `MimeMultipart` 对象中,可以将附件添加到邮件中。 6. 联系人管理:虽然JavaMail...
JavaMail API 是 Java 平台上广泛使用的邮件处理库之一,它允许开发人员通过简单的 API 调用来发送和接收电子邮件,包括支持附件和内嵌图片等功能。 #### 二、邮件的基本结构 邮件由邮件头和邮件体两部分组成: -...
**基于Javamail的邮件收发系统** JavaMail是一个开放源码的API,它为Java程序员提供了一套全面的接口来处理电子邮件。这个系统的设计目的是使得开发者能够方便地发送和接收邮件,包括附件、HTML内容以及MIME多部分...
在这个"javaMail收发邮件经典程序"中,我们将深入探讨如何利用JavaMail库进行邮件的发送和接收,并特别关注添加多个附件、指定多个发送人以及接收邮件附件的操作。 首先,要使用JavaMail,我们需要在项目中引入其...
本篇文章将详细解析使用 JavaMail 收发邮件的基本步骤。 **1. 发送邮件** 发送邮件的关键在于配置 `Session` 和创建 `Message`。以下是详细步骤: ### 1.1 构造 Session - **初始化 Authentication**: 创建一个...
总的来说,JavaMail为Java开发者提供了一个强大的工具,使得收发邮件变得简单。无论是发送简单的文本邮件,还是构建包含多媒体内容的复杂邮件,或者从邮件服务器接收邮件,JavaMail都能胜任。通过合理利用activation...
这个项目主要探讨了如何使用JavaMail API来实现一个高效、稳定的邮件收发系统。下面将详细解析其中涉及的关键知识点。 一、JavaMail API JavaMail API是Java平台上用于处理电子邮件的一组接口和类。它提供了一种...
通过深入理解SMTP和POP3等邮件传输协议,设计出一个简化操作、实用性强的系统,使用户能快速收发邮件,不受时间和地点限制。 1.2 国外发展趋势和现状 电子邮件作为互联网基础服务,全球用户基数庞大,中国也不例外...
在使用JavaMail过程中,可能会遇到网络问题、认证错误或邮件服务器拒绝连接等问题。因此,需要适当地捕获和处理`MessagingException`和其他相关异常。 8. **实战应用**: 以JSP为例,用户可能通过表单提交邮件...
(3) 邮件附件的发送与接受; (4) 删除邮件; 具体操作步骤如下: 1、打开javamailsystem文件夹,找到javamail.jar可执行文件,双击该执行文件,即可打开Javamail邮件收发系统客户端软件。进入该系统后,首先选择...
对于邮件接收,JavaMail 使用 Store 和 Folder 类来连接邮件服务器并获取邮件。你可以选择 POP3 或 IMAP 协议,根据用户的需求,可以设置为只读或读写模式。Folder 对象代表邮件文件夹,如“收件箱”、“已发送”等...
在本文中,我们将深入探讨Java如何实现XML的读写操作以及使用JavaMail API进行邮件收发。 首先,让我们看看Java如何处理XML文件。XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它具有...
本教程将深入探讨如何使用JavaMail实现普通电子邮件以及带有附件的电子邮件的收发。 首先,要使用JavaMail,我们需要引入相关的依赖库,如`javax.mail`和`javax.mail-api`。这些库可以通过Maven或Gradle等构建工具...