简单的邮件客户端
2011-10-19 11:35 Rollen Holt 阅读(1608) 评论(3) 编辑 收藏 举报运行界面如下:
源代码如下:(本程序使用的是Merak mail server)
package com.zzk; /** * @author 任文超 * @version 1.0 * */ import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class SendMailFrame extends JFrame { private JTextArea ta_text; private JTextField tf_title; private JTextField tf_send; private JTextField tf_receive; private Session session;// 定义Session对象 private String sendHost = "localhost";// 定义发送邮件的主机 private String sendProtocol="smtp";// 定义使用的发送协议 public static void main(String args[]) { EventQueue.invokeLater(new Runnable() { public void run() { try { SendMailFrame frame = new SendMailFrame(); frame.init(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame */ public SendMailFrame() { super(); setTitle("发送邮件窗体"); getContentPane().setLayout(null); setBounds(100, 100, 439, 299); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JLabel label = new JLabel(); label.setForeground(new Color(0, 0, 255)); label.setFont(new Font("", Font.BOLD, 22)); label.setText("发送电子邮件"); label.setBounds(144, 10, 185, 24); getContentPane().add(label); final JLabel label_1 = new JLabel(); label_1.setText("收件人地址:"); label_1.setBounds(22, 42, 85, 18); getContentPane().add(label_1); tf_receive = new JTextField(); tf_receive.setBounds(113, 40, 287, 22); getContentPane().add(tf_receive); final JLabel label_2 = new JLabel(); label_2.setText("发件人地址:"); label_2.setBounds(22, 68, 78, 18); getContentPane().add(label_2); tf_send = new JTextField(); tf_send.setBounds(113, 66, 287, 22); getContentPane().add(tf_send); final JLabel label_3 = new JLabel(); label_3.setText("主 题:"); label_3.setBounds(32, 92, 66, 18); getContentPane().add(label_3); tf_title = new JTextField(); tf_title.setBounds(113, 94, 287, 22); getContentPane().add(tf_title); final JLabel label_4 = new JLabel(); label_4.setText("正 文:"); label_4.setBounds(34, 128, 66, 18); getContentPane().add(label_4); final JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(113, 128, 287, 91); getContentPane().add(scrollPane); ta_text = new JTextArea(); scrollPane.setViewportView(ta_text); final JButton btn_send = new JButton(); btn_send.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { String fromAddr = tf_send.getText().trim(); String toAddr = tf_receive.getText().trim();// 真实存在的目标邮件地址 String title = tf_title.getText().trim(); String text = ta_text.getText().trim(); try { sendMessage(fromAddr, toAddr, title, text); } catch (Exception e1) { e1.printStackTrace(); } } }); btn_send.setText("发 送"); btn_send.setBounds(144, 225, 78, 28); getContentPane().add(btn_send); final JButton btn_exit = new JButton(); btn_exit.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { System.exit(0); } }); btn_exit.setText("退 出"); btn_exit.setBounds(279, 225, 78, 28); getContentPane().add(btn_exit); } public void init() throws Exception { Properties props = new Properties();// 创建属性对象 props.put("mail.transport.protocol", sendProtocol);// 指定邮件传输协议 props.put("mail.smtp.class", "com.sun.mail.smtp.SMTPTransport");//指定传输协议使用的类 props.put("mail.smtp.host", sendHost);// 定义发送邮件的主机 session = Session.getDefaultInstance(props);// 创建Session对象 } /** * @param fromAddr 发送者 * @param toAddr 接收者 * @param title 主题 * @param text 内容 * @throws Exception 异常 */ public void sendMessage(String fromAddr,String toAddr,String title,String text) throws Exception { Message msg = new MimeMessage(session);// 创建Message对象 InternetAddress[] toAddrs = InternetAddress.parse(toAddr,false);// 创建接收方的InternetAddress对象 msg.setRecipients(Message.RecipientType.TO, toAddrs);// 指定接收方 msg.setSentDate(new Date());// 指定接发送日期 msg.setSubject(title);// 设置主题 msg.setFrom(new InternetAddress(fromAddr));// 指定发送者 msg.setText(text);// 指定发送内容 Transport.send(msg);// 发送邮件 JOptionPane.showMessageDialog(null, "邮件发送成功。"); } }
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================