Hi…
You can try this code sample
HTML Code
-------
<form id="form1" runat="server">
<b>Fetch Contacts From yahoo using asp.net and c#</b>
Yahoo Login
<table>
<tr>
<td>
UserName:
</td>
<td>
<asp:TextBox ID="txtusername" runat="server"></asp:TextBox>e.g user@yahoo.com
</td>
</tr>
<tr>
<td>
Password:
</td>
<td>
<asp:TextBox ID="txtpassword" runat="server" TextMode="Password"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btnSubmit" runat="server" Text="Get Contacts From Yahoo Account"
OnClick="btnSubmit_Click" />
</td>
</tr>
</table>
<div id="dvcontacts" runat="server">
</div>
</form>
CS Code Sample
--------
using System;
using System.Collections.Specialized;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
public partial class YahooContact : System.Web.UI.Page
{
private const string _addressBookUrl = "http://address.yahoo.com/yab/us/Yahoo_ab.csv?loc=us&.rand=1671497644&A=H&Yahoo_ab.csv";
private const string _authUrl = "https://login.yahoo.com/config/login?";
private const string _loginPage = "https://login.yahoo.com/config/login";
private const string _userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3";
private string username = string.Empty;
private string password = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
}
private ArrayList Extract(string uname, string upass)
{
bool result = false;
ArrayList myarray = new ArrayList();
//list = New MailContactList()
try
{
WebClient webClient = new WebClient();
webClient.Headers[HttpRequestHeader.UserAgent] = _userAgent;
webClient.Encoding = Encoding.UTF8;
byte[] firstResponse = webClient.DownloadData(_loginPage);
string firstRes = Encoding.UTF8.GetString(firstResponse);
NameValueCollection postToLogin = new NameValueCollection();
Regex regex = new Regex("type=\"hidden\" name=\"(.*?)\" value=\"(.*?)\"", RegexOptions.IgnoreCase);
Match match = regex.Match(firstRes);
while (match.Success)
{
if (match.Groups[0].Value.Length > 0)
{
postToLogin.Add(match.Groups[1].Value, match.Groups[2].Value);
}
match = regex.Match(firstRes, match.Index + match.Length);
}
postToLogin.Add(".save", "Sign In");
postToLogin.Add(".persistent", "y");
//Dim login As String = credential.UserName.Split("@"c)(0)
string login = uname.Split('@').GetValue(0).ToString();
postToLogin.Add("login", login);
postToLogin.Add("passwd", upass);
webClient.Headers[HttpRequestHeader.UserAgent] = _userAgent;
webClient.Headers[HttpRequestHeader.Referer] = _loginPage;
webClient.Encoding = Encoding.UTF8;
webClient.Headers[HttpRequestHeader.Cookie] = webClient.ResponseHeaders[HttpResponseHeader.SetCookie];
webClient.UploadValues(_authUrl, postToLogin);
string cookie = webClient.ResponseHeaders[HttpResponseHeader.SetCookie];
//If String.IsNullOrEmpty(cookie) Then
//Return False
//End If
string newCookie = string.Empty;
string[] tmp1 = cookie.Split(',');
foreach (string var in tmp1)
{
string[] tmp2 = var.Split(';');
newCookie = (String.IsNullOrEmpty(newCookie) ? tmp2[0] : newCookie + ";" + tmp2[0]);
}
// set login cookie
webClient.Headers[HttpRequestHeader.Cookie] = newCookie;
byte[] thirdResponse = webClient.DownloadData(_addressBookUrl);
string thirdRes = Encoding.UTF8.GetString(thirdResponse);
string crumb = string.Empty;
Regex regexCrumb = new Regex("type=\"hidden\" name=\"\\.crumb\" id=\"crumb1\" value=\"(.*?)\"", RegexOptions.IgnoreCase);
match = regexCrumb.Match(thirdRes);
if (match.Success && match.Groups[0].Value.Length > 0)
{
crumb = match.Groups[1].Value;
}
NameValueCollection postDataAB = new NameValueCollection();
postDataAB.Add(".crumb", crumb);
postDataAB.Add("vcp", "import_export");
postDataAB.Add("submit[action_export_yahoo]", "Export Now");
webClient.Headers[HttpRequestHeader.UserAgent] = _userAgent;
webClient.Headers[HttpRequestHeader.Referer] = _addressBookUrl;
byte[] FourResponse = webClient.UploadValues(_addressBookUrl, postDataAB);
string csvData = Encoding.UTF8.GetString(FourResponse);
string[] lines = csvData.Split('\n');
//Dim list1 As Hashtable()
foreach (string line in lines)
{
string[] items = line.Split(',');
if (items.Length < 5) { continue; } string email = items[4]; string name = items[3]; if (!string.IsNullOrEmpty(email) && !string.IsNullOrEmpty(name)) { email = email.Trim('"'); name = name.Trim('"'); if (!email.Equals("Email") && !name.Equals("Nickname")) { MailContact mailContact = new MailContact(); mailContact.Name = name; mailContact.Email = email; myarray.Add(email); //list.Add(mailContact) } } } result = true; } catch { } return myarray; } protected void btnSubmit_Click(object sender, EventArgs e) { ArrayList contacts = new ArrayList(); StringBuilder sb = new StringBuilder(); contacts = Extract(txtusername.Text.Trim(), txtpassword.Text.Trim()); int j = 1; for (int i = 0; i < contacts.Count; i++) { if (contacts[i].ToString().Trim() != "") { sb.Append("(" + j + ") " + contacts[i].ToString() + "
");
j++;
}
}
dvcontacts.InnerHtml = sb.ToString();
}
}
public class MailContact
{
private string _email = string.Empty;
private string _name = string.Empty;
public string Name
{
get { return _name; }
set { _name = value; }
}
public string Email
{
get { return _email; }
set { _email = value; }
}
public string FullEmail
{
get { return Email; }
}
}