




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武武 汉汉 长长 江江 工工 商商 学学 院院 工学院工学院 项目名称 项目名称 简单邮件发送客户端简单邮件发送客户端 程序设计程序设计 学生姓名 学生姓名 学学 号 号 班班 级 级 指导老师 指导老师 20122012年年6 6月月1212日日 目 录 1 设计概述 1 2 电子邮件发送协议与技术 1 2 1 SMTP 协议简介及通讯模型 1 2 2 Java Mail API 介绍 2 3 邮件发送客户端程序总体设计 3 3 1 系统模块结构 3 3 2 类的功能设计 3 3 2 1 系统托盘类 3 3 2 2 账号设置类 4 3 2 3 邮件发送类 4 4 功能模块的实现 5 4 1 程序主界面的设计 5 4 2 账号设置功能实现 6 4 3 邮件发送功能实现 8 4 4 附件发送实现 10 4 5 系统托盘实现 10 5 程序测试 11 5 1 发送邮件程序账号设置测试 12 5 2 发送电子邮件程序测试 12 5 3 电子邮件程序系统托盘测试 14 设计小结 15 参考文献 16 附录 1 SystemTrayTest 类 17 附录 2 MainSender 类 19 附录 3 LoginDialog 类 28 1 1 设计概述 电子邮件 electronic mail 简称 E mail 标志 也被大家昵称为 伊 妹儿 又称电子信箱 电子邮政 它是 种用电子手段提供信息交换的通信方 式 是 Internet 应用最广的服务 通过网络的电子邮件系统 用户可以用非常 低廉的价格 不管发送到哪里 都只需负担电话费和网费即可 以非常快速的 方式 几秒钟之内可以发送到世界上任何你指定的目的地 与世界上任何一个 角落的网络用户联系 这些电子邮件可以是文字 图像 声音等各种方式 同 时 用户可以得到大量免费的新闻 专题邮件 并实现轻松的信息搜索 电子邮件的处理有两大部分组成 电子邮件在 Internet 上发送和接收的 原理可以很形象地用我们日常生活中邮寄包裹来形容 当我们要寄一个包裹 时 我们首先要找到任何一个有这项业务的邮局 在填写完收件人姓名 地 址等等之后包裹就寄出而到了收件人所在地的 邮局 那么对方取包裹的时 候就必须去这个邮局才能取出 同样的 当我们发送电子邮件时 这封邮件 是由邮件发送 服务器 任何一个都可以 发出 并根据收信人的地址判断对 方的邮件接收服务器而将这封信发送到该服务器上 收信人要收取邮件也只 能访问这个服务器才能完成 本系统使用 Eclipse 作为开发工具 开发一个电子邮件发送端应用程序 系统实现的功能主要有帐号设置 发送及添加附件 托盘程序等 本例发送程序采取了与发送邮件服务器连接实现电子邮件的发送 用户在 收件人邮箱 所对应的对话框中输入收件人的 Email 地址 并在账号设置窗 口所对的对话框中输入发信人的 Email 地址 设置好账号后 进入主对话框编 辑信件的正文 本程序还可以发送附件 直接选择路径 就可以发送附件 然 后单击 发送 按钮 便可完成电子邮件的发送 电子邮件发送成功 程序将 弹出一个 发送成功 的消息对话框 若电子邮件发送失败 程序将给出失败 的相关信息 2 电子邮件发送协议与技术 2 1 SMTP 协议简介及通讯模型 SMTP Simple Mail Transfer Protocol 即简单邮件传输协议 它是一组 用于由源地址到目的地址传送邮件的规则 由它来控制信件的中转方式 它能够 在传送中接力传送邮件 传送服务提供了进程间通信环境 IPCE 此环境可以 包括一个网络 几个网络或一个网络的子网 理解到传送系统 或 IPCE 不是一 对一的是很重要的 进程可能直接和其它进程通过已知的 IPCE 通信 邮件是一 个应用程序或进程间通信 邮件可以通过连接在不同 IPCE 上的进程跨网络进行 邮件传送 更特别的是 邮件可以通过不同网络上的主机接力式传送 SMTP 协 议属于 TCP IP 协议族 它帮助每台计算机在发送或中转信件时找到下一个目的 地 通过 SMTP 协议所指定的服务器 我们就可以把 E mail 寄到收信人的服务 器上了 整个过程只要几分钟 SMTP 服务器则是遵循 SMTP 协议的发送邮件服务 器 用来发送或中转你发出的电子邮件 SMTP 是一种提供可靠且有效电子邮件传输的协议 SMTP 是建模在 FTP 文 件传输服务上的一种邮件服务 主要用于传输系统之间的邮件信息并提供来信 有关的通知 SMTP 独立于特定的传输子系统 而且仅要求一条可以保证传送数据单元顺 2 序的通道且只需要可靠有序的数据流信道支持 SMTP 重要特性之一是其能跨越 网络传输邮件 即 SMTP 邮件中继 通常 一个网络可以由公用互联网上 TCP 可相互访问的主机 防火墙分隔的 TCP IP 网络上 TCP 可相互访问的主机 及其它 LAN WAN 中的主机利用非 TCP 传输层协议组成 使用 SMTP 可实现 相同网络上处理机之间的邮件传输 也可通过中继器或网关实现某处理机与其 它网络之间的邮件传输 在这种方式下 邮件的发送可能经过从发送端到接收端路径上的大量中间 中继器或网关主机 域名服务系统 DNS 的邮件交换服务器可以用来识别出传 输邮件的下一跳 IP 地址 SMTP 在传输文件过程中使用 25 号端口 可大致用下面的图 2 1 来表示 用户 发送 SMTP 文件系统 接收 SMTP 文件系统 SMTP 命令 邮件内容 应答 图 2 1 SMTP 通信模型 2 2 Java Mail API 介绍 一般情况下 在 eclipse 中 电子邮件程序的编写是主要是利用 Java jdk1 7 扩展包 JavaMailAPI 等及相关的 SMTP 等通信协议来实现的 随着现代 软件业的发展 java 提供了方便 简易 与服务器无关且稳固的电子邮件处理 组件 使我们可以在程序开发语言中调用这些组件 利用很简单的语言实现功 能强大的程序 JavaMail 便是一个很好的电子邮件程序开发扩展组件 JavaMail API 是读取 撰写 发送电子信息的可选包 我们可用它来建立 如 Eudora Foxmail MS Outlook Express 一般的邮件用户代理程序 Mail User Agent 简称 MUA 而不是像 sendmail 或者其它的邮件传输代理 Mail Transfer Agent 简称 MTA 程序那样可以传送 递送 转发邮件 从另外一 个角度来看 我们这些电子邮件用户日常用 MUA 程序来读写邮件 而 MUA 依赖 着 MTA 处理邮件的递送 JavaMail 核心类 Session Message Address Authenticator Transport Store Folder Session 类 定义了基本的邮件会话 就像 Http 会话那样 我们进行收发 邮件的工作都是基于这个会话的 Session 对象利用了 java util Properties 对象获得了邮件服务器 用户名 密码信息和整个应用程序都要使用到的共享 信息 Message 类 当我们建立了 Session 对象后 便可以被发送的构造信息体 了 在这里 SUN 提供了 Message 类型来帮助开发者完成这项工作 由于 3 Message 是一个抽象类 大多数情况下 我们使用 javax mail internet MimeMessage 这个子类 该类是使用 MIME 类型 MIME 信 息头的邮箱信息 信息头只能使用 US ASCII 字符 而非 ASCII 字符将通过编码 转换为 ASCII 的方式使用 Address 类 到这里 我们已经建立了 Session 和 Message 下面将介绍如 何使用邮件地址类 Address 像 Message 一样 Address 类也是一个抽象类 所以我们将使用 javax mail internet InternetAddress 这个子类 Authenticator 类 像 类那样 JavaMail API 通过使用授权者类 Authenticator 以用户名 密码的方式访问那些受到保护的资源 在这里 资源 就是指邮件服务器 在 javax mail 包中可以找到这个 JavaMail 的授 权者类 Authenticator Transport 类 在发送信息时 Transport 类将被用到 这个类实现了发送 信息的协议 通称为 SMTP 此类是一个抽象类 我们可以使用这个类的静态 方法 send 来发送消息 Transport send message Store 和 Folder 类 接收邮件和发送邮件很类似都要用到 Session 但是 在获得 Session 后 我们需要从 Session 中获取特定类型的 Store 然后连接 到 Store 这里的 Store 代表了存储邮件的邮件服务器 在连接 Store 的过程 中 极有可能需要用到用户名 密码或者 Authenticator 3 邮件发送客户端程序总体设计 3 1 系统模块结构 电子邮件客户端主要由以下三个模块构成 发送邮件模块 系统托盘模 块 账号设置模块 其功能模块如图 3 1 所示 电子邮件发送端程序 发 送 邮 件 账 号 设 置 系 统 托 盘 图 3 1 电子邮件功能模块图 1 发送邮件模块 发送邮件 并可以添加附件 2 账号设置模块 对发送方电子邮件账号进行设置 3 系统托盘模块 在任务栏可以使程序有托盘功能 4 3 2 类的功能设计 3 2 1 系统托盘类 Class SystemTrayTest 该类为系统托盘类 为了实现邮件程序的托盘功能 PopupMenu popup new PopupMenu 系统托盘菜单数组 MenuItem mItem new MenuItem 账号设置 new MenuItem 退出 程序 点 击鼠标邮件的菜单数 组 SystemTray tray 表示桌面的系统托盘对象 TrayIcon trayIcon TrayIcon 对象表 示可以添加 到系统托盘的托盘图标 TrayIcon 可以包含工具提示 文本 图像 弹出菜单 和一组与之关联的侦听器 MailSender inst 表示创建一个邮件 发送类 public SystemTrayTest 该方法表示一个托 盘类的构造 public void actionPerformed ActionEvent e 该方法表示鼠标触 发事件 其中的参 数为监视器变量 3 2 2 账号设置类 Class LoginDialog 该类为账号设置类 主要实现了邮件系统的账号功能 public static MailSender ms 表示创建一个邮 件发送类 private JLabel pwdLabel 表示创建用户密 码的短文本字符 串的显示区 private JTextField userJT 表示创建用户账 号的输入区 private JButton logoutJB 表示创建一个按 钮 private JPasswordField pwdJP 表示创建一个密 码输入区 5 private JLabel userLabel 表示创建用户账 号的短文本字符串 的显示区 public LoginDialog MailSender frame 该方法表示账号 设置类的一个构造 private void initGUI 该方法表示一个图 形界面的初始化 private void logonJBMouseEntered MouseEvent evt 该方法以及接后 的几个类似的方法 都表示鼠标触发事 件 3 2 3 邮件发送类 Class MailSender 该类为邮件发送类 主要是实现了邮件发送等功能 public LoginDialog dlg 登录对话框 private static String attachPath 附件路径 private static String mailAddr 发件人邮箱地址 private static String mailPwd 发件人邮箱密码 public boolean loginCheck 是否已登录 private JLabel fromLabel 显示发件人 private JButton loginJB private JLabel attachLabel private JLabel stateLabel 邮件状态 private boolean hasAttach 是否有附件 private JButton attachJB 添加附件 private JTextField recieverJT 前面的邮箱 地址 private JTextField smtpJT 后面的邮箱地址 private JTextField tittleJT 主题 private JTextArea textJTA 内容 private JSeparator jSeparator1 分割线 private void initGUI 图形界面的初始 化方法 class PasswordAuthenticator extends Authenticator 密码输入方法 private void sendJBActionPerformed ActionEvent evt 邮件发送的详 细方法 private String smtpAddressConfirm String smtpAddr SMTP 邮件地址 确认方法 private void attachJBActionPerformed ActionEvent evt 添加附件的 方法 6 4 功能模块的实现 4 1 程序主界面的设计 本次设计中 主要用到对话框 Java 图形界面 Java 图形界面是实现应用程 序人机交互的重要组成部分 它不但可以实现数据流的输入和输出 而且也可 以移动和关闭对话框 a 创建类 MailSender 首先 创建 MailSender 类 此类继承 javax swing JFrame 类 b 创建 initGUI 方法 首先 设置窗口关闭方法 调用 setDefaultCloseOperation WindowConstants DISPOSE ON CLOSE 方法 然 后设置布局 对各个图形组件进行创建 主界面的实现如图 4 1 创建一个图形界面 有输入框 输入监视器 还有各 个按钮等 方便用户可以使用系统 图 4 1 图形界面的创建与实现图 4 2 账号设置功能实现 在账号设置时新建一个类 此类包含了 GUI 鼠标触发事件 以及账号名 密码与邮件服务器的验证 在用户输入账号时会进行账号名检测 查看输入的账 号格式是否有误 若有误 则返回重新输入 账号设置流程图如图 4 2 账号设置会在输入账号时检验合法性 然后等待主 界面调用并提取账号 7 输入邮箱账号 程序会检 测账号合法性 以及密码 然后点击 确定 按钮 点击 账号设置 按钮 程序提取账号 发送时与 邮件服务器验证 等待发送 图 4 2 账号设置流程图 部分此类代码如下 private void initGUI try this setTitle 账号设置 getContentPane setLayout null this setBounds 450 250 300 200 private String smtpAddressConfirm String smtpAddr if smtpAddr contains com if smtpAddr contains 163 smtpAddr else if smtpAddr contains qq smtpAddr else return not include else return not include return smtpAddr 8 4 3 邮件发送功能实现 邮件发送流程图如图 4 3 发送邮件时会对邮件以及账号进行处理和验证 获取收件人地址 验证地址合 法性 发往 SMTP 服 务器进行验证 返回失败信 息 验证失败 验证成功 获取发件人账号和密码 传入服务器 发送邮件 输出对话框 发送成功 返回失败信息 发送失败 发送成功 图 4 3 邮件发送流程图 1 获取收件人账号 并设置 SMTP 邮件服务器 程序会检测输入账号合法 性 关键代码 String to recieverJT getText trim smtpJT getText trim 获得收件人地 址 System out println to String subject tittleJT getText String body textJTA getText Properties props System getProperties 设置 SMTP 邮件服务器 String smtpAddr smtpAddressConfirm smtpJT getText if not include smtpAddr JOptionPane showMessageDialog null 无法解 9 析邮箱地址 jLabel1 setIcon resources error System out println smtpAddr props put mail smtp host smtpAddr props setProperty mail smtp port 25 SMTP 服务器需要验证 props put mail transport protocol smtp props put mail smtp starttls enable true props put mail smtp auth true 2 获取账号设置界面中用户输入的账号和密码传入服务器 然后创建一封 新邮件 关键代码 传入用户名和口令 Session session Session getDefaultInstance props new PasswordAuthenticator mailAddr mailPwd session setDebug true 创建新邮件 Message msg new MimeMessage session msg setFrom new InternetAddress mailAddr msg setRecipients Message RecipientType TO InternetAddress parse to false msg setSubject subject msg setText body msg setSentDate new Date 3 邮件发送以及发送失败的详细信息和原因 关键代码 MimeBodyPart mbp1 new MimeBodyPart mbp1 attachFile sss Multipart multi new MimeMultipart FileDataSource fds new FileDataSource attachPath mbp1 setDataHandler new DataHandler fds mbp1 setFileName attachLabel getText multi addBodyPart mbp1 msg setContent multi msg saveChanges Transport send msg 10 System out println mail sended stateLabel setText 发送成功 sendJB setIcon resources ok setIconImage resources mail sended getImage catch Exception ex JOptionPane showMessageDialog null 发送邮件失败 System err println 邮件发送失败的原因是 ex getMessage System err println 具体的错误原因 ex printStackTrace System err 4 4 附件发送实现 添加附件流程图如图 4 4 当用户点击 添加附加 按钮时 会弹出图形 界面 方便用户选择附件路径 附件与邮件一起发送 用户点击 添加附件 按钮 弹出界面 用户选择附件路 径 有无多个附件 有 无 等待与邮件一起发送 图 4 4 添加附件流程图 新建一个 JFileChoose 对象 chooser 然后调用对象的方法 关键代码 chooser setFileSelectionMode JFileChooser FILES ONLY chooser setDialogTitle 打开文件夹 chooser setCurrentDirectory new File E flie my coding tip chooser setMultiSelectionEnabled true 支持多个附件 int returnVal chooser showOpenDialog this if returnVal JFileChooser APPROVE OPTION attachPath 11 chooser getSelectedFile getAbsolutePath attachLabel setIcon resources attach attachLabel setText chooser getSelectedFile getName this setIconImage resources mail attachment getImage this hasAttach true 有附件 4 5 系统托盘实现 系统托盘流程图如图 4 5 功能为当用户点击 close 键时 本系统最小化 到托盘 然后当用户双击托盘图标时又出现主界面 用户点击关闭按钮时本 系统最小到系统托盘 鼠标点击 双击 点击右键选 择账号设置 主界面出 现 点击右键选 择退出程序 退出程序 账号设置界 面出现 图 4 5 系统托盘流程图 在本程序中添加了系统托盘功能 使用了 jdk1 6 中新增加的类 Systemtray 和 TrayIcon 类创建系统托盘 并在托盘上增加了鼠标邮件菜单 关键代码 trayIcon addActionListener this trayIcon addMouseListener new MouseAdapter public void mouseClicked MouseEvent e if e getSource trayIcon flag false else setState 0 flag true 12 setVisible true 5 程序测试 现在 以发送如下的一封带附件的邮件来进行功能测试 收件人 hubeigongpeng 发件人 hubeiwangchangyou 邮件主题 测试邮件 收到勿回 邮件内容 测试邮件 收到勿回 附件 测试文件 doc 5 1 发送邮件程序账号设置测试 测试开始 在账号输入框中输入账号 hubeiwangchangyou 在密 码框中输入密码 然后点击确认按钮 如图 5 1 所示 为输入账号和密码 图 5 1 发送邮件程序账号设置测试 5 2 发送电子邮件程序测试 在上一步已经测试了账号输入 然后再收件人地址输入框中输入 hubeigongpeng 在 邮件服务器输入框中输入 接下来在主题输 入框中输入 测试邮件 收到勿回 正文中输入 测试邮件 收到勿回 然后添加附件 测试文件 doc 如图 5 2 最后点击发送 当邮件发送成功 会在发送旁边返回 发送成功 的信息 如图 5 2 为添加附件的界面 13 图 5 2 发送电子邮件程序添加附件 如图 5 3 为测试邮件发送成功 14 图 5 3 发送电子邮件程序主界面 5 3 电子邮件程序系统托盘测试 测试最后进入系统托盘测试 点击主界面的 按钮 然后会看到主 界面在桌面上消失 在桌面左下角的任务栏里 可以找到一个类似地球的图标 如图 5 3 当鼠标移上去时会有字体显示 CY 电邮 然后点击鼠标邮件 出现小菜单 如图 5 4 选择 主界面 会弹出主界面 并有提示 如图 5 5 选择 退出程序 程序会退出 如图 5 4 所示 系统托盘的实现 图 5 4 电子邮件程序 cy 电邮 系统托盘 如图 5 5 所示 系统托盘右键菜单 图 5 5 电子邮件程序系统托盘右键菜单 如图 5 6 所示 弹出主界面提示 图 5 6 电子邮件程序系统托盘主界面弹出提示 15 设计小结 在课程设计即将完成之际 我想向曾经给我帮助的陈涛老师和一起讨论的 同学表示衷心的感谢 本次设计过程中遇到了很多程序上的问题 在老师不厌 其烦地指导和自己不断地思考中才得以解决 然后是不停地通宵研究 编译 拿出了刻苦的精神后 问题也就迎刃而解了 在这两个星期的努力中 我终于 设计出一个电子邮件发送系统并调试通过 最后整理出设计报告 通过编写电 子邮件的发送程序 我知道了 java 除了本来的许多包 还有需要特殊作用的扩 展包 如本系统用到的 javamail 包等 目前系统还不够完整 还存在着很多的 不足和不完善的地方 不过我相信随着以后学的专业知识越来越多 我会完善 这个系统的 在完成过程中我在托盘程序时出现了鼠标点击的错误 在老师的 帮助下我找到了错误并解决了 在发送邮件时出现无法登陆邮件服务器错误 问了老师才知道是因为我发的是 QQ 邮箱 而本身 QQ 邮箱的 SMTP 服务器没打开 所以我该用 163 邮箱发送 最后 衷心感谢在百忙之中抽出时间审阅本课程报告的陈涛老师 参考文献 1 谢希仁 计算机网络 第五版 M 北京 电子工业出版社 2008 1 2 耿祥义 张跃平 Java 大学实用教程 第二版 M 北京 电子工业出版社 2005 5 3 美 Rogers Cadenhead Java 编程入门经典 梅兴文译 第 4 版 M 北京 人民邮电出版社 2007 4 王勇 代桂平 计算机网络课程设计 M 北京 清华大学出版社 2009 6 5 耿祥义 张跃平 Java 大学实用教程学习指导 第二版 M 北京 电子工业出 16 版社 2005 5 附录 1 SystemTrayTest 类 功能 该类是实现主界面系统托盘功能的类 import java awt AWTException import java awt Image import java awt Menu import java awt MenuItem import java awt PopupMenu 17 import java awt SystemTray import java awt Toolkit import java awt TrayIcon import java awt event ActionEvent import java awt event ActionListener import java awt event MouseAdapter import java awt event MouseEvent import java awt event WindowAdapter import javax swing JFrame public class SystemTrayTest extends JFrame implements ActionListener private static final long serialVersionUID 5381564219860736835L PopupMenu popup new PopupMenu MenuItem mItem new MenuItem 账号设置 new MenuItem 退出 程序 SystemTray tray TrayIcon trayIcon Image image1 Image image boolean flag true MailSender inst public LoginDialog dlg public SystemTrayTest for int i 0 i mItem length i mItem i addActionListener this popup add mItem 0 popup add mItem 1 if SystemTray isSupported tray SystemTray getSystemTray image Toolkit getDefaultToolkit getImage imag e mail png image1 Toolkit getDefaultToolkit getImage imag e mail png trayIcon new TrayIcon image1 CY电邮 popup trayIcon setImageAutoSize true try tray add trayIcon catch AWTException e e printStackTrace 18 trayIcon addActionListener this trayIcon addMouseListener new MouseAdapter public void mouseClicked MouseEvent e if e getSource trayIcon flag false else setState 0 flag true setVisible true else System out println 您的系统不支持托盘程序 inst new MailSender inst setLocationRelativeTo null inst setBounds 400 200 420 400 inst setVisible true public void actionPerformed ActionEvent e if e getSource mItem 0 trayIcon setImage image1 inst setVisible true trayIcon displayMessage 主界面 已经入主界面 TrayIcon MessageType WARNING else System exit 0 public static void main String args new SystemTrayTest 19 附录2 MainSender类 功能 该类是为主界面类 里面包含邮件发送等主要功能 import java awt BorderLayout import java awt Font import java awt event ActionEvent import java awt event ActionListener import javax swing ImageIcon import javax swing JButton import javax swing JLabel import javax swing JOptionPane import javax swing JSeparator import javax swing JTabbedPane import javax swing JTextArea import javax swing JTextField import javax swing WindowConstants import javax swing SwingUtilities import java util Date import java util Properties import javax activation DataHandler import javax activation FileDataSource import javax mail Authenticator import javax mail Message import javax mail MessagingException import javax mail Multipart import javax mail PasswordAuthentication import javax mail Session import javax mail Transport import javax mail internet InternetAddress import javax mail internet MimeBodyPart import javax mail internet MimeMessage import javax mail internet MimeMultipart import javax swing BorderFactory import javax swing JFileChooser import java io public class MailSender extends javax swing JFrame Set Look catch Exception e e printStackTrace public LoginDialog dlg 登录对话框 public static Font fontOne private static String attachPath 附件路径 private static String mailAddr 发件人邮箱地址 private static String mailPwd 发件人邮箱密码 public boolean loginCheck 是否已登录 static Resources resources new Resources private JLabel fromLabel 显示发件人 private JLabel jLabel2 private JButton loginJB private JLabel attachLabel private JLabel stateLabel 邮件状态 private boolean hasAttach 是否有附件 private JButton attachJB 添加附件 private JLabel recieverLabel private JLabel tittleLabel private JTextField recieverJT 前面的邮箱地址 private JTextField smtpJT 后面的邮箱地址 private JTextField tittleJT 主题 private JTextArea textJTA 内容 private JButton sendJB private JSeparator jSeparator1 分割线 private JLabel jLabel1 Auto generated main method to display this JFrame public static void main String args SwingUtilities invokeLater new Runnable public void run MailSender inst new MailSender inst setLocationRelativeTo null inst setBounds 400 200 420 400 inst setVisible true 21 public MailSender super setBounds 0 0 400 400 设置窗口位置和大小 fontOne new Font null Font BOLD 15 loginCheck false 未登录 dlg new LoginDialog this dlg setVisible false hasAttach false 没有附件 initGUI private void initGUI try setDefaultCloseOperation WindowConstants DISPOSE ON CLOSE 设置 窗口关闭时的操作 setTitle 邮件发送 getContentPane setLayout null 设置布局需取得Frame的 ContentPane方法 通过ContentPane的方法setLayout 设置布局管理器 括号 里面为布局管理器的名称 什么都不选为null setIconImage resources mail send getImage 设置窗口图 标 recieverLabel new JLabel recieverLabel setFont fontOne getContentPane add recieverLabel recieverLabel setText 收件人地址 recieverLabel setBounds 10 12 92 15 tittleLabel new JLabel tittleLabel setFont fontOne getContentPane add tittleLabel tittleLabel setText 主题 tittleLabel setBounds 10 39 69 15 recieverJT new JTextField getContentPane add recieverJT recieverJT setBounds 101 9 149 26 jLabel1 new JLabel getContentPane add jLabel1 22 jLabel1 setFont fontOne jLabel1 setText jLabel1 setBounds 255 12 37 18 smtpJT new JTextField getContentPane add smtpJT smtpJT setBounds 299 9 87 26 tittleJT new JTextField getContentPane add tittleJT tittleJT setBounds 101 36 285 26 jSeparator1 new JSeparator getContentPane add jSeparator1 jSeparator1 setBounds 7 66 368 10 textJTA new JTextArea getContentPane add textJTA textJTA setBounds 12 82 374 179 sendJB new JButton getContentPane add sendJB sendJB setText 发送 sendJB setBounds 12 321 75 30 sendJB addActionListener new ActionListener public void actionPerformed ActionEvent evt sendJBActionPerformed evt TODO Auto generated catch block stateLabel new JLabel getContentPane add stateLabel stateLabel setBounds 90 327 70 24 attachJB new JButton getContentPane add attachJB 23 attachJB setText 添加附件 attachJB setBounds 156 321 75 30 attachJB addActionListener new ActionListener public void actionPerformed ActionEvent evt attachJBActionPerformed evt attachJB setIcon resources add attachLabel new JLabel getContentPane add attachLabel attachLabel setBounds 239 315 136 45 loginJB new JButton getContentPane add loginJB loginJB setIcon resources login loginJB setText 账号设置 loginJB setBounds 12 267 89 48 loginJB addActionListener new ActionListener public void actionPerformed ActionEvent evt loginJBActionPerformed evt jLabel2 new JLabel getContentPane add jLabel2 jLabel2 setFont resources fontOne jLabel2 setText 发件人 jLabel2 setBounds 124 282 75 24 fromLabel new JLabel getContentPane add fromLabel fromLabel setBounds 214 282 161 21 pack pack catch Exception e e printStackTrace 24 点击账号设置按钮 private void loginJBActionPerformed ActionEvent evt System out println loginJB actionPerformed event evt TODO add your code for loginJB actionPerformed new LoginDialog this class PasswordAuthenticator extends Authenticator private String username private String password public PasswordAuthenticator String username String password this username username this password password protected PasswordAuthentication getPasswordAuthentication return new PasswordAuthentication username password 点击发送按钮 private void sendJBActionPerformed ActionEvent evt if loginCheck 已登录 if JOptionPane OK OPTION JOptionPane showConfirmDialog null 确
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职业健康法律法规体系解析
- 电工实习生个人成长总结
- 电子商务实习个人总结
- 2025学校党委书记年终述职报告范文-1
- 2025年6月部门述职报告
- 关于-面试时简短的自我介绍范文合集六篇
- 代职实习个人总结
- 大学生律师助理实习个人总结
- 船舶轮机实习个人总结
- 厂个人简历自我总结实习
- 疗愈人心的创业:90后打造“青年养老院”
- 2024新版(外研版三起孙有中)三年级英语上册单词带音标
- 2025届高三数学一轮复习备考经验交流
- 2024年兴业银行分期还款协议书范文减免利息
- 广西崇左市广西大学附属中学2024-2025学年高一上学期分班测试数学试题A(解析版)
- 核级设备设计制造规范ASME介绍
- 人教版三年级数学上册第六单元《多位数乘一位数》(大单元教学设计)
- 最简单封阳台安全免责协议书
- 成人住院患者静脉血栓栓塞症的预防护理-2023中华护理学会团体标准
- (正式版)JBT 3300-2024 平衡重式叉车 整机试验方法
- 多渠道外贸客户开发
评论
0/150
提交评论