package com.test.mail;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class testSendMail {
?public static void main(String[] arg) throws Exception{
??sendMailWithAttachement();
//??recpMail();
?}
?
?
?
?/**
? * 不需要驗證的郵件發送
? * @throws Exception
? */
?private static void setMessage() throws Exception {
??Properties props = System.getProperties();
??props.put("mail.smtp.host","mail.infoservice.com.cn");? //設置smtp的服務器地址:該郵件服務器不需要身份驗證
??props.put("mail.smtp.auth","false");????????? ???//設置smtp服務器要身份驗證:缺省設置為false
??
??Address from = new InternetAddress("chencheng@infoservice.com.cn");
??Address to = new InternetAddress("zouqingbing@infoservice.com.cn");
??
??
??Session session = Session.getDefaultInstance(props,null);
??Message message = new MimeMessage(session);
??message.setFrom(from);
??message.addRecipient(Message.RecipientType.TO, to);
??message.setText("I love U!!!");
??message.setSubject("Test");
??
??Transport.send(message);
??System.out.println("郵件發送完畢!");
?}
?
?/**
? * 帶授權的發送郵件
? * @throws Exception
? */
?private static void setMessageWithAuthentica() throws Exception{
??Properties props = new Properties();
??props.put("mail.smtp.host","smtp.126.com");? //設置smtp的服務器地址是smtp.126.com
??props.put("mail.smtp.auth","true");????????? //設置smtp服務器要身份驗證。
??PopupAuthenticator auth = new PopupAuthenticator();
??Session session = Session.getInstance(props, auth);
??// 發送人地址
??Address addressFrom = new InternetAddress("zqbchina@126.com", "zqbchina");
??// 收件人地址
??Address addressTo = new InternetAddress("zqbchina@sina.com", "zqbchina");
??
??// 抄送地址
??// Address addressCopy = new InternetAddress("haocongping@gmail.com", "George Bush");
??Message message = new MimeMessage(session);
??message.setContent("This is mail content!", "text/plain");//或者使用message.setText("Hello");更詳細的信息請參看后續文章.
??message.setSubject("測試郵件標題");
??message.setFrom(addressFrom);
??message.addRecipient(Message.RecipientType.TO,addressTo);
??// message.addRecipient(Message.RecipientType.CC,addressCopy);
??message.saveChanges();
??// session.setDebug(true);
??Transport transport = session.getTransport("smtp");??//創建連接
??transport.connect("smtp.126.com", "zqbchina", "你的密碼");//連接服務器
??transport.send(message);?//發送信息
??transport.close();???//關閉連接
??System.out.println("郵件發送完畢!");
?}
?
?/**
? * 帶附件的郵件發送
? * @throws Exception
? */
?private static void sendMailWithAttachement() throws Exception{
??Properties props = new Properties();
??props.put("mail.smtp.host","smtp.126.com");? //設置smtp的服務器地址是smtp.126.com
??props.put("mail.smtp.auth","true");????????? //設置smtp服務器要身份驗證。
??PopupAuthenticator auth = new PopupAuthenticator();
??Session session = Session.getInstance(props, auth);
??File filename = new File("c:\\cmd.txt");
??
??// 發送人地址
??Address from = new InternetAddress("zqbchina@126.com", "zqbchina");
??Address to = new InternetAddress("zqbchina@sina.com", "zqbchina");
??
??//Define message
??Message message = new MimeMessage(session);
??message.setFrom(from);
??message.addRecipient(Message.RecipientType.TO,to);
??message.setSubject("Hello JavaMail Attachment");
??// Create the message part
??BodyPart messageBodyPart = new MimeBodyPart();
??// Fill the message
??messageBodyPart.setText("Pardon Ideas");
??Multipart multipart = new MimeMultipart();
??multipart.addBodyPart(messageBodyPart);
??// Part two is attachment
??messageBodyPart = new MimeBodyPart();
??DataSource source = new FileDataSource(filename);
??messageBodyPart.setDataHandler(new DataHandler(source));
??messageBodyPart.setFileName("cmd.txt");
??multipart.addBodyPart(messageBodyPart);
??// Put parts in message
??message.setContent(multipart);
??// Send the message
??Transport.send(message);
??
??
?}
?
?private static void recpMail() throws Exception{
??BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
??
??/*Properties props = new Properties();
??props.put("mail.smtp.host","smtp.sina.com");
??props.put("mail.smtp.auth","true");
//??props.put("mail.pop3.socketFactory.fallback", "false");
??Session session = Session.getInstance(props, new PopupAuthenticator());
??
??Store store = session.getStore("pop3");
??store.connect();
??Folder folder = store.getFolder("INBOX");
??folder.open(Folder.READ_ONLY);
//??Message[] messages = folder.getMessages();
??System.out.println(folder.getMessageCount());
//??for (int i=0;i<messages.length;i++)
??folder.close(true);
??store.close();*/
??
??
??Properties props = new Properties();
??props.put("mail.smtp.host","mail.infoservice.com.cn");
??props.put("mail.smtp.auth","false");
??Session session = Session.getInstance(props, new PopupAuthenticator());
??
??Store store = session.getStore("pop3");
??store.connect("mail.infoservice.com.cn","zouqingbing","你的密碼");
??Folder folder = store.getFolder("INBOX");
??folder.open(Folder.READ_WRITE);
??System.out.println(folder.getPermanentFlags().getSystemFlags().length);
??Message[] messages = folder.getMessages();
??for (int i=0;i<messages.length;i++){
???if (i==19) messages[i].reply(true);
???
???System.out.println(i+": 發件人=["+messages[i].getFrom()[0]+"],標題=["+messages[i].getSubject()+"]");
//???System.out.println("需要查看郵件內容嗎?[Y]---查看;[N]---暫時不看。");
//???String line = reader.readLine();
//???if ("Y".equals(line))
//????System.out.println(messages[i].getContent().toString().getBytes("GB2312"));
??}
??folder.close(true);
??store.close();
?}
?
}
其中,身份驗證類:
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class PopupAuthenticator extends Authenticator {
??? public PasswordAuthentication getPasswordAuthentication() {
??????? String username = "zqbchina"; //郵箱登錄帳號
??????? String pwd = "密碼"; ??? //登錄密碼
??????? return new PasswordAuthentication(username, pwd);
??? }
}