邮件附件和内容传输编码设置(黑莓手机的问题)(Mail Attachment and its Con

2019-10-29 04:47发布

我使用的是C#代码在不同平台上发送一些电子邮件给不同的用户提供邮件客户端:黑莓,iPhone,PC,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)文件。 经过一番分析,我看到该附件在邮件正文显示,仅部分邮件客户端显示出它作为附件。 这是不是我的问题,但黑莓手机有一些问题,这种附件的,因为它表明只有身体和切断连接。 但它在谷歌,易网邮,Thunderbird等等。

我分析的消息的源和只见attacchment的ContentTransferEncoding是8位:

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

我想我解决我的问题,如果我设置在C#中Base64编码对象附件ContentTransferEncoding属性:

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

你是否认为这是一个很好的和工作方法? 我一定要设置其他属性?

谢谢大家

Answer 1:

看一些从我的黑莓手机来的附件,我认为你需要添加一个内容处置标题:

Content-Transfer-Encoding: base64
Content-Type: text/plain
Content-Disposition: attachment; filename="myfilename.bin"


Answer 2:

请参阅: 发送电子邮件与C#的附件,附件到达在雷鸟1.2份

内容处理是我的问题的解决方案。



Answer 3:

在我看来,你做的一切权利,其他的邮件客户端证明这一点。 尝试BASE64,有一个很好的机会,黑莓会喜欢它,但你不能确定,直到你真正看到它:)。



文章来源: Mail Attachment and its Content Transfer Encoding setting (BlackBerry problem)