0 votes
by (210 points)
edited

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
by (210 points)
edited

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
by (62.7k points)
edited

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
by (210 points)
edited

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.

...