dealing with email attachement


Hello group,

Using a C# class I am able to open a file on POP3 server (Thanks to CodeProject) but now the issues is that the attached PDF file to email is in encoded into base64 (algorithm) I guess. How can I save it as a real PDF file now?

Any help is appreciated.

Regards,
ak

Content-Transfer-Encoding: base64
Content-ID: <931142921@25062009-2C73>
Content-Description: image002.jpg
Content-Location: image002.jpg
 
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf
IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7
Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCACHAJoDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
 
and more ...

Open in new window

akohanAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Jaime OlivaresSoftware ArchitectCommented:
Well, in the example you provide, there is a jpeg file, not a pdf
Besides this, you can use Convert.FromBase64String() method:
http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx

so, having a string encoded in base64, you can write it to a file like:

byte[] binaryData;
            try {
                byte[] binaryData = System.Convert.FromBase64String(yourBase64String);
                System.IO.WriteAllBytes("yourFilePath", binaryData);
            }
            catch { }
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
akohanAuthor Commented:

Thank you so much for your help but one thing I'm not sure is how should I know or how does the function know where it starts and where it ends?

Once again thank you.

Regards.
0
jwentingCommented:
Where the encoded content starts is defined in the protocol definition for the email format (in this cases POP3/SMTP.

Seeing the simple example you give, that would be right after the headers and any whitespace following them, so at the beginning of line 6.
If the file is an attachment instead of inlined in the email, it could well be contained as encoded data inside the headers.
0
Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

basiclifeCommented:
Headers should have a single cariage return between each of them and a double carriage return after the last one.
0
basiclifeCommented:
The carriage returns mentioned are actually \r\n (CR followed by a line feed)


eg:

Content-Transfer-Encoding: base64\r\n
Content-ID: <931142921@25062009-2C73>\r\n
Content-Description: image002.jpg\r\n
Content-Location: image002.jpg\r\n
\r\n
CONTENT_HERE
Also between each section should be something like this

------_=_NextPart_001_01C9FAF9.FBDB9745

As mentioned above, check the email specification for what to look for. Each section should tell you what the "boundary" is for the next section as shown below

Content-Type: multipart/mixed; boundary="=======AVGMAIL-31DB56D0======="


--=======AVGMAIL-31DB56D0=======
Content-Type: multipart/related;
    boundary=----_SmarterMail_NextPart_5110738565878520


Which shows you how one boundary leads on to another

Open in new window

0
akohanAuthor Commented:

Hello all,

Thanks for your comments and hints. Does this mean that I should read it line by line? Below I have pasted a smal portion of the PDF file (in base64). From what I have understood so far I think that I have to read a text file and keep an eye on those boundries like two numeric lines in below:



--------------080501060300010207080106--

--------------080107050402070004010208



Content-Type: application/pdf;
 name="myfile.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="test.pdf"

JVBERi0xLjQNJeLjz9MNCjEzMCAwIG9iag08PC9MaW5lYXJpemVkIDEvTCAyNjY0NTMvTyAx
MzIvRSAzODk4MS9OIDM2L1QgMjYzODA1L0ggWyA3MTYgNTc3XT4+DWVuZG9iag0gICAgICAg
ICAgICAgDQp4cmVmDQoxMzAgMjENCjAwMDAwMDAwMTYgMDAwMDAgbg0KMDAwMDAwMTI5MyAw
MDAwMCBuDQowMDAwMDAxMzc4IDAwMDAwIG4NCjAwMDAwMDE1MTIgMDAwMDAgbg0KMDAwMDAw
MTcwNyAwMDAwMCBuDQowMDAwMDAyNDIxIDAwMDAwIG4NCjAwMDAwMDI3MjggMDAwMDAgbg0K
MDAyNTk2MDkgMDAwMDAgbg0KMDAwMDI1OTc0MiAwMDAwMCBuDQowMDAwMjU5ODQ4IDAwMDAw
........................................................................
........................................................................
........................................................................
........................................................................
IG4NCjAwMDAyNjM1NDMgMDAwMDAgbg0KdHJhaWxlcg0KPDwvU2l6ZSAxMzA+Pg0Kc3RhcnR4
cmVmDQoxMTYNCiUlRU9GDQo=
--------------080107050402070004010208
Content-Type: multipart/alternative;
      boundary="=======AVGMAIL-3918184C======="

--=======AVGMAIL-3918184C=======
Content-Type: text/plain; x-avg=cert; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
Content-Description: "AVG certification"


No virus found in this incoming message.
Checked by AVG - www.avg.com 
Version: 8.5.375 / Virus Database: 270.13.2/2214 - Release Date: 07/02/09 05=
:54:00

--=======AVGMAIL-3918184C=======--
--------------080107050402070004010208--


Thanks,
ak
0
akohanAuthor Commented:

Thanks!
0
akohanAuthor Commented:

Thanks to all for your help.

0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Email Protocols

From novice to tech pro — start learning today.