I am a developer of OpenPop.NET.
There are multiple issues with the code you are using to instantiate the Message class:
- Where is the strMessage contents comming from?
- How do you know it is encoded in only ASCII?
These are two major issues that will likely make a big difference.
You should NOT be using a string to contain the message, instead you should be using raw bytes!
For example (in C#):
byte[] byteMessage = someFileStream.ReadToEnd();
Message message = new Message(byteMessage);
In this way, you will not destroy the message by using a wrong encoding on the bytes. Typically the email will include a header which tells how to decode to bytes to a string, which is what the OpenPop Message class will do for you.
Now let me explain attachments. Attachments are typically raw bytes, for example a PNG picture is some bytes that a PNG picture reader will understand. For the PNG picture reader to understand the picture, the attachments raw bytes must be saved to a file. You can get the raw bytes using att.Body.
There are also attachments where the raw bytes does not make sense - for example a text attachment encoded in BASE64 is not very useful for a text reader program, and such an attachment must be converted to text before saved. You can get the text using att.GetBodyAsText().
What you are doing is taking the raw bytes for the attachment and then using a BitConverter to convert it into hexadecimal numbers - which I cannot make any meaning of. Instead, you should change your:
BinaryStream.Write(BitConverter.ToString(att.Body))
to
BinaryStream.Write(att.Body)
in case your attachment is a picture or some more complex file.
I hope this can help with your problem.