与其他邮箱不同的是Gmail提供的POP3和SMTP是使用安全套接字层SSL的,因此常规的JavaMail程序是无法收发邮件的,下面是使用JavaMail如何收取Gmail邮件以及发送邮件的代码:
1. 邮件收取
package lius.javamail.ssl;
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邮件
* @author Winter Lau
*/
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. 发送邮件
package lius.javamail.ssl;
import java.security.Security;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* 使用Gmail发送邮件
* @author Winter Lau
*/
public class GmailSender {
public static void main(String[] args) throws AddressException, MessagingException {
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.smtp.host", "smtp.gmail.com");
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
final String username = "[邮箱帐号]";
final String password = "[邮箱密码]";
Session session = Session.getDefaultInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}});
// -- Create a new message --
Message msg = new MimeMessage(session);
// -- Set the FROM and TO fields --
msg.setFrom(new InternetAddress(username + "@mo168.com"));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("[收件人地址]",false));
msg.setSubject("Hello");
msg.setText("How are you");
msg.setSentDate(new Date());
Transport.send(msg);
System.out.println("Message sent.");
}
}
分享到:
相关推荐
C#邮件收取客户端 采用C# lumisoft编写 含有代理功能
易语言邮件收取类模块源码,邮件收取类模块,子程序_查找指定文本位置,子程序_普通收取测试,断开连接,连接POP邮箱,登录邮箱,取邮件总数,收取指定邮件,内部_发送数据,Ptr_Bin,内部_读取数据,设置证书文件,LoadCRTFile,...
易语言源码易语言邮件收取类模块源码.rar 易语言源码易语言邮件收取类模块源码.rar 易语言源码易语言邮件收取类模块源码.rar 易语言源码易语言邮件收取类模块源码.rar 易语言源码易语言邮件收取类模块源码.rar ...
C#一个邮件收取客户端ImapX源码.收一点点分啊。
邮件接收系统 C#一个邮件收取客户端ImapX源码,本源码包含一个imap类库和一个完整的imap客户端demo,支持ssl和tls连接。有界面,可直接运行。
*nix 下的邮件收取代码,很好用的,是个开源的
分为邮件收取、MIME解码两个部分。这里我们先向您介绍邮件的收取,解码部分会在以后的文章中为各位详细的介绍,敬请关注。 现在Internet上最大的应用应该是非Email莫属了,我们每天都习惯于每天通过Email进行...
分为邮件收取、MIME解码两个部分。这里我们先向您介绍邮件的收取,解码部分会在以后的文章中为各位详细的介绍,敬请关注。 现在Internet上最大的应用应该是非Email莫属了,我们每天都习惯于每天通过Email进行...
thunderbird 邮件备份,导入导出
易语言邮件收取类模块源码例程程序结合易语言特殊功能支持库,调用API函数实现邮件收取的普通模式和SSL模式。易语言知识库
易语言邮件收取类模块源码
一、源码介绍 1、邮件到达后右下角提示窗口,提醒时有声音提示 2、现在邮件收件人占时用赋值粘贴的方法 现在用两个浏览器,... 5、邮件收取 三、注意事项 1、开发环境为Visual Studio 2010,数据库为SqlServer2008
收取电子邮件的C#程序源码(邮件客户端
作为一个电子邮件客户端,邮件的发送与收取是其核心功能,本系统邮件发送块实现电子邮件的发送,支持邮件的单个发送和群发,在邮件收取块,实现了电子邮件的简单收取。另外还增加了地址薄管理块让用户更方便地管理...
作为一个电子邮件客户端,邮件的发送与收取是其核心功能,本系统邮件发送块实现电子邮件的发送,支持邮件的单个发送和群发,在邮件收取块,实现了电子邮件的简单收取。另外还增加了地址薄管理块让用户更方便地管理...
一、源码描述 这是一款邮件收取的WinFrom窗体应用程序源码,功能比较简单,主要实现了输入自己的邮箱地址密码获取邮件的个数,以及接收详细的邮件信息,比较适合新手学习交流使用,有需要的朋友们不要错过哦。...
作为一个电子邮件客户端,邮件的发送与收取是其核心功能,本系统邮件发送块实现电子邮件的发送,支持邮件的单个发送和群发,在邮件收取块,实现了电子邮件的简单收取。另外还增加了地址薄管理块让用户更方便地管理...