Net.Mail: מעקף: קבצים מצורפים עם שם עברי
חיפשתי זמן רב את האפשרות הזו, בסוף לא מצאתי, ולאחר קצת מחשבה מצאתי את הפיתרון הבא:
Dim o As New Attachment(oFS, oReader("f_name").ToString)
o.ContentDisposition.FileName = "=?UTF-8?B?" & _
System.Convert.ToBase64String(UTF8.GetBytes("שם הקובץ.htm")) & _
"?="
אז איך זה עובד?
בפרוטוקול MIME (שבו נכתבת הודעת דואר, בסופו של דבר) ניתן לשלוח רק ASCII. עם השנים הופצו כל מיני קידודים שמאפשרים לכתוב גם מה שלא ASCII. אחד מהקידודים האלה הוא BASE64. האחר והנפוץ הוא Qouted Printable שמשמש בגלגול קצת שונה בשביל URLים. כן, ההוא עם האחוזים למעלה (אם כי בשימוש הסימן "=" - שווה).
במקום שם הקובץ, אנחנו מקודדים את העסק ב-Base64 וכך הוא עובר באופן תקין את האימות של המחלקה System.Net.Mail.Attachment, ובעיקר תקני ויעבוד בכל לקוח דואר שקיים.
אז למי שנתקע ותהה - הנה הפיתרון (הצולע). נבדק ועובד תקין על System.Net.Mail.Attachment שמסופק עם NET Framework 2. לא יודע מה לגבי 3 ו-3.5.