Dvě tečky v názvu přílohy vyhazují vyjímku

0 votes
asked May 29, 2012 by Jiří Zídek (180 points)
edited May 29, 2012

Dobrý den, máme od vás Rebex SecureEmail pack. Narazili jsem na problém, že pokud název přílohy obsahuje dvě tečky - např. "master.js.txt", následující příkazy vyhodí vyjímku:

a.Filename = "master.js.txt"
using(var stream = new System.IO.MemoryStream(b)) {
   var att = new Rebex.Mail.Attachment(stream, a.FileName , a.MediaType);
   eml.Attachments.Add(att);
}

Outlook takové přílohy vesele posílá.... Co máme dělat ?

Body contains characters that are invalid for text.: v Rebex.Mime.MimeEntity.C9QSwZ(1AerpT , ContentType , ContentTransferEncoding , Boolean ); v Rebex.Mime.MimeEntity.kpCHnZ(1AerpT , ContentType , ContentTransferEncoding , String , Boolean ); v Rebex.Mime.MimeEntity.aBj8qZ(Stream , String , String , ContentTransferEncoding ); v Rebex.Mime.MimeEntity.SetContent(Stream source, String name, String mediaType); v Rebex.Mail.Attachment.SetContent(Stream source, String name, String mediaType); v Rebex.Mail.Attachment..ctor(Stream contentStream, String name, String mediaType);

Applies to: Rebex Secure Mail
commented May 29, 2012 by Jiří Zídek (180 points)
edited May 29, 2012

Tak doplňnová informace: problém není v těch tečkách, ale v příloze samé - mimi je jako text/plain a konstruktoru se nelíbí obsah. Je pro to nějaké vysvětlení ? Díky

2 Answers

0 votes
answered May 29, 2012 by Lukas Matyska (52,890 points)
edited May 29, 2012

Dobrý den,

Vyjímka nastává protože data, která se snažíte přidat do attachmentu obsahují znaky, které nejsou validní pro text/plain přílohy. Správný postup je znaky odstranit, nebo neuvádět media-type jako text/*. Pokud to není možné, můžete data do přílohy zapsat za pomoci MimeOptions.AllowAnyTextCharacters následovně:

var att = new Rebex.Mail.Attachment();
att.Options = MimeOptions.AllowAnyTextCharacters;
att.SetContent(stream, a.FileName, a.MediaType);
eml.Attachments.Add(att);
0 votes
answered May 29, 2012 by Jiří Zídek (180 points)
edited May 29, 2012

Díky za info - použil jsem řešení, že při výskytu této vyjímky měním mediatype na application/octet-stream Což se zdá být ve světle vaší odpovědi asi správné. Obsah v soubor, který dodal uživatel totiž zjevně není koherentní s příponou a dál hádat co je v soubory doopřravdy ukryto nemá zřejmě smysl.

...