Pourquoi la taille de fixation donnée par l'interface de programmation Outlook est toujours tort?
Question
Essayer d'utiliser Outlook Interop en C #, j'ai remarqué une chose curieuse.
- Tout d'abord je reçois la taille d'une pièce jointe avec méthode Attachment.SaveAsFile .
En comparant la taille réelle d'un fichier enregistré et d'une taille donnée par Outlook, je remarque que le réel, fichier enregistré est toujours plus faible que prévu de Attachment.Size
. Les fichiers sauvegardés semblent être valides et non tronquée.
résultats d'exemples http://www.freeimagehosting.net/uploads /224d342eba.png
Alors, quel est le problème? Y at-il un bogue dans Attachment.Size
? Ou peut-être il est prévu de donner autre chose que la taille d'une pièce jointe?
Je pense qu'il convertit CR à CRLF, y compris les fichiers binaires, ce qui peut expliquer les frais généraux, mais certains fichiers joints sont au format texte brut avec CRLF, cette hypothèse est fausse.
Première édition:
Il n'est pas Base64, car l'encodage base64 serait:
- rapport 03/04. Dans mon cas, j'ai un rapport qui est pas loin de 1.0.
- proportionnelle. Il est pas le cas ici. Un fichier de 1,9 Mo a une surcharge de 181 octets, alors qu'un fichier de 27 Ko a une surcharge de 3 Ko
Maintenant, regardant en tête presque au hasard dans une gamme de 89 à 3658 octets, je suis d'accord qu'il pourrait y avoir des têtes étranges.
Deuxième édition:
Je l'ai testé cela sur un ensemble de fichiers plus volumineux. Ce que je remarque est que la différence entre la vraie taille du fichier et la taille donnée par Outlook:
- est toujours égale à zéro pour une pièce jointe .msg. Mais l'attachement .msg est un cas très particulier et d'avoir un comportement très étrange.
- est influencé à la fois par extension de fichier et la longueur du nom de fichier.
- Pour la même extension de fichier, est, dans la plupart des cas, mais pas toujours , plus grand lorsque la longueur du nom de fichier est plus grand.
Voici un exemple:
texte alt http://www.freeimagehosting.net/ ajouts / a767d3cacf.png
à mon humble avis, Outlook ne quelque chose avec le nom du fichier, une sorte d'encodage très étrange, peut-être une génération d'un identifiant unique en fonction du nom de fichier . Cela signifie que:
- lorsque le fichier est plus grand, l'identifiant unique est plus grand aussi.
- lorsque la collision se produit, quelque chose arrive à l'identifiant unique, ce qui en fait beaucoup, beaucoup plus grand: la ligne 18 a le même nom de fichier que la ligne 11, mais le fichier est pas le même; d'autre part, les lignes 12, 13 et 14 ont le même fichier.
La solution
Je ne suis pas sûr, mais je suppose qu'il pourrait être en-têtes MIME et / ou codant les frais généraux. Pour plus d'informations, consultez ce article Wiki sur les base64 et la recherche de la surcharge de mots.
Edit: Désolé, je ne suis pas très clair, je voulais dire l'article base64 comme un exemple de ce qu'il pourrait y avoir les frais généraux liés à l'encodage, pas qu'il était en fait base64 puisque, comme mentionné par d'autres, les frais généraux base64 probablement être beaucoup plus grande que ces différences.