• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 470
  • Last Modified:

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

0
akohan
Asked:
akohan
1 Solution
 
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
 
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
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now