Download email using IMAP:
using(Imap imap = new Imap())
{
imap.Connect("imap.example.com"); // or ConnectSSL for SSL
imap.UseBestLogin("user", "password");
imap.SelectInbox();
List<long> uids = imap.Search(Flag.Unseen);
foreach (long uid in uids)
{
var eml = imap.GetMessageByUID(uid);
IMail email = new MailBuilder().CreateFromEml(eml);
foreach (MimeData mime in email.Attachments)
{
// here you can check the content type or the file name.
if (mime.ContentType == ContentType.TextCsv)
{
...
}
}
}
imap.Close();
}
If the csv file is attached to the email you can directly access attachment’s data as stream using MimeData.GetMemoryStream() method:
MemoryStream stream = mime.GetMemoryStream();
or as byte array using MimeData.Data property:
byte[] data = mime.Data;
If your csv attachment has correct mime type (text/plain or text/csv), you can also cast MimeData to MimeText and use Text property to access csv data as regular .NET string:
string text = ((MimeText)mime).Text;
As for your question on how to save this data to database, it depends on the db you are using (MSSQL, Oracle, MySql, document db) and its structure. I don't think I can help you with so little information.