当使用smtp协议发送时,gmail和yahoo对c#中的Base64编码文件进行不同的解释

时间:2012-10-17 13:42:20

标签: c# smtp

至于紧凑框架不支持SMTP客户端;我在c#中编写自己的SMTP客户端(用于紧凑框架)。

我正在使用SMTP协议发送一个图像文件。但它在雅虎打开时已损坏,并且在gmail中正常工作。

message = "--sdfsafsafsassfsfsfd" + Constant.CRLF
        + "Content-Type: application/image;" + Constant.CRLF
        + "Content-Transfer-Encoding: base64;" + Constant.CRLF
        + "Content-Disposition: attachment;" 
        + " filename=abc.jpg;" + Constant.CRLF + Constant.CRLF;

以下是代码用于获取文件数据的base64字符串。

public void SendFile(string fileName)//image/doc file
    {
      string base64;
      using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
      {
        var buffer = new byte[fs.Length];
        fs.Read(buffer, 0, (int)fs.Length);
        base64 = Convert.ToBase64String(buffer);
      }

      Write(base64); 
    }

public void Write(string message)
{
  System.Text.ASCIIEncoding en = new System.Text.ASCIIEncoding();
  byte[] WriteBuffer = new byte[1024 * 5];
  WriteBuffer = en.GetBytes(message);
  NetworkStream stream = GetStream();
  stream.Write(WriteBuffer, 0, WriteBuffer.Length);
}

我不理解我是否遗漏了什么。请帮助我。

1 个答案:

答案 0 :(得分:0)

尝试使用“Content-Type:image / jpeg;”而不是“应用程序/图像”。