使用Java Swing编写一个简单的发送邮件客户端

本文章将介绍如何使用Java的Swing编写一个利用JavaMail实现的邮件客户端,这里需要你输入发送人信息和接收人信息以及简单的邮件文本信息。

本文章将介绍如何使用Java的Swing编写一个利用JavaMail实现的邮件客户端,这里需要你输入发送人信息和接收人信息以及简单的邮件文本信息。

mail.jar

下载地址:https://www.oracle.com/technetwork/java/javamail/index-138643.html

效果图:

Java通过Swing实现的邮件客户端

源代码:

package com.bug315.gui;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Properties;

import javax.mail.Address;
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.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class MailTest1 extends JFrame{
	private static final long serialVersionUID = 1L;
	private JTextField from;
	private JTextField to;
	private JPasswordField password;
	private JTextField subject;
	private JButton send,cancel;
	private JTextArea content;
	private JScrollPane scrollPane;
	private JPanel panel;
	
	/**
	 * 构造一个无参数的MailTest1对象
	 */
	public MailTest1(){
		init();
	}
	/**
	 * 主方法
	 * @param args
	 */
	public static void main(String[] args) {
		new MailTest1();
	}
	
	/**
	 *初始化界面
	 */
	private void init(){
		HandleMail handle = new HandleMail(this);//创建监听器对象
		panel = new JPanel(new GridLayout(5,1));
		from = new JTextField(20);
		to = new JTextField(20);
		subject = new JTextField(20);
		password = new JPasswordField(20);
		send = new JButton("Send");
		send.setActionCommand("send");
		send.addActionListener(handle);
		cancel = new JButton("Cancel");
		cancel.setActionCommand("cancel");
		cancel.addActionListener(handle);
		content = new JTextArea(100,200);
		scrollPane = new JScrollPane(content);
		scrollPane.setBorder(BorderFactory.createTitledBorder("Content"));
		scrollPane.setBorder(BorderFactory.createLoweredBevelBorder());
		
		JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
		p.add(new JLabel("         From :"));
		p.add(from);
		p.add(new JLabel("<html><body><font color='red'>(example: xxx@163.com)</font></body></html>"));
		panel.add(p);
		
		p = new JPanel(new FlowLayout(FlowLayout.LEFT));
		p.add(new JLabel("Password :"));
		p.add(password);
		panel.add(p);
		
		p = new JPanel(new FlowLayout(FlowLayout.LEFT));
		p.add(new JLabel("              To :"));
		p.add(to);
		p.add(new JLabel("<html><body><font color='red'>(example: xxx@163.com)</font></body></html>"));
		panel.add(p);
		
		p = new JPanel(new FlowLayout(FlowLayout.LEFT));
		p.add(new JLabel("    Subject :"));
		p.add(subject);
		panel.add(p);
		
		p = new JPanel(new FlowLayout(FlowLayout.LEFT));
		p.add(new JLabel("Content :"));
		panel.add(p);
		
		this.add(panel,BorderLayout.NORTH);
		
		p = new JPanel(new FlowLayout(FlowLayout.RIGHT));
		p.add(send);
		p.add(new JLabel("   "));
		p.add(cancel);
		this.add(p,BorderLayout.SOUTH);
		this.add(scrollPane,BorderLayout.CENTER);
		this.setTitle("E-Mail");
		this.setSize(700,600);
		this.setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - this.getWidth())/2,
				(Toolkit.getDefaultToolkit().getScreenSize().height - this.getHeight())/2);
		this.setResizable(false);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	public JTextField getFrom() {
		return from;
	}
	public JTextField getTo() {
		return to;
	}
	public JTextField getSubject() {
		return subject;
	}
	public JTextArea getContent() {
		return content;
	}
	public JPasswordField getPassword() {
		return password;
	}
}

/**
 * 按钮事件处理
 * @param e
 */
class HandleMail implements ActionListener{
	private Message message;
	private Transport transport;
	private Session session;
	private Properties props;
	private MailTest1 mailTest;
	private JTextField from,to,subject;
	private JTextArea content;
	private JPasswordField password;
	
	public HandleMail(MailTest1 mailTest){
		this.mailTest = mailTest;
	}
	
	/**
	 * 初始化
	 */
	private void init(){
		from = mailTest.getFrom();
		to = mailTest.getTo();
		subject = mailTest.getSubject();
		content = mailTest.getContent();
		password = mailTest.getPassword();
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		init();
		String command = e.getActionCommand();
		if("send".equals(command)){
			String from = this.from.getText();
			String to = this.to.getText();
			String subject = this.subject.getText();
			String password = new String(this.password.getPassword());
			String content = this.content.getText();
			props = new Properties();
			props.setProperty("mail.transport.protocol", "smtp");
			props.setProperty("mail.debug", "true");
			props.setProperty("mail.smtp.auth", "true");
			session = Session.getInstance(props);
			message = new MimeMessage(session);
			try {
				message.setText(content);
				message.setFrom(new InternetAddress(from));
				message.setSubject(subject);
				transport = session.getTransport();
				transport.connect("smtp.163.com", 25, from.substring(0,from.indexOf('@')), password);
				transport.sendMessage(message, new Address[]{new InternetAddress(to)});
				
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}else if("cancel".equals(command)){
			int statu = JOptionPane.showConfirmDialog(null, "Are you sure exit?","prompt",JOptionPane.INFORMATION_MESSAGE,JOptionPane.OK_CANCEL_OPTION);
			if(statu == JOptionPane.OK_OPTION){
				System.exit(0);
			}
		}
	}
}
在年轻人的颈项上,没有什么东西能比事业心这颗灿烂的宝珠更迷人的了。 —— 哈菲兹
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号