電子メール添付ファイルを取得し、以下のコードを使用してファイルシステムの特定のディレクトリに保存しようとしています。Openpop.NET特定のフォルダへの添付ファイルの取得
Dim objMail As Message = New Message(Encoding.ASCII.GetBytes(strMessage))
For Each att In objMail.FindAllAttachments()
Dim Stream as FileStream = New FileStream("D:\XX\" & att.FileName.ToString(),
FileMode.Create)
Dim BinaryStream As New BinaryWriter(Stream)
BinaryStream.Write(BitConverter.ToString(att.Body))
BinaryStream.Close()
Next
また、私は目的のフォルダに添付ファイルを保存することができています。このコードを使用してatt.GetBodyasText()
を試してみました。しかし、ファイルを開いているときにエラーが表示されます - >ファイルが適切でないフォーマットまたは正しくデコードされていません。
私は、MIMEのエンコード/デコードを初めて行っています。この問題を解決するのを手伝ってください。
本当に緊急です。
クイックレスポンスに感謝します。 私はデータベースからメールを取得し、メールの添付ファイルを取得しようとしています。 データベース内のメールの内容は、varbinaryデータ型に保存されます。私はそれらのメールの内容をいくつかの処理のために文字列に変換し、再びASCIIEncoding.ASCII.getBytes()を使用してバイト()に変換する添付ファイルを取得しています..また、att.GetBodyAsText()、att.BodyをBinaryWriter 。しかし、まだエラーは同じです!デコードされません正常に開いてエクスポートされたPDFドキュメント..助けてください。 –
また、もう一つ..私は適切な形式でPlainTextとHtml MessagePartを取得しています..私もatt.SaveToFile(新しいFileInfo( "ファイルパス")を試してみました)添付ファイルを保存することはできますが、改善はありません –
電子メールをデータベースに追加したのは誰ですか?電子メール(未処理)_CANNOT_は文字列として格納されますが、それは意味をなさないためです。代わりにBLOB(Binary Large OBject)として格納するか、生のバイトを格納しやすくする必要があります。 ASCII.getBytes()を使用する場合は、電子メール全体がASCIIであることを確認する必要があります。そうしないと、間違ったバイトが生成され、後でOpenPopはこれらのバイトを見つけ出して間違った添付ファイルを作成します。私はこれがあなたの主な問題だと思う。簡単に言えば、あなたは、すべてのコンテンツが間違ったエンコーディングによって破壊されたかもしれない電子メールをOpenPopに与えています。 – foens