0

Koolwired.Imapを使用して添付ファイルを取得しています。以下は私が書いたコードです。

K=Koolwired.Imapを使用します。

    public void GetAttachmentsTest(string thread, string selectFolder, string fileName)
    {

        K.ImapConnect connect = new K.ImapConnect(Global.host);

        K.ImapCommand command = new K.ImapCommand(connect);

        K.ImapAuthenticate auth = new K.ImapAuthenticate(connect, Global.username, Global.password);
        connect.Open();
        auth.Login();

        K.ImapMailbox mailBox = command.Select(Global.inbox);
        mailBox = command.Fetch(mailBox);

        K.ImapMailboxMessage mbstructure = new K.ImapMailboxMessage();

        while (true)
        {
            try
            {

                    int mailCount = mailBox.Messages.Count;

                    if (mailCount == 0)
                    {
                        Console.WriteLine("no more emails");
                        break;
                    }

                    for (int i = 0; i < mailCount; ++i)
                    {
                        mbstructure = mailBox.Messages[mailCount - 1];
                        mbstructure = command.FetchBodyStructure(mbstructure);

                        for (int j = 0; j < mbstructure.BodyParts.Count; ++j)
                        {
                            if (mbstructure.BodyParts[j].Attachment)
                            {
                                //Attachment
                                command.FetchBodyPart(mbstructure, mbstructure.BodyParts.IndexOf(mbstructure.BodyParts[j]));

                                //Write Binary File
                                string tempPath = Path.GetTempPath();
                                FileStream fs = new FileStream(tempPath + mbstructure.BodyParts[j].FileName, FileMode.Create);
                                int length = Convert.ToInt32(mbstructure.BodyParts[j].DataBinary.Length);
                                fs.Write(mbstructure.BodyParts[j].DataBinary, 0,length);
                                fs.Flush();
                                fs.Close();

                            }
                        }

                    }



            }
            catch (Exception ex)
            {
                Console.WriteLine("T1 " + ex.Message);
                Console.WriteLine("T1 " + ex.StackTrace);
                if (ex.InnerException != null)
                    Console.WriteLine("T1 " + ex.InnerException.Message);
            }
        }

    }

次のステートメントでエラーが発生します。

int length = Convert.ToInt32(mbstructure.BodyParts [j] .DataBinary.Length);

fs.Write(mbstructure.BodyParts [j] .DataBinary、0、length);

エラーは次のとおりです。

入力には、Base 64以外の文字、2つを超えるパディング文字、またはパディング文字の中に不正な文字が含まれているため、有効なBase-64文字列ではありません。

上記のコードは、添付ファイルが1つしかない場合に表示される行で分類されます。

複数の添付ファイルがある場合:

次に、コードはオンラインで分解されます

mbstructure = command.FetchBodyStructure(mbstructure);

エラーは次のとおりです。

無効な形式では、本体部分のヘッダーを解析できませんでした。

私はこの任務の面倒を見るのにとても近いです。誰か助けてくれませんか。

また、メールを取得したら削除する方法も知りたいです。

ありがとう。

4

1 に答える 1