ITPub博客

首页 > > > 关于邮件发送,附件名乱码问题。

关于邮件发送,附件名乱码问题。

作者:deeply 时间:2019-09-05 17:03:28 0 删除 编辑

我在写基于lumisoft 邮件发送时遇见个很头疼的问题--附件名为汉字,且长度过长就不能被其他邮件系统正常解析。

首先我在将附件写入邮件body时使用:

multipartMixed.BodyParts.Add(MIME_Message.CreateAttachment(stream, attachments[attach]));

发现有的邮件系统不能正确解析中文名,但是部分可以。我认为可能是编码问题。然后做了一下修改。

MIME_Entity attachment = new MIME_Entity();

attachment = MIME_Message.CreateAttachment(stream, attachments[attach]);

attachment.ContentDisposition.Param_FileName = AttachmentNameStr(attachments[attach]);

attachment.ContentType.Param_Name = AttachmentNameStr(attachments[attach]);

multipartMixed.BodyParts.Add(attachment);

private string AttachmentNameStr(string fn)

{

string Charset = "gb2312";

if (Encoding.Default.GetByteCount(fn) > fn.Length)

{

return "=?" + Charset.ToUpper() + "?B?" + Base64Encode(fn) + "?=";

}

else

{

return fn;

}

}

private string Base64Encode(string str)

{

byte[] barray;

barray = Encoding.Default.GetBytes(str);

return Convert.ToBase64String(barray);

}

 

修改后,基本上邮件系统能够正常解析邮件的附件名称  但是名称过长 例如“KTL-悬赏园豆越多您的问题会越受关注-LKT-764 认真清晰的提问-2015Apr21”

所有邮件都不能解析到名称。

我又看了看其他邮件发过来的附件名称的解码

?gb2312?Q?KTL-=CA=DA=C8=A8=C9=CC=C6=B7=C9=EA=C7=EB=CA=E9-LKT-764_=C4=DA=D2=C2=CA=D5=C4=C9=B0=FC-2015Apr21.xls?=

我想可能是编码的问题。我又换了编码方式

private string AttachmentNameStr(string fn)

{

string Charset = "gb2312";

if (Encoding.Default.GetByteCount(fn) > fn.Length)

{

return "=?" + Charset.ToUpper() + "?Q?" + DecodeQuotedPrintable(fn) + "?=";

}

else

{

return fn;

}

}

 

#region 将字符串编码为QuotedPrintable字符串

private string DecodeQuotedPrintable(string str)

{

string Result = "";

byte[] vBuffer = Encoding.Default.GetBytes(str);

foreach (byte vByte in vBuffer)

// 可见字符并非"="(#61)

if ((vByte >= 33 && vByte <= 60) || (vByte >= 62 && vByte <= 126))

Result += (char)vByte;

else Result += "=" + vByte.ToString("X2");

return Result;

}

#endregion

 

结果名称还是没有。。。

 

求指点。。。。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1978/viewspace-3151037/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-30

  • 博文量
    215
  • 访问量
    24538