메 일 연락처 가 져 오기 - 원본 코드 첨부

이메일 연락처 가 져 오기
미 담 은 메 일 친 구 를 초대 하 는 기능 이 있 습 니 다. 프로젝트 가 이 기능 을 실현 해 야 하기 때문에 요 며칠 동안 조금씩 연 구 했 습 니 다.마침 오늘 주말 에 여러분 과 함께 나 누 자고 보 냈 습 니 다.
       
일단 감사 해 야 돼 요[email protected]이 소 형 은 많은 메 일의 연락 처 를 기어 나 왔 다.그리고 jar 로 포장 해서 발 표 했 습 니 다.원본 도 구 글 에 넣 고.  코드 안에 있어 요.
       
원 리 는 이 렇 습 니 다. 메 일 에 로그 인하 고 관련 정보 (cookies 등) 를 저장 하 며 http client 를 통 해 주소록 이 있 는 페이지 를 방문 하여 관련 연락처 닉네임 과 메 일 을 기어 나 갑 니 다.
         
코드 는 다음 과 같 습 니 다:
EmailType:
package com.duicky.email;

/**
 *      
 * 
 * @author luxiaofeng
 *
 */
public class EmailType {
	public static final int email_gmail = 1;
	public static final int email_sina = 2;
	public static final int email_163 = 3;
	public static final int email_yahoo = 4;
	public static final int email_hotmail = 5;
	public static final int email_139 = 6;
	public static final int email_sohu = 7;
	public static final int email_yeah = 8;
	public static final int email_126 = 9;
	public static final int email_189 = 10;
	public static final int email_tom = 11;
	public static final int email_msn = 12;
}

EmailManager:
package com.duicky.email;

import java.util.List;

import com.huangzhimin.contacts.Contact;
import com.huangzhimin.contacts.ContactsImporter;
import com.huangzhimin.contacts.ContactsImporterFactory;
import com.huangzhimin.contacts.exception.ContactsException;

/**
 * 
 * 
 * @author luxiaofeng
 *
 */
public class EmailManager {

	private static EmailManager emailManager = null;

	private EmailManager() {

	}

	public static EmailManager getInstence() {
		if (emailManager == null) {
			emailManager = new EmailManager();
		}
		return emailManager;
	}

	/**
	 *        
	 * 
	 * @param type        
	 *            1-gmail,2-sina,3-163,4-yahoo,5-hotmail,6-139,7-sohu,8-yeah,
	 *            9-126,10-189,11-tom,12-msn
	 * @param account      
	 * 
	 * @param password     
	 * 
	 * @return         
	 * 
	 *                    :
	 *               :<c><o><n>  </n><e>[email protected]</e></o><o><n>  </n><e>431
	 *         @qq.com</e></o></c>    C    ,o        ,n   ,e    
	 *               :0
	 *                   "-1"
	 */
	public String getEmailContacts(int type, String account, String password) {
		StringBuilder sb = new StringBuilder();
		ContactsImporter importer = null;
		try {
			importer = getContactsImporter(type, account, password);
			if (importer == null) {
				sb.append("-1");
				return sb.toString();
			}

			List<Contact> contacts = importer.getContacts();
			int size = contacts.size();
			if (size > 0) {
				sb.append("<c>");
				for (int i = 0; i < size; i++) {
					sb.append("<o><n>");
					sb.append(contacts.get(i).getUsername());
					sb.append("</n>");
					sb.append("<e>");
					sb.append(contacts.get(i).getEmail());
					sb.append("</e></o>");
				}
				sb.append("</c>");
			} else {
				sb.append("0");
			}
		} catch (ContactsException e) {
			sb.append("-1");
			e.printStackTrace();
		}
		return sb.toString();
	}

	/**
	 *       
	 * @return			            <count>6<count>
	 * 					       -1
	 */
	public String inviteEmailContacts() {
		
		String result = "";
		
		return result;
	}
	
	/**
	 *          Importer
	 * @param type
	 * @param account
	 * @param password
	 * @return
	 */
	private ContactsImporter getContactsImporter(int type, String account,
			String password) {
		ContactsImporter importer = null;
		
		switch (type) {
			case EmailType.email_gmail:
				importer = ContactsImporterFactory.getGmailContacts(account, password);
				break;
			case EmailType.email_sina:
				importer = ContactsImporterFactory.getSinaContacts(account, password);
				break;
			case EmailType.email_163:
				importer = ContactsImporterFactory.getOneSixThreeContacts(account, password);
				break;
			case EmailType.email_yahoo:
				importer = ContactsImporterFactory.getYahooContacts(account, password);
				break;
			case EmailType.email_hotmail:
				importer = ContactsImporterFactory.getHotmailContacts(account, password);
				break;
			case EmailType.email_139:
				importer = ContactsImporterFactory.getOneThreeNineContacts(account, password);
				break;
			case EmailType.email_sohu:
				importer = ContactsImporterFactory.getSohuContacts(account, password);
				break;
			case EmailType.email_yeah:
				importer = ContactsImporterFactory.getSinaContacts(account, password);
				break;
			case EmailType.email_126:
				importer = ContactsImporterFactory.getOneTwoSixContacts(account, password);
				break;
			case EmailType.email_189:
				importer = ContactsImporterFactory.getOneEightNineContacts(account, password);
				break;
			case EmailType.email_tom:
				importer = ContactsImporterFactory.getTomContacts(account, password);
				break;
			case EmailType.email_msn:
				importer = ContactsImporterFactory.getMSNContacts(account, password);
				break;
			default:
				return null;
		}
		return importer;
	}

}

         프로젝트 가 필요 합 니 다. 가 져 온 연락 처 를 String 으로 되 돌려 주 고 정규 표현 식 으로 일치 합 니 다. 수정 해 야 할 형 제 는 list 집합 으로 바 꿀 수 있 습 니 다.메 일 을 보 내 는 인터페이스 가 회사 내부 로 설 계 된 물건 이 라 여 기 는 공개 하지 않 습 니 다.
        
         이 항목 은 많은 jar 패 키 지 를 가 져 와 야 합 니 다. jar 패 키 지 는 libs 폴 더 에 통일 적 으로 놓 여 있 습 니 다.형 들 끼 리 buildpath.
 
테스트 클래스 를 썼 습 니 다. 코드 가 별로 없습니다.
 
package com.duicky.email;

public class EmailManagerTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String emailAccount = "";	// your email account
		String password = "";		// you know
		int type = EmailType.email_msn;  // your email type ,  such : EmailType.email_msn;
		String str = EmailManager.getInstence().getEmailContacts(type, emailAccount, password);
		System.out.println("      :"+str);
	}

}

실행 효 과 는 다음 과 같 습 니 다:
      :<c><o><n>  1</n><e>[email protected]</e></o><o><n>  2</n><e>[email protected]</e></o><o><n>  3</n><e>[email protected]</e></o><o><n>  4</n><e>[email protected]</e></o></c>

이 항목 은 약간 부족 해서 대부분의 메 일 을 받 을 수 있 고 개별 메 일 주소록 을 얻 을 수 없다 (예 를 들 어 163, 139 = = =). 모든 학우 들 이 스스로 원본 코드 를 수정 하고 기어 가 려 고 한다.핵심 코드 구 글 코드 의 주 소 는?http://code.google.com/p/contact-list/。
 
전재 를 환영 합 니 다. 출처 를 밝 혀 주세요. http://blog.csdn.net/dui_cky/article/details/6785250
클릭 하여 이 항목 을 다운로드 합 니 다.

좋은 웹페이지 즐겨찾기