Download attachment from email

后端 未结 3 1715
无人共我
无人共我 2020-12-10 08:53

How can I browse the email and download all attachments ?

public string Connect_Email ()
{
    string Res = \"\";

    try
    {
        mailclient = new Tcp         


        
相关标签:
3条回答
  • 2020-12-10 09:11

    Thanks you all for your contribution. Finally I use POP3:

    public string Connect_Email()
    {
        string Res = "";
        try
        {
            Pop3Client email = new Pop3Client("login", "password", "server");
            email.OpenInbox();
    
            while (email.NextEmail())
            {
                if (email.IsMultipart)
                {
                    IEnumerator enumerator = email.MultipartEnumerator;
                    while (enumerator.MoveNext())
                    {
                        Pop3Component multipart = (Pop3Component)
                        enumerator.Current;
                        if (multipart.IsBody)
                        {
                            //Console.WriteLine("Multipart body:" + multipart.Name);
                        }
                        else
                        {
                            //Console.WriteLine("Attachment name=" +    multipart.Name); // ... etc
                            byte[] filebytes = Convert.FromBase64String(multipart.Data);
    
                            //Search FileName
                            int Begin = multipart.ContentType.IndexOf("name=");
                            string leFileNale = multipart.ContentType.Substring(Begin + 5, 12);
    
                            FileStream LeFS = new FileStream(filePath + "\\" + leFileNale, FileMode.Create, FileAccess.Write, FileShare.None);
                            LeFS.Write(filebytes, 0, filebytes.Length);
                            LeFS.Close();
                        }
                    }
                }
            }
            email.CloseConnection();
        }
        catch (Pop3LoginException)
        {
            Res = "Vous semblez avoir un problème de connexion!";
        }
        return Res;
    }
    

    It work well, but still I have to find and download the attachement my self.

    byte[] filebytes = Convert.FromBase64String(multipart.Data);
    
    //Search FileName
    int Begin = multipart.ContentType.IndexOf("name=");
    string leFileNale = multipart.ContentType.Substring(Begin + 5, 12);
    
    FileStream LeFS = new FileStream(filePath + "\\" + leFileNale, FileMode.Create, FileAccess.Write, FileShare.None);
    LeFS.Write(filebytes, 0, filebytes.Length);
    LeFS.Close();
    
    0 讨论(0)
  • 2020-12-10 09:12

    If you're trying to read e-mail via POP3, I would recommend using the OpenPOP.NET library instead of rolling your own. It's pretty easy to use.

    0 讨论(0)
  • 2020-12-10 09:18

    Try something like this

    using(Pop3 pop3 = new Pop3())  
     {  
         pop3.Connect("server");  
         pop3.UseBestLogin("user", "password");  
         foreach (string uid in pop3.GetAll())  
         {  
             IMail email = new MailBuilder()
             .CreateFromEml(pop3.GetMessageByUID(uid));  
             Console.WriteLine(email.Subject);  
             // save all attachments to disk  
             email.Attachments.ForEach(mime => mime.Save(mime.SafeFileName));  
         }  
         pop3.Close();  
     } 
    

    // here is a reference link you can use as well Getting Email Attachments

    0 讨论(0)
提交回复
热议问题