用Java编程实现SMTP服务器功能(2)
来源:asp之家 发布时间:2010-03-13 18:46:00
标签:smtp服务器,java服务器
编程思路
首先我们设计一个邮件发送程序的交互界面,界面中包括用户输入邮件的收件人、发信人和主题组件的单行文本框,书写邮件内容的多行文本框等。然后为了能够实现E-mail的发送和设置,我们设计一个SmtpMail类,它封装了与邮件服务器之间的Socket 通信操作,以及SMTP 命令的发送和响应信息的接收。
编程技巧说明
1.设置窗体和组件
我们设计了一个MailSendFrame()类继承Frame 对象,作为容纳组件的主窗体。Main()函数实现将窗体启动时置于屏幕的正中央,窗口定义代码如下:
public static void main(String[] args) { mailSendFrame mailSendFrame = new mailSendFrame(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = mailSendFrame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } mailSendFrame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); mailSendFrame.setVisible(true); mailSendFrame.show(); } |
在Main()函数中,首先利用代表系统信息的Toolkit对象得到当前系统中设置的屏幕分辨率,并且用分辨率和窗体的大小作比较,然后,调用MailSendFrame的SetLocation()方法设置窗体的左上角坐标,使窗体的中心和屏幕的中心正好重合,从而将窗体居中。
//组件实例变量的定义 Panel panelMain = new Panel(); Panel panelUp = new Panel(); Panel panel3 = new Panel(); Panel panel4 = new Panel(); Panel panel6 = new Panel(); Panel panel7 = new Panel(); TextField txtServer = new TextField(); TextField txtTo = new TextField(); TextField txtFrom = new TextField(); TextField txtSubject = new TextField(); Panel panel8 = new Panel(); Label lblFile = new Label(); Button cmdBrowse = new Button(); Panel panelDown = new Panel(); TextArea txtMail = new TextArea(); Panel panel10 = new Panel(); Button cmdSend = new Button(); Button cmdExit = new Button(); ....... ....... panelMain.add(panelUp, null); panelUp.add(panel3, null); panel3.add(new Label("发信服务器:"), null); panel3.add(txtServer, null); panelUp.add(panel4, null); panel4.add(new Label("收件人:"), null); panel4.add(txtTo, null); panelUp.add(panel6, null); panelUp.add(panel7, null); panel7.add(new Label("主题:"), null); panel7.add(txtSubject, null); panel6.add(new Label("发件人:"), null); panel6.add(txtFrom, null); panelUp.add(panel8, null); panel8.add(new Label("附件: "), null); panel8.add(lblFile, null); panel8.add(cmdBrowse, null); panelMain.add(panelDown, null); panelDown.add(txtMail, BorderLayout.CENTER); panelDown.add(panel10, BorderLayout.SOUTH); panel10.add(cmdSend, null); panel10.add(cmdExit, null); panelDown.add(new Label(" "), BorderLayout.EAST); panelDown.add(new Label(" "), BorderLayout.WEST); ........ ........ |
窗体组件的定义都是在Init()方法中完成,设置好收件人、发信人和主题组件的单行文本框,书写邮件内容的多行文本框,以及附件中的浏览按钮、发送和退出按钮。


猜你喜欢
- 新浪科技讯 10月15日凌晨消息,千橡集团购得的域名Kaixin.COM昨日下午低调启用,名字亦为“开心网”,命名、页面风格等均与开心网(K
- 本文是谷歌关键字广告(Google AdWords)专家Amanda Kelly 在“事半功倍做营销”系列讲座中的第二讲。在当前的经济环境下
- 今年过完年,我跑去福山打算在福山我爸爸朋友那里打工为生,因去年在伟创力做事,知道打工的生活我并不合适,更不能赚到钱,因为我用钱习惯了大手大脚
- 最近发现硬盘读写很频繁,用任务管理器仔细检查了一下进程,发现Chrome的磁盘I/O高的惊人,怀疑有什么猫腻,于是专门做了一下测试:用Chr
- 长尾关键词这个概念现在大家都已经有所了解。在做英文网站优化时,因为受到各种因素的限制(如资源,时间等),我们不应该去追求那些高搜索但是同样高
- 核心提示:10天后,我的网站出现在搜索结果的第九页上。这也给我上了关于SEO的最后一课:一切都需要耐心。我很讨厌在搜索页面的前几位看到自己写
- 为了解决日益严重的手机安全问题,全球领先的手机安全服务公司网秦发布了手机卫士服务。手机卫士是一组永久免费的手机安全和管理工具族,流氓克星是手
- 可能很多人看到这个标题感觉疑惑:一个日IP几百的网站真的一天能Google Adsense月收入300美元?不信?那也很正常,说完了就信了。
- 23日从工业和信息化部了解到,截至2月份,我国网民数达2.21亿人,超过美国居全球首位。在2007年底,这一数字为2.1亿人。据了解,今年在
- Godaddy主机用户怎样在现有的托管帐户里创建Google站长工具呢?操作如下:首先. 登陆你的Account Manager.其次. 在
- 从学会建站到现在也有一段时间了,在关于网站的推广与扩大方面也有了个人的一些看法,总结起来主要有以下几个方面:首先要从大的方面去把握。我认为这
- 对Mesos和Marathon的安装官方文档有较详细的安装说明,但是英文的。我参照官方安装文档(https://open.mesospher
- {$ggas_text$}Simon已经在如何申请Goolge AdSense一文中跟大家介绍简单介绍和提示一点如何填写申请表如英译的相关资
- FTP(File Transfer Protocol)是文件传输协议的简称。FTP的作用正如其名所示:FTP的主要作用,就是让用户连接上一个
- 解决vmware上ubuntu无法共享文件夹问题解决vmware上ubuntu无法共享文件夹问题(ubuntu22.04)第一步:设置共享文
- 如果你的服务器目录结构是这样: /usr/corsak/www/maindir 如果Apache指令中开启了AllowOverride支持.
- 本文讨论的是在新硬盘上安装Windows2003,如硬盘已有数据,请先备份数据以防造成不必要的无可挽回的损失。系统要求-----对基于x86
- 北京时间10月24日消息,据国外媒体报道,上网本销售强劲及微软Office销售疲软累及其2010财年第一财季业绩。至少有一位分析师预计,即使
- 前阵子在vikiworks那里看到yichi介绍用Asaph建设一个自己的FFFFound,也就是一个图片搜集博客。所以我试了一下,觉得很好
- 在Google宣布收购Feedburner一年以后,adsense for feed这个备受期待的功能,终于要整合进Feedburner了。