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("[email protected]")}); // 關閉連接 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"); } }