网站首页站长博客下载中心域名交易站长论坛域名主机免费电邮免费域名中文排行排名查询站长书库书籍教程下载
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
学院首页 网络编程 网页设计 图形图象 数 据 库 服 务 器 网络媒体 网络安全 个人专栏 站长CLUB 业界新闻 信息公告
 当前位置:首页 >> 服 务 器 >> Mail服务器 >> 正文
公告通知
返回上级列表
资料搜索
相关文章
通过E-mail 共享Java 对象
[ 来源:不详 | 作者:无从考证 | 时间:2005-8-19 15:08:19 | 浏览:人次 ]
收藏到新浪ViVi 收藏到365KEY 收藏到我摘  字号选择〖    〗/ 双击滚屏 单击停止  

1 public class Codecs {
2 private Codecs() {} // do not instantiate this class
3 public final static String base64Encode(String strInput) {
4 if (strInput == null) return null;
5 byte byteData[] = new byte[strInput.length()];
6 strInput.getBytes(0, strInput.length(), byteData, 0);
7 return new String(base64Encode(byteData), 0);
8 }
9 public final static byte[] base64Encode(byte[] byteData) {
10 if (byteData == null) return null;
11 int iSrcIdx; // index into source (byteData)
12 int iDestIdx; // index into destination (byteDest)
13 byte byteDest[] = new byte[((byteData.length+2)/3)*4];
14 for (iSrcIdx=0, iDestIdx=0; iSrcIdx >> 2) & 077);
16 byteDest[iDestIdx++] = (byte) ((byteData[iSrcIdx+1] >>> 4) & 017 |
(byteData[iSrcIdx] << 4) & 077); 17 byteDest[iDestIdx++]="(byte)" ((byteData[iSrcIdx+2]>>> 6) & 003 |
(byteData[iSrcIdx+1] << 2) & 077); 18 byteDest[iDestIdx++]="(byte)" (byteData[iSrcIdx+2] & 077); 19 } 20 if (iSrcIdx < byteData.length) { 21 byteDest[iDestIdx++]="(byte)" ((byteData[iSrcIdx]>>> 2) & 077);
22 if (iSrcIdx >> 4) & 017 |
(byteData[iSrcIdx] << 4) & 077); 24 byteDest[iDestIdx++]="(byte)" ((byteData[iSrcIdx+1] << 2) & 077); 25 } 26 else 27 byteDest[iDestIdx++]="(byte)" ((byteData[iSrcIdx] << 4) & 077); 28 } 29 for (iSrcIdx="0;" iSrcIdx < iDestIdx; iSrcIdx++) { 30 if (byteDest[iSrcIdx] < 26) byteDest[iSrcIdx]="(byte)(byteDest[iSrcIdx]" + 'A'); 31 else if (byteDest[iSrcIdx] < 52) byteDest[iSrcIdx]="(byte)(byteDest[iSrcIdx]" + 'a'-26); 32 else if (byteDest[iSrcIdx] < 62) byteDest[iSrcIdx]="(byte)(byteDest[iSrcIdx]" + '0'-52); 33 else if (byteDest[iSrcIdx] < 63) byteDest[iSrcIdx]="+" ; 34 else byteDest[iSrcIdx]="/" ; 35 } 36 for ( ; iSrcIdx < byteDest.length; iSrcIdx++) 37 byteDest[iSrcIdx]="=" ; 38 return byteDest; 39 } 40 } 


1-2定义public的Codecs类和一个不能被用户调用的构造函数。通常,这个类不应被例示。

3-8定义一个encodeBase64()方法函数。它的参数类型是String类型,返回Base64编码的String。 它通过调用String。getBytes()并将结果数组传送至encodeBase64(byte[])来完成函数的 功能。

9-39定义一个encodeBase64()方法函数。参数为字符数组,返回Base64编码的数组数组。

10如果参数值为null,退出方法函数。

11-13定义工作变量,其中字节Dest数组包含了返回调用者的编码。注意,转换后的数组 比输入数组大约大三分之一。这是因为每个三字节s组被转换成四个字节。

14-19循环遍历整个输入数组,每次24比特,把这三个8比特组转换成四个两两之间相距二 比特的6比特组。这段代码比最初出现时简单。仔细学习,看看和前面的例子有什么不同。

20-28如果输入数组的字节s数目不是3的倍数,则转换余下的1或2个字节。

29-35把所得的编码数据作为Base64码表的下标。(Base64码表在RFC1521中说明)

36-37把目标串中的没有使用的字符置为'='。

38返回给调用者基于Based64的编码。
  我们已经取得了很重要的进展。到目前为止,我们已能序列化对象并将它放入内存,把它 转化为基于Base64编码,目的是使用E-mail工具将它发给目标用户。作为我们目前进展的 总结,下面有一个代码片断,它生成一个BugReport对象实例,把它序列化并放入内存,然后 转化为Base64编码。

1 import java.io.*;
2 import Codecs.base64Encode;
:
3 BugReport bug = new BugReport(1.0, "Crashes when spell checker invoked", 2);
4 字 节ArrayOutputStream os = new 字 节ArrayOutputStream();
5 bug.save(os);
6 String strSerializedBug = os.toString();
7 strSerializedBug = Codecs.base64Encode(strSerializedBug);


和SMTP服务器连接

如果你想发一封邮件,必须通过以下五个步骤:

1.为SMTP服务器申请一个域名

2.建立一个TCP/IP的会话(session)

3.在服务器上登录

4.填写收信人的地址

5.撰写邮件的内容

下面分别就这些步骤进行讨论。

     为SMTP服务器申请一个域名
正如你发送普通信件一样,你首先得找一个邮局。对居民区和商业单位来说这是一件非 常简单的事,因为邮筒就在门口。Internet上的电子邮件也同样简单。

本新闻共5页,当前在第4页  1  2  3  4  5  


[发送给好友]  [打印本页]  [关闭窗口]  [返回顶部]   转载请注明来源:http://edu.chinaz.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
栏目编辑: 设计风 责任编辑: 简若宁
原始作者: 无从考证 录入时间: 2005-8-19 15:08:19
信息来源: 不详 投稿信箱: Edu#chinaz.com
设为首页 - 加入收藏 - 关于我们 - 广告服务 - 版权申明 - 友情链接 - 联系方式 - 总编信箱 - 会员投稿