这两天看了一些交友网站,如facebook,校内,linkedin。他们在邀请网友时,实现的是直接可以导入homtmail好友列表。
今天也研究了一下,基本功能实现了,前台可以通过调用AJAX来得到这些数据。
本人现在直接输出这些好友邮箱与姓名。
///构造好友姓名与邮箱
public class FriendInfo
{
private string username;
private string email;
public FriendInfo(string username, string email)
{
this.username = username;
this.email = email;
}
public string UserName
{
get { return username; }
set { username = value; }
}
public string Email
{
get { return email; }
set { email = value; }
}
}
public class GetFriendInfo
{
protected XihSolutions.DotMSN.Messenger messenger = new Messenger();
protected string xmlPath = "";
protected AutoResetEvent are;//多线程同步信号
IList<FriendInfo> models = new List<FriendInfo>();
public void Connect()
{
try
{
messenger.Credentials.ClientID = "msmsgs@msnmsgr.com";
messenger.Credentials.ClientCode = "Q1P7W2E4J9R8U3S5";
messenger.Credentials.Account = "yours@hotmail.com";
messenger.Credentials.Password = "password";
if(messenger.Connected)
messenger.Disconnect();
messenger.Connect();
are.WaitOne(); //UI线程等待
}
catch
{
}
}
/// <summary>
/// 获取列表开始
/// </summary>
public void GetFriendList()
{
are = new AutoResetEvent(false);
messenger.Nameserver.SignedIn += new EventHandler(Nameserver_SignedIn);
Connect();
}
private void Nameserver_SignedIn(object sender, EventArgs e)
{
try
{
messenger.Owner.Status = PresenceStatus.Online;
SetFriendInfo();
//UpdateContactlist();
}
catch
{
}
}
/// <summary>
/// 填充好友列表
/// </summary>
private void SetFriendInfo()
{
try
{
if(messenger.Connected == false)
return;
FriendInfo model = null;
foreach(Contact contact in messenger.ContactList.Allowed)
{
model = new FriendInfo(contact.Name,contact.Mail);
models.Add(model);
}
are.Set();//通知UI线程可以继续干活了。。
}
catch(Exception ex)
{
throw ex;
}
}
/// <summary>
/// 返回列表数据
/// </summary>
/// <returns></returns>
public IList<FriendInfo> GetFriendListInfo()
{
return models;
}
}
///以下是aspx页面调用
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetFriendInfo getFriendInfo = new GetFriendInfo();
getFriendInfo.GetFriendList();
IList<FriendInfo >model = getFriendInfo.GetFriendListInfo();
foreach(FriendInfo info in model)
{
Response.Write(info.UserName+"||"+info.Email + "<br/>");
}
}
}
以上代码比较粗糙,希望大家能看懂。DotMSN类。可以baiadu一下直接搜索到。官网现在出的是2.02最新版