QQ接收邮箱:
- <p>package com.sam.mail;</p><p>import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.UnsupportedEncodingException;
- import java.security.Security;
- import java.util.Enumeration;
- import java.util.Properties;</p><p>import javax.mail.BodyPart;
- import javax.mail.FetchProfile;
- import javax.mail.Folder;
- import javax.mail.Header;
- import javax.mail.Message;
- import javax.mail.MessagingException;
- import javax.mail.Multipart;
- import javax.mail.Session;
- import javax.mail.Store;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeUtility;</p>
- <p>import org.junit.Test;</p><p>import com.sun.mail.imap.IMAPMessage;</p>
- <p>/**
- *
- * @author 1372940767@qq.com
- *
- */
- </p>
- public class EmailClient {
- <p> private static final String IMAP = “imap”;
- @Test
- public void testRece() throws Exception{
- reviceQQEmail(System.getProperty(“email”), System.getProperty(“password”));
- }
- </p><p> public void reviceQQEmail(String username, String password) throws Exception{
- String host = “imap.qq.com”;
- String port = “143”;
- Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
- final String SSL_FACTORY = “javax.net.ssl.SSLSocketFactory”;
- Properties props = System.getProperties();
- props.setProperty(“mail.imap.socketFactory.class”, SSL_FACTORY);
- // props.setProperty(“mail.imap.socketFactory.fallback”, “false”);
- // props.setProperty(“mail.imap.port”, port);
- props.setProperty(“mail.imap.socketFactory.port”, port);
- props.setProperty(“mail.store.protocol”,“imap”);
- props.setProperty(“mail.imap.host”, host);
- props.setProperty(“mail.imap.port”, port);
- props.setProperty(“mail.imap.auth.login.disable”, “true”); </p><p> Session session = Session.getDefaultInstance(props,null);
- session.setDebug(false);
- Store store = session.getStore(“imap”);
- store.connect(host, username, password);</p><p> Folder inbox = null;
- try {
- 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);
- IMAPMessage msg;
- for (int i = 0; i < messages.length; i++) {
- msg = (IMAPMessage)messages[i];
- String from = decodeText(msg.getFrom()[0].toString());
- InternetAddress ia = new InternetAddress(from);
- System.out.println(“FROM:” + ia.getPersonal()+‘(‘+ia.getAddress()+‘)’);
- System.out.println(“TITLE:” + msg.getSubject());
- System.out.println(“SIZE:” + msg.getSize());
- System.out.println(“DATE:” + msg.getSentDate());
- Enumeration headers = msg.getAllHeaders();
- System.out.println(“———————-allHeaders—————————–“);
- while (headers.hasMoreElements()) {
- Header header = (Header)headers.nextElement();
- System.out.println(header.getName()+” ======= “+header.getValue());
- } </p><p> parseMultipart((Multipart) msg.getContent()); </p><p> }
- } finally {
- try {
- inbox.close(false);
- } catch (Exception e) {
- }
- try {
- store.close();
- } catch (Exception e) {
- }
- }
- }</p><p> protected 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;</p><p> }
- /**
- * 对复杂邮件的解析
- * @param multipart
- * @throws MessagingException
- * @throws IOException
- */
- public static void parseMultipart(Multipart multipart) throws MessagingException, IOException {
- int count = multipart.getCount();
- System.out.println(“couont = “+count);
- for (int idx=0;idx<count;idx++) {
- BodyPart bodyPart = multipart.getBodyPart(idx);
- System.out.println(bodyPart.getContentType());
- if (bodyPart.isMimeType(“text/plain”)) {
- System.out.println(“plain……………..”+bodyPart.getContent());
- } else if(bodyPart.isMimeType(“text/html”)) {
- System.out.println(“html……………….”+bodyPart.getContent());
- } else if(bodyPart.isMimeType(“multipart/*”)) {
- Multipart mpart = (Multipart)bodyPart.getContent();
- parseMultipart(mpart);
- } else if (bodyPart.isMimeType(“application/octet-stream”)) {
- String disposition = bodyPart.getDisposition();
- System.out.println(disposition);
- if (disposition.equalsIgnoreCase(BodyPart.ATTACHMENT)) {
- String fileName = bodyPart.getFileName();
- InputStream is = bodyPart.getInputStream();
- copy(is, new FileOutputStream(“D:\\”+fileName));
- }
- }
- }
- }
- /**
- * 文件拷贝,在用户进行附件下载的时候,可以把附件的InputStream传给用户进行下载
- * @param is
- * @param os
- * @throws IOException
- */
- public static void copy(InputStream is, OutputStream os) throws IOException {
- byte[] bytes = new byte[1024];
- int len = 0;
- while ((len=is.read(bytes)) != –1 ) {
- os.write(bytes, 0, len);
- }
- if (os != null)
- os.close();
- if (is != null)
- is.close();
- } </p><p>}
- </p>
版权声明:本文为hj7jay原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。