JavaMail包中的类比较多,主要用到的有会话类、地址类、邮件类、邮件发送类、邮件接收类和邮件文件夹类这些常用的类。
会话类(Session),主要用来创建邮件对象、实现邮件对象中数据的封装并可指定邮件服务器认证的客户端属性。它表示程序与某一个邮件服务器即将建立通信,在建立的过程可以进行口令认证。
地址类(Address),这个地址类主要是表示邮件发送人和邮件接收人的地址,一般主要用的是InternetAddress。
邮件类(Message),邮件消息的主要类,它包含了邮件中的所有部分,继承自一个接口Part,一般在使用的过程中直接是利用它的子类MimeMessage
邮件发送类(Transport),一般是从一个会话中获取一个邮件发送类的实例,将已经写好的邮件利用SMTP协议发送到指定的邮件服务器,在发送的过程中,首先根据指定口令连接到邮件服务器,再发送邮件。
邮件接收类(Store),这个其实就是邮件服务器中的存储库,里面放着所有的邮件文件夹
邮件文件夹类(Folder),该文件夹就是消息的具体所在文件夹,默认的邮件均在INBOX文件中。

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailSend {

	public static void main(String[] args) throws AddressException, MessagingException {
		 
				Properties props = new Properties();
				// 开启debug调试
				props.setProperty("mail.debug", "true");
				// 发送服务器需要身份验证
				props.setProperty("mail.smtp.auth", "true");
				// 设置邮件服务器主机名
				props.setProperty("mail.host", "smtp.126.com");
				// 发送邮件协议名称
				props.setProperty("mail.transport.protocol", "smtp");
				
				// 设置环境信息
				Session session = Session.getInstance(props);
				
				// 创建邮件对象
				Message msg = new MimeMessage(session);
				msg.setSubject("JavaMail测试");
				// 设置邮件内容
				msg.setText("这是一封由JavaMail发送的邮件!");
				// 设置发件人
				msg.setFrom(new InternetAddress("you email address"));
				
				Transport transport = session.getTransport();
				// 连接邮件服务器
				transport.connect("account", "pwd");
				// 发送邮件
				transport.sendMessage(msg, new Address[] {new InternetAddress("send2ocean@foxmail.com")});
				// 关闭连接
				transport.close();
		 
	}
}
javamail 下载链接http://down.51cto.com/data/810527

接收邮件,要用到Apache Commons Email

 

要不getSubject等方法会是null.

 

import java.io.IOException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeMessage;

import org.apache.commons.mail.util.MimeMessageParser;

import com.sun.mail.pop3.POP3Message;

public class MailRec   {

	public static void main(String[] args) throws Exception {
        String protocol = "pop3";
        boolean isSSL = true;
        String host = "pop3.126.com";
        int port = 995;
 
        Properties props = new Properties();
        props.put("mail.pop3.ssl.enable", isSSL);
        props.put("mail.pop3.host", host);
        props.put("mail.pop3.port", port);
        
	props.setProperty("mail.debug", "false");
        props.put("mail.pop3.disabletop", true);
        Session session = Session.getDefaultInstance(props);
 
        Store store = null;
        Folder folder = null;
        try {
            store = session.getStore(protocol);
            store.connect(username, password);
 
            folder = store.getFolder("INBOX");
            folder.open(Folder.READ_ONLY);
 
            int size = folder.getMessageCount();
            System.out.println( size );
            Message[] msgs = folder.getMessages();

            for(int i=0;i<size;i++){
      	  
            	 Message message = (POP3Message)msgs[i];
            	 MimeMessageParser parser = new MimeMessageParser((MimeMessage) message).parse();
                 System.out.println(i+"    getContentType: " + message.getContentType());
                 System.out.println(i+"    getSubject: " + message.getSubject()   ) ;
                 System.out.println(i+"    getFrom: " + parser.getFrom()  ) ;
            }
        } catch (NoSuchProviderException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        } finally {
            try {
                if (folder != null) {
                    folder.close(false);
                }
                if (store != null) {
                    store.close();
                }
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
 
        System.out.println("OK");
    }
	
 
}


 o(∩_∩)o