您的位置:首页 > 编程语言 > Java开发

利用JAVAMail发取和发送gmail邮件

2014-05-15 10:36 274 查看

Gmail目前已经启用了POP3和SMTP服务,与其他邮箱不同的是Gmail提供的POP3和SMTP是使用安全套接字层SSL的,因此常规的JavaMail程序是无法收发邮件的,下面是使用JavaMail如何收取Gmail邮件以及发送邮件的代码:

1. 邮件收取

package cn.test;

import java.io.UnsupportedEncodingException;
import java.security.*;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeUtility;

/**
* 用于收取Gmail邮件
*
*/

public class GmailFetch {

public static void main(String argv[]) throws Exception {

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

// Get a Properties object
Properties props = System.getProperties();
props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.pop3.socketFactory.fallback", "false");
props.setProperty("mail.pop3.port", "995");
props.setProperty("mail.pop3.socketFactory.port", "995");

// 以下步骤跟一般的JavaMail操作相同
Session session = Session.getDefaultInstance(props, null);

URLName urln = new URLName("pop3", "pop.gmail.com", 995, null,"[邮箱帐号]", "[邮箱密码]");

Store store = session.getStore(urln);

Folder inbox = null;

try {

store.connect();

inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);

FetchProfile profile = new FetchProfile();
profile.add(FetchProfile.Item.ENVELOPE);

Message[] messages = inbox.getMessages();
inbox.fetch(messages, profile);
System.out.println("收件箱的邮件数:" + messages.length);

for (int i = 0; i < messages.length; i++) {
// 邮件发送者
String from = decodeText(messages[i].getFrom()[0].toString());
InternetAddress ia = new InternetAddress(from);
System.out.println("FROM:" + ia.getPersonal() + ia.getAddress());

// 邮件标题
System.out.println("TITLE:" + messages[i].getSubject());

// 邮件大小
System.out.println("SIZE:" + messages[i].getSize());

// 邮件发送时间
System.out.println("DATE:" + messages[i].getSentDate());
}
} finally {
try {
inbox.close(false);
} catch (Exception e) {
}

try {
store.close();

} catch (Exception e) {

}
}
}

protected static String decodeText(String text) throws UnsupportedEncodingException {

if (text == null)
return null;

if (text.startsWith("=?GB") || text.startsWith("=?gb"))
text = MimeUtility.decodeText(text);
else
text = new String(text.getBytes("ISO8859_1"));
return text;

}

}


2. 发送邮件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javamail gmail 邮箱 安全