Почтовое вложение и его настройка шифрования передачи контента (проблема с BlackBerry) - PullRequest
0 голосов
/ 23 декабря 2010

Я использую код C # для отправки электронных писем различным пользователям с почтовыми клиентами на разных платформах: BlackBerry, iPhone, ПК, Mac и т. Д. Вот фрагмент:

Attachment attachment = null;
        if (attachNameFile!=null) 
        {
            attachment = new Attachment(attachNameFile, new System.Net.Mime.ContentType(attachMimeType));
        }

        SmtpClient smtp = new SmtpClient
        {
            Host = this.smtpServer,
            Port = this.smtpPort,
            EnableSsl = false,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential()
        };

        using (MailMessage message = new MailMessage())
        {
            message.From = fromAddress;
            if (macTo != null) message.To.AddRangeUnique(macTo);
            if (macCc!=null) message.CC.AddRangeUnique(macCc);
            if (macCcn != null) message.Bcc.AddRangeUnique(macCcn);
            message.Subject = subject;
            message.Body = sb.ToString();

            if (replyTo != null)
                message.ReplyTo = new MailAddress(replyTo);
            else
                message.ReplyTo = fromAddress;

            if (attachment!=null)  
            { 
                message.Attachments.Add(attachment);                
            }
            smtp.Send(message);
        }

Некоторый пользовательсказал мне, что сообщение, которое он или она получает, не имеет вложения.Вложение представляет собой текстовый (UTF8) файл.После некоторого анализа я увидел, что вложение отображается в теле письма, и только некоторые почтовые клиенты показывают его в качестве вложения.Для меня это не проблема, но у BlackBerry есть некоторые проблемы с такого рода вложениями, потому что он показывает только тело и обрезает вложение.Но это работает в Google, iMail, Thunderbird и т. Д. И т. Д.

Я проанализировал источник сообщения и увидел, что ContentTransferEncoding присоединения имеет 8 бит:

Content-Transfer-Encoding: 8bit
Content-Type: text/plain; name=Attachment.2324333.txt

Думаю, я решу свою проблему, если установить свойство ContentTransferEncoding объекта Вложение в C # на Base64 кодировка:

Attachment attachment = null;
        if (attachNameFile!=null) 
        {
            attachment = new Attachment(attachNameFile, new System.Net.Mime.ContentType(attachMimeType));
            attachment.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
        }

Как вы думаете, это хороший и рабочий подход?Нужно ли устанавливать другие свойства?

Спасибо всем

Ответы [ 3 ]

3 голосов
/ 23 декабря 2010

Глядя на некоторые вложения из моего BlackBerry, я думаю, вам нужно добавить заголовок Content-Disposition :

Content-Transfer-Encoding: base64
Content-Type: text/plain
Content-Disposition: attachment; filename="myfilename.bin"
2 голосов
/ 23 декабря 2010
0 голосов
/ 23 декабря 2010

Мне кажется, вы все делаете правильно, другие почтовые клиенты доказывают это. Попробуйте BASE64, есть хороший шанс, что BlackBerry понравится, но вы не можете быть уверены, пока не увидите его :).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...