通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 my小屋
联系我们
设为首页
加入收藏

 

qq,asp,php,jsp,xml,sql,.net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 网络赚钱 | 网站地图 | 广告服务 | 服务
当前位置:首页>>服 务 器>>mail服务器>>正文 新版上线![旧版]
注:打开慢时请稍等
通过e-mail 共享java 对象

http://www.iyit.net  日期:2006-5-6 10:37:55  来源:不详  点击:
参加讨论

 你或许已经有一个internet的电子邮件帐号,如果这样,你的邮件阅读工具,可能是和www 浏览器捆绑在一起的软件,或者是单独的软件如eudora,要求你输入一个有关smtp服务器 的信息。它就是你所使用的dns服务器的域名。这里有一些internet服务提供商(isp)供商的smtp 服务器域名:
你的internet服务提供商将为它的smtp服务器使用和上例相似的域名。

..与服务器建立一个tcp/ip会话

  一般smtp服务器在25号端口(port25)监听连接请求。因此,和一个smtp主机建立一个tcp/ip 连接就是建立一个和25号端口连接的套接字(socket)。下面这段java程序试图建立一个和 域名为"smtp.tjd.com"的主机的连接:

1 import java.net.*;
2 import java.io.*;
3 :
4 socket socketsmtpserver = null;
5 dataoutputstream dos = null;
6 datainputstream dis = null;

7 try {
8 socketsmtpserver = new socket("smtp.tjd.com", 25);
9 dos = new dataoutputstream(socketsmtpserver.getoutputstream());
10 dis = new datainputstream (socketsmtpserver.getinputstream());
11 }
12 catch (unknownhostexception e) {throw (e);}
13 catch (ioexception e) {throw (e);} 

这段代码在建立tcp/ip连接的同时创建一个dataoutputstream对象和一个datainputstream 对象,我们以后将会使用它们从smtp服务器发送和接收数据。

..在服务器上登录

  和在unix系统或者数据库系统上登录不同,你无须在一个smtp服务器上真正地登录,因为 这里没有确认/授权的过程,根本不需要真正登录。你只是简单地让服务器能识别你,这样才 有资格成发送邮件。这一步其实不真正需要,但是不能忽略它。

  当你第一次和服务器连接时,服务器给你发送确认它自己和它的smtp版本号两行数据。 我们不关心这些数据,我们只是读入它们并且将其忽略。在我们读入这些数据后,服务器将 把我们推到"司机"的座位上然后等待和回答命令。下面是用java语言实现的登 录过程:

1 string strbuf;
2 string strmyname = "tomdaley";
3 strbuf = dis.readline();
4 strbuf = dis.readline();
5 dos.writebytes("helo " + strmyname + "\n");
6 strbuf = dis.readline();
7 dos.writebytes("rset\n");
8 strbuf = dis.readline(); 

 helo命令让服务器识别你的身份,rset命令重置smtp服务器的状态。如果一切顺利,rset 命令不是必须的。但是因为事情并非总是进行顺利,而rset是一个发送和执行起来很" 便宜"的命令,因此首先执行这条命令是一个很好的方法。

 注意在每条write字节s()语句后的readline()语句,smtp服务器为你发送的每条命令 返回一个状态信息。状态信息以一个3字节的数字开始,它被用来判断命令执行成功与否。 rfc821对此有详尽的解释。

  .写明收信人的地址

 下一步我们准备填写收信人的地址。和所有礼貌的信件相似,我们应该提供给邮件传送 代理和接收者地址同样清楚的回信地址。下面java的代码实现了这个功能:

1 dos.writebytes("mail from:\n");
2 dis.readline();
3 dos.writebytes("rcpt to:\n");
4 dos.readline(); 

..撰写邮件的内容

现在我们准备创建邮件最有趣的部分--数据区域。数据区域包括两个子区域:

1.邮件客户程序阅读的头部信息
2.mime-编码的正文和数据

  数据区域的头部信息并不是必须的,但在你使用收信客户程序看信时,它能使你的邮件 看起来更美观。头部信息是邮件内容的一个概括,它使邮件更容易管理。

数据区域头部信息和办公室间的备忘录的开头相似,可以这样发送:

1 dos.writebytes ("data\n");
2 strbuf = dis.readline();
3 dos.writebytes ("to: tom daley \n");
4 dos.writebytes ("from: tom daley \n");
5 dos.writebytes ("subject: bug report\n"); 

注意,我们在发送"data"命令后读入且只读入一行。当你发送"data" 命令的时候,服务器可能回送下面形式的消息作为应答:"354entermail,endwith "."onalinebyitself"。这意味着如果smtp服务器没有看到信件的 结尾,不会通过套接字发送任何数据。

  为了能传送序列化编码对象,我们把它封闭到邮件内容的mime部分。mime部分最开始是 纯文本,用mime的语法来描述,就是"content-type:text/plain。"。在文本部 分我们将发送若干指令,用来指明一起发送的对象和关于它的简单说明。下面的代码实现 了这种功能:

1 string strboundary = "simpleboundary";
2 string strinstructions = "save the attached file and read it with bugnews.class.";
2 dos.writebytes("mime-version 1.0\n");
3 dos.writebytes("content-type: multipart/mixed; boundary=\"" + strboundary + "\"\n");
4 dos.writebytes("--" + strboundary + "\n");
5 dos.writebytes("content-type: text/plain; charset=\"us-ascii\"\n\n");
6 dos.writebytes(strinstructions + "\n"); 

现在我们该做费了这么多的口舌一直想做的事情,将序列化的对象附在smtp邮件内容上。 请记住,邮件内容每行不能超出1000个字节。对于有多个部分的mime则有更多的限制,即每 行不能超出74个字节的二进制编码。这意味着我们必须声明一个string对象,它包含序列 化的,基于base64编码对象,然后我们以每次74个字节的方式将这个string对象写入smtp 套接字。

  1 dos.writebytes("--" + strboundary + "\n");
2 dos.writebytes("content-type: application/octet-stream; name=\"bugreport.bug\"\n");
3 dos.writebytes("content-transfer-encoding: base64\n");
4 dos.writebytes("content-disposition: attachment; filename=\"bugreport.bug\"\n");
5 dos.writebytes("content-description: bug report from a customer\n\n");

6 int ilines = strobject.length() / 74;
7 for (i = 0; i 


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


编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:你的email服务器准备好应对账号搜集攻击了吗
下一篇:个人smtp服务器的配置
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
linux + java 会得到什么 利用java语言实现支持视频点播的web服务 利用java语言实现支持视频点播的web服务
利用java语言实现支持视频点播的web服务 利用java语言实现支持视频点播的web服务 利用java语言实现支持视频点播的web服务
sun java系统web服务器:关键任务的选择 javascript 实用的一些技巧  奇妙的javascript图片放大镜
java数据类型转换 用 javascript 写的一个映射表类 用 javascript 写的一个映射表类
javascript 对象与数组参考大全 javascript实例教程(3-2) javascript实例教程(3-1)
javascript实例教程(2) 创建弹出式窗 javascript实例教程(1) 目录  javascript: 改变和控制显示的图片大小
计算鼠标所在位置的x,y坐标的javascrip javascript实用的一些技巧  javascript实例教程(20-4)
javascript实例教程(20-3) javascript实例教程(20-2) javascript实例教程(20-1)
最新更新 热点排行 推荐新闻
用webeasymail架构web邮件服务器(5)
用webeasymail架构web邮件服务器(4)
用webeasymail架构web邮件服务器(3)
用webeasymail架构web邮件服务器(2)
用webeasymail架构web邮件服务器(1)
linux服务器日志管理详解(3)
linux服务器日志管理详解(2)
linux服务器日志管理详解(1)
在linux下设置www server(4)
在linux下设置www server(3)
在linux下设置www server(2)
在linux下设置www server(1)
设定linux web 服务器(6)
设定linux web 服务器(5)
设定linux web 服务器(4)
用webeasymail架构web邮件服务器(5)
用webeasymail架构web邮件服务器(4)
用webeasymail架构web邮件服务器(3)
用webeasymail架构web邮件服务器(2)
用webeasymail架构web邮件服务器(1)
qq珊瑚虫外挂4.0版本发布!
免费在qq上看在线电影电视听音乐
免费把qq炫铃设为本机qq的系统提示音
新开放qq免费挂级网站
摄影后期系列一:1分钟为数码相片去红眼
流金岁月!cpu历史上最难忘的十个第一
教您显示器亮度对比度的调节
腾讯qq调整升级条件不再诱发网民“通宵
qq挂机的n种快速方法
asp自动解压rar文件
巧用photoshop图案工具
用photoshop制成浪漫的“珍珠项链”
第二十章 开发delphi对象式数据管理功
sql简明教程(1)
vbscript和javascript互相调用 
jsp教程(四)-jsp actions的使用
操作系统被入侵后的修复过程
五一别忘电脑防毒 养成良好上网习惯
google对ie浏览器将捆绑搜索功能表担忧
新版上线,今日正式开通!!!
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights © 2004-2006 iyit.net all rights reserved.
网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息