I'm looking for code (Symbian C++) that can do the following things:
1-Analyzing the (MIME) types (Content-typemContent-transfere-encoding,Mime Version,Conent Description).
2-Download attached files from the (MMS/Email).
3-Uploading to email or (MMS) .
4-Dealing with Multi-Part Messages.
Here Is A Methods That Can HelP In doing Decoding:
Expand|Select|Wrap|Line Numbers
- TInt CMimCodeBase::DecodeBase64Char(TInt nCode)
- {
- if (nCode >= 'A' && nCode <= 'Z')
- return nCode - 'A';
- if (nCode >= 'a' && nCode <= 'z')
- return nCode - 'a' + 26;
- if (nCode >= '0' && nCode <= '9')
- return nCode - '0' + 52;
- if (nCode == '+')
- return 62;
- if (nCode == '/')
- return 63;
- return 64;
- }
- TInt CMimCodeBase::DecodeBase64(TUint* pbOutput, TInt nMaxSize)
- {
- //const unsigned char* pbData = m_pbInput;
- TUint* pbData = m_pbInput;
- TUint* pbEnd = m_pbInput + m_nInputSize;
- //unsigned char* pbOutStart = pbOutput;
- TUint* pbOutStart = pbOutput;
- //unsigned char* pbOutEnd = pbOutput + nMaxSize;
- TUint* pbOutEnd = pbOutput+ nMaxSize;
- TInt nFrom = 0;
- //unsigned char chHighBits = 0;
- TUint chHighBits = 0;
- while (pbData < pbEnd)
- {
- if (pbOutput >= pbOutEnd)
- break;
- //unsigned char ch = *pbData++;
- TUint ch = *pbData++;
- if (ch == '\r' || ch == '\n')
- continue;
- //ch = (unsigned char) DecodeBase64Char(ch);
- ch = (TUint) DecodeBase64Char(ch);
- if (ch >= 64) // invalid encoding, or trailing pad '='
- break;
- switch ((nFrom++) % 4)///--->Mod
- {
- case 0:
- chHighBits = ch << 2;//---->shif lif
- break;
- case 1:
- *pbOutput++ = chHighBits | (ch >> 4);///---->shift right
- chHighBits = ch << 4;
- break;
- case 2:
- *pbOutput++ = chHighBits | (ch >> 2);//------->
- chHighBits = ch << 6;
- break;
- default:
- *pbOutput++ = chHighBits | ch;
- }
- }
- //return (int)(pbOutput - pbOutStart);
- return (TInt)(pbOutput - pbOutStart);
- }///-------------------->
- void CMimCodeBase::SetInput(TUint* pbInput, TInt nInputSize, TBool bEncoding)
- {
- //m_pbInput = (const unsigned char*) pbInput;
- m_pbInput=pbInput;//pbInput.AllocL();
- m_nInputSize = nInputSize;
- m_bIsEncoding = bEncoding;
- }
- TInt CMimCodeBase::GetDecodeLength()
- {
- return m_nInputSize * 3 / 4 + 2;
- }
And Here Is A case for Email Attachment Need To Be Decoded And Saved Into the Hard Disk CanAny Body Let Me Know How To Code It Perfectly.
[HTML] This is a multi-part message in MIME format.
--Boundary_(ID_1OjO8r3ErxPyOk9tXRkEnQ)
Content-type: multipart/alternative;
boundary="Boundary_(ID_7oe8+k4uUDkoNNcclUAkTQ)"
--Boundary_(ID_7oe8+k4uUDkoNNcclUAkTQ)
Content-type: text/plain; charset=windows-1256
Content-transfer-encoding: 7BIT
Ok Please Read the PDF file
--Boundary_(ID_7oe8+k4uUDkoNNcclUAkTQ)
Content-type: text/html; charset=windows-1256
Content-transfer-encoding: 7BIT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML DIR=rtl><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256"></HEAD><BODY><DIV><FONT face='Arial' color=#000000 size=2>Ok Please Read the PDF file</FONT></DIV></BODY></HTML>
--Boundary_(ID_7oe8+k4uUDkoNNcclUAkTQ)--
--Boundary_(ID_1OjO8r3ErxPyOk9tXRkEnQ)
Content-type: application/pdf;
name="4925 Abstract-Paul Soffe and Enric Arderiu 8-23-06 R&A 09_06.pdf"
Content-transfer-encoding: base64
Content-disposition: attachment;
filename="4925 Abstract-Paul Soffe and Enric Arderiu 8-23-06 R&A 09_06.pdf"
Content-description: 4925 Abstract-Paul Soffe and Enric Arderiu 8-23-06 R&A
09_06.pdf
JVBERi0xLjQNJeLjz9MNCjU3IDAgb2JqPDwvSFs1OTYgMTgwXS 9MaW5lYXJpemVkIDEvRSA4NzIw
L0wgMTU1MjUvTiAxL08gNjAvVCAxNDMzOD4+DWVuZG9iag0gIC AgICAgICAgICAgICAgICAgICAg
DQp4cmVmDQo1NyAxNQ0KMDAwMDAwMDAxNiAwMDAwMCBuDQowMD AwMDAwOTQyIDAwMDAwIG4NCjAw
MDAwMDA1OTYgMDAwMDAgbg0KMDAwMDAwMTE4OSAwMDAwMCBuDQ owMDAwMDAxNDQyIDAwMDAwIG4N
CjAwMDAwMDE4MzQgMDAwMDAgbg0KMDAwMDAwMjM0MCAwMDAwMC BuDQowMDAwMDAyMzc0IDAwMDAw
IG4NCjAwMDAwMDUxMzAgMDAwMDAgbg0KMDAwMDAwNTI4OCAwMD AwMCBuDQowMDAwMDA3OTU3IDAw
MDAwIG4NCjAwMDAwMDgxOTYgMDAwMDAgbg0KMDAwMDAwODQyMy AwMDAwMCBuDQowMDAwMDA4NjQ0
IDAwMDAwIG4NCjAwMDAwMDA3NzYgMDAwMDAgbg0KdHJhaWxlcg 0KPDwvU2l6ZSA3Mi9QcmV2IDE0
MzI3L1hSZWZTdG0gNzc2L1Jvb3QgNTggMCBSL0luZm8gOCAwIF IvSURbPDNmMzZjMzA0YzY5Mzg0
ZTIwNzdiZTZmY2NmNGViYmMwPjwyOTlkNmZjMWQ5ZmYwNDQzOD MzNTJiNTliZTA1YjBlZT5dPj4N
CnN0YXJ0eHJlZg0KMA0KJSVFT0YNCiAgDQo1OSAwIG9iajw8L0 xlbmd0aCA5MS9GaWx0ZXIvRmxh
dGVEZWNvZGUvQyAxMTQvTCA5OC9PIDgyL1MgMzk+PnN0cmVhbQ 0KeNpiYGDgZmBg/sgABLLZDKiA
GYhZGDgaGBiRBLmhmIFBiYGHd2OabAPDKoWaJRvO8gjsZloAlg AqV4wB0kxAvAFsBoPqBCjfAmKu
Eg9EHXMLxFSAAAMAEUgL2Q0KZW5kc3RyZWFtDWVuZG9iag03MS AwIG9iajw8L1NpemUgNTcvTGVu
Z3RoIDIwL0ZpbHRlci9GbGF0ZURlY29kZS9EZWNvZGVQYXJtcz w8L0NvbHVtbnMgMy9QcmVkaWN0
b3IgMTI+Pi9XWzEgMSAxXS9UeXBlL1hSZWYvSW5kZXhbOSA0OF 0+PnN0cmVhbQ0KeNpiYmJmYGJg
YByqGCDAADpLAJUNCmVuZHN0cmVhbQ1lbmRvYmoNNTggMCBvYm o8PC9QYWdlcyA2IDAgUi9PdXRs
aW5lcyAxIDAgUi9UeXBlL0NhdGFsb2cvUGFnZUxhYmVscyA0ID AgUi9TdHJ1Y3RUcmVlUm9vdCA5
IDAgUi9NZXRhZGF0YSA3IDAgUi9QaWVjZUluZm88PC9NYXJrZW RQREY8PC9MYXN0TW9kaWZpZWQo
RDoyMDA2MDgyMzA5NDQyNSk+Pj4+L0xhc3RNb2RpZmllZChEOj IwMDYwODIzMDk0NDI1KS9NYXJr
SW5mbzw8L01hcmtlZCB0cnVlL0xldHRlcnNwYWNlRmxhZ3MgMD 4+Pj4NZW5kb2JqDTYwIDAgb2Jq
PDwvQ29udGVudHMgNjQgMCBSL1R5cGUvUGFnZS9QYXJlbnQgNi AwIFIvUm90YXRlIDAvTWVkaWFC
b3hbMCAwIDYxMiA3OTJdL0Nyb3BCb3hbMCAwIDYxMiA3OTJdL1 Jlc291cmNlczw8L0NvbG9yU3Bh
Y2U8PC9DUzAgNjMgMCBSPj4vRm9udDw8L1RUMiA2NSAwIFIvVF QwIDYxIDAgUi9UVDEgNjIgMCBS
Pj4vUHJvY1NldFsvUERGL1RleHRdL0V4dEdTdGF0ZTw8L0dTMC A3MCAwIFI+Pj4+L1N0cnVjdFBh
cmVudHMgMD4+DWVuZG9iag02MSAwIG9iajw8L1R5cGUvRm9udC 9FbmNvZGluZy9XaW5BbnNpRW5j
b2RpbmcvQmFzZUZvbnQvQXJpYWwtQm9sZE1UL0ZpcnN0Q2hhci AzMi9MYXN0Q2hhciAxMjEvU3Vi
dHlwZS9UcnVlVHlwZS9Gb250RGVzY3JpcHRvciA2OCAwIFIvV2 lkdGhzWzI3OCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAzMzMgMCAwIDAgMCAwIDAgMCAwIDAgMC AwIDAgMCAwIDAgMCAwIDAgMCA3
MjIgNzIyIDcyMiAwIDY2NyAwIDAgMCAwIDAgMCAwIDAgMCAwID Y2NyAwIDcyMiA2NjcgNjExIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDU1NiA2MTEgNTU2IDYxMS A1NTYgMzMzIDYxMSA2MTEgMjc4
IDI3OCAwIDI3OCA4ODkgNjExIDYxMSA2MTEgMCAzODkgNTU2ID MzMyA2MTEgNTU2IDAgMCA1NTZd
Pj4NZW5kb2JqDTYyIDAgb2JqPDwvVHlwZS9Gb250L0VuY29kaW 5nL1dpbkFuc2lFbmNvZGluZy9C
YXNlRm9udC9BcmlhbE1UL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhci AxNDYvU3VidHlwZS9UcnVlVHlw
ZS9Gb250RGVzY3JpcHRvciA2OSAwIFIvV2lkdGhzWzI3OCAwID AgMCAwIDg4OSAwIDAgMzMzIDMz
MyAwIDAgMjc4IDMzMyAyNzggMjc4IDU1NiA1NTYgNTU2IDU1Ni A1NTYgNTU2IDAgNTU2IDU1NiA1
NTYgMjc4IDI3OCAwIDAgMCAwIDEwMTUgNjY3IDAgNzIyIDcyMi A2NjcgNjExIDc3OCA3MjIgMjc4
IDUwMCA2NjcgMCA4MzMgNzIyIDc3OCA2NjcgMCA3MjIgNjY3ID YxMSA3MjIgMCAwIDY2NyAwIDAg
MCAwIDAgMCAwIDAgNTU2IDU1NiA1MDAgNTU2IDU1NiAyNzggNT U2IDU1NiAyMjIgMjIyIDUwMCAy
MjIgODMzIDU1NiA1NTYgNTU2IDU1NiAzMzMgNTAwIDI3OCA1NT YgNTAwIDcyMiA1MDAgNTAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC AwIDAgMCAwIDIyMl0+Pg1lbmRv
YmoNNjMgMCBvYmpbL0lDQ0Jhc2VkIDY2IDAgUl0NZW5kb2JqDT Y0IDAgb2JqPDwvTGVuZ3RoIDI2
ODYvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJlFdrj9 vGFf2+v2K+BJCKFc3hm2kQdCNv
XMdwatgKUCDbDxQ5ksahSHZIab399T33Dklpdymlhdd8iZz7Ov ecO28+iR9+ePNx+f6tcMWPP/70
dilu3iy/uCJv8YD+iTavbqTQeP4Oz7ftzU+rmzerlSukWG1uFq7jum4sVr ngq0isHumrVSukS+f/
4G5lhIwc1+MF7VXqOWEiYjd06JP9zezTYV3qfNEYfcw6JZrMdJ Uy7U43rcjwJ45qp/NSiU1thMpM
+SQaU39VeSfmq6+9H1KSeemEXoLLhXRkkCZiVdzMVLXLqlztVd WJrCp4lUw0das7fYQ5o3JV0I+t
6jpdbXnR+9XN/UfKyClLcsjSRBYCygJfeuyGO4bMV56fOF6YpqmIYt9J+AqR/z4Tn7JDKb7Um40S
2Tycwb37yuhc3JliHs3UfCFnRh/E/F+rX6Z88p77JM998k4+TTsVIVuBG3giCiV94HvWqfu8/qLg
TD5f+LODQZrorhXvTH1ocHXRG/+KN1Sf3p3En3QnRo48Nw5F5KfkmB9bdGTmD7FEfUxW3l6qTXDF
cjgalqmctBxGTuJKFDHyEjzoEzEL3DeBFGz/HoX50hmluosuhFdciE8uROmkCylVQHoIHk0SomQM
kNk/vgGtxa24ZDS6YtQ/ZdyT04HHrhMkEi9G1I1IeWAR8FulO1WID+gG1LvA/5qQuHculj6edOSV
H/GkG0nsSFeGoQhTHw08Bv9PLPPL20uxJxdNWqy5lzoxSmTiiTDx uEuiHvRzf7bgIDNdfj8PZrra
4FijC/+Gs8rpqlU45Acc0BX0ztybqdaZS5eaxZvV+4sJSp976/XekqMvfUwtVmMRoj4RAGxp8iIv
uZPEdOIl6TugQl6fr7wopv5ypQjD0JEJ5wsG7n76svp8t1xdND TNgO6UjSR1QHIRSopmlpaCrsXg
TS79OjMi9CInDgaXL653hYqAeKtZHnyb7AsyI0PHQ2Zii47lfB FTD4ChUehkpgw9qOiByNZ0qg90
7AT/oOeLYNbSi3yFLuIX+Q3CyZ6X4heauZzt6E7RwX7NJgRBjS7Ozf LluIyxK2r7BiOPq5728QUJ
E7/nOWC+iBqiQCytIChvgHexBaNVuNnVhwHdYpvxuSUDcDkiTcKx2 yltRKHKOdzolNE414dWnKxG
1qoMk5izuhjsQowDSjQZ1/smy7t52q9PnlRii2OJPNTrrOSwS73HJEDe7MiDVjTUcrbDGvoa 5ASH
xOB0Zqwbgwep38cdJm4yxJ3vWPr389jqarerC9Y1empI4ooDqZ 6ucNzSG31+Qs4P3lRIDn/B1qZV
djFY5agjEnoyrva6bXVd8ee6EqATXHVCQflznkMes6fWEe8rBK Zb/F516hupzcnUa0L3YEOm3hDh
FutUnBiFAWr7JDSll2NVVUtGskHWYZJ0HVjY8AcfdVGUahT3xb Dyee3us9ZOUO/w3oGWLTfis9pq
ioXN3IpWbyuyutF5hpGqqWG5owcZvy/UN9127ZX8wbAfhf4QEhenA9bg45IdzCrxVh1VWTd7Ndjt
xEceWHbZ8ES3e0LHw2z59uPD3BEXeVlOjw7uRQUBOQSgTchUGl/noGsTQS9Rjpv64SUOCoKAu9m3
HPSeAqcoFUF4TVHSrYEOCZmmuIxvhYxxdrmJ6gNmJju6UcXpWW GyTWd7h0r94em8bWAo6CuQJNEI
qrqrxSeD4wCdmnu0wGAINzAuU87FHqNR3zi460GF13779Wccl/BxuXRO2GIDzztkhQ/2NRCmKbym
Nh0BKBvcbzj0blj6w9Po1+AUuWMjpReyom7AjBU5gW/Wuipotue+2+
--Boundary_(ID_1OjO8r3ErxPyOk9tXRkEnQ)--
[/HTML]