javamail發信和收信機制(smtp、pop3、imap)
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.imap.IMAPFolder;
import com.sun.mail.imap.IMAPStore;
import com.sun.mail.util.MailSSLSocketFactory;<pre name="code" class="html">public class MailSendAndReceiveTest {
public void pop3Receive(){
try {
Properties props = System.getProperties();
props.setProperty("mail.pop3.host", "192.168.1.194");
props.setProperty("mail.pop3.port", "110");
props.setProperty("mail.store.protocol", "pop3");
props.setProperty("mail.debug", "true");
String username = "[email protected]";
String password = "123456";
Session session = Session.getInstance(props);
Store store = (Store) session.getStore("pop3");
store.connect(username,password);
Folder folder = null;
folder = (Folder) store.getFolder("INBOX");
if (folder.exists())
folder.open(2);
Message[] messages = folder.getMessages();
if(messages!=null&&messages.length>0){
for (Message message : messages) {
System.out.println(message.getSubject());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void imapReceive(){
try {
Properties props = System.getProperties();
props.setProperty("mail.imap.host", "192.168.1.194");
props.setProperty("mail.imap.port", "143");
props.setProperty("mail.store.protocol", "imap");
props.setProperty("mail.debug", "true");
String username = "[email protected]";
String password = "123456";
Session session = Session.getInstance(props);
IMAPStore store = (IMAPStore) session.getStore("imap");
store.connect(username,password);
IMAPFolder folder = null;
folder = (IMAPFolder) store.getFolder("INBOX");
if (folder.exists())
folder.open(2);
Message[] messages = folder.getMessages();
if(messages!=null&&messages.length>0){
for (Message message : messages) {
System.out.println(message.getSubject());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void smtpSend(){
try {
Properties properties = new Properties();
properties.setProperty("mail.transport.protocol", "smtp");// 發送郵件協議
properties.setProperty("mail.smtp.auth", "true");// 需要驗證
properties.setProperty("mail.smtp.port", "25");
properties.setProperty("mail.transport.protocol", "smtp");
properties.setProperty("mail.smtp.host", "192.168.1.194");
properties.setProperty("mail.debug", "true");//設置debug模式
final String username = "[email protected]";
final String password = "123456";
// 後臺輸出郵件發送的過程
Session session = Session.getInstance(properties,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,
password);
}
});
// 郵件信息
Message messgae = new MimeMessage(session);
messgae.setFrom(new InternetAddress("[email protected]"));// 設置發送人
messgae.setText("X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*");// 設置郵件內容
messgae.setSubject("測試postfix郵件發送");// 設置郵件主題
// 發送郵件
Transport tran = session.getTransport();
tran.connect("192.168.1.194", username, password);// 連接到新浪郵箱服務器
tran.sendMessage(messgae, new Address[] { new InternetAddress("[email protected]") });// 設置郵件接收人
tran.close();
} catch (Exception e) {
}
}
public void smtpSSLSend(){
try {
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
Properties properties = new Properties();
// 郵件發送協議
properties.setProperty("mail.transport.protocol", "smtp");
// SMTP郵件服務器
properties.setProperty("mail.smtp.host", "192.168.1.194");
// SMTP郵件服務器默認端口
properties.put("mail.smtp.socketFactory.port", 465);//發信端口
// 是否要求身份認證
properties.setProperty("mail.smtp.auth", "true");
// 是否啓用調試模式
properties.setProperty("mail.debug", "true");//設置debug模式
properties.put("mail.smtp.ssl.enable", "true");//是否開啓ssl
properties.put("mail.smtp.ssl.socketFactory", sf);
// 發送郵件協議
properties.setProperty("mail.smtp.auth", "true");// 需要驗證
final String username = "[email protected]";
final String password = "123456";
// 創建Session實例對象
Session session = Session.getDefaultInstance(properties,new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,
password);
}
});
// 創建MimeMessage實例對象
MimeMessage message = new MimeMessage(session);
// 設置發件人
message.setFrom(new InternetAddress("[email protected]"));
// 設置郵件主題
message.setSubject("SSL認證測試javamail");
// 設置收件人
message.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"));
// 設置發送時間
message.setSentDate(new Date());
// 設置純文本內容爲郵件正文
message.setText("abcdefghijklmnopqrstuvwxyz");
//回執
message.setHeader("Disposition-Notification-To", "[email protected]");
//緊急
message.setHeader("X-Priority", "1");
// 保存並生成最終的郵件內容
message.saveChanges();
Transport.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}