Free Yahoo! Mail via IMAP
Update: Mail.dll issues custom ID command automatically, when it recognizes you are accessing yahoo server.
It is possible to get direct Yahoo! IMAP access.
Yahoo! operates IMAP servers (imap.mail.yahoo.com in particular), which are globally accessible.
However they require a specific, but non-standard IMAP command to be sent before login is done. The command is: “ID (“GUID” “1”)”
// C# imap.SendCommand(@"ID (""GUID"" ""1"")");
' VB imap.SendCommand("ID (""GUID"" ""1"")")
You can also use IMAP over SSL on the standard port 993.
Here’s the full C# version of the code:
using (Imap imap = new Imap()) { imap.ConnectSSL("imap.mail.yahoo.com"); // Not needed as Mail.dll is going to issue this command automatically // imap.SendCommand(@"ID (""GUID"" ""1"")"); imap.Login("user", "password"); imap.SelectInbox(); List<long> uidList = imap.Search(Expression.All()); foreach (long uid in uidList) { IMail email = new MailBuilder() .CreateFromEml(imap.GetMessageByUID(uid)); Console.WriteLine(email.Subject); } imap.Close(); }
and VB.NET version:
Using imap As New Imap() imap.ConnectSSL("imap.mail.yahoo.com") ' Not needed as Mail.dll is going to issue this command automatically 'imap.SendCommand("ID (""GUID"" ""1"")") imap.Login("user", "password") imap.SelectInbox() Dim uidList As List(Of Long) = imap.Search(Expression.All()) For Each uid As Long In uidList Dim email As IMail = New MailBuilder() _ .CreateFromEml(imap.GetMessageByUID(uid)) Console.WriteLine(email.Subject) Next imap.Close() End Using
Yahoo’s IMAP server differences:
– non-standard command ID command is required before any other command,
– Examine explicitly requires CLOSE command (Imap.CloseCurrentFolder), otherwise subsequent SELECT (Imap.Select) has no effect and mailbox is still in read-only stat,
-Yahoo does not support IDLE command,
– SELECT for not existing folder does not create new folder.
You can download the latest version of Mail.dll .NET IMAP component here
September 14th, 2014 at 23:34
how to do this in PHP?
thanks
September 20th, 2014 at 10:47
@Buzzknow
I don’t know PHP, but I’m sure that there are components for IMAP in PHP. Remember that you need to issue custom ID command, so the component needs to support that.
By the way Mail.dll has this already incorporated in the Connect method, so users don’t need to even know about the Yahoo’s non-standard IMAP implementation.
May 30th, 2016 at 20:46
If IDLE is not supported by Yahoo then how can we get notifications of new mails
May 31st, 2016 at 14:07
@Archana
In such case, you can only poll (connect, search, disconnect) for messages at specified interval.
June 10th, 2016 at 21:01
Hi,
I keep getting the below exception no matter what i do, this exception occurs only when dealing with yahoo.
Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
June 11th, 2016 at 09:28
@Archana
This is not the problem with Mail.dll – it’s a problem with your network or yahoo (I can connect, so it’s rather the former).
Are you sure you have specified Yahoo’s IMAP server address correctly?
Please consult your network administrator on why you can’t connect to this address.