static void Main(string[] args)
        {
            string mailTitle = "Mail test";
            string mailTo = "[email protected]";
            string mailBody = @"jjiodsjjerhj grjgoieroirgjoierjgodfgioejkojgoerjgoireoigmoerognoerimgomerjgoirejiojedofmmkdsnfg.dsmfl'sakjfpqwjfksdjfger";            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();            message.Subject = mailTitle;
            message.Body = mailBody;            message.SubjectEncoding = System.Text.Encoding.UTF8;
            message.BodyEncoding = System.Text.Encoding.UTF8;
            IDictionary<string, Stream> col = Export();
            foreach (KeyValuePair<string, Stream> item in col)
            {
                Attachment report = new Attachment(item.Value, "Report.xml");
                message.Attachments.Add(report);
            }
            Attachment reportStyle = new Attachment(@"H:\TestI\Report.xslt");
            message.Attachments.Add(reportStyle);
            message.To.Add(mailTo);            MailAddress from = new MailAddress("[email protected]", "Hcao", System.Text.Encoding.UTF8);            message.From = from;            SmtpClient client = new SmtpClient();
            client.Host = "mail.wicresoft.com";
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.Send(message);
            Console.WriteLine(message.Body);
        }
        public static IDictionary<string, Stream> Export()
        {
            string xmlFileName;
            string xmlFileContent;
            //string xsltFileName;
            //string xsltFileContent;
            Dictionary<string, Stream> dictionary;
            Stream FileStream;
            StreamWriter outerXmlFile;            XmlDocument xmlDoc = new XmlDocument();
            XmlNode declarationNode = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
            xmlDoc.AppendChild(declarationNode);
            XmlElement report = xmlDoc.CreateElement("report");
            xmlDoc.AppendChild(report);            xmlFileName = "Report.xml";
            xmlFileContent = xmlDoc.InnerXml;
            //xsltFileName = "Report.xslt";
            //xsltFileContent = Resources.Report;
            dictionary = new Dictionary<string, Stream>();            FileStream = new MemoryStream();
            outerXmlFile = new StreamWriter(FileStream);
            outerXmlFile.WriteLine(xmlFileContent);
            outerXmlFile.Flush();
            dictionary.Add(xmlFileName, FileStream);            //outerXmlFile = new StreamWriter(FileStream);
            //outerXmlFile.WriteLine(xsltFileContent);
            //outerXmlFile.Flush();
            //dictionary.Add(xsltFileName, FileStream);            return dictionary;        }
两个方法:main() 和Export(),Export()负责导出文件流stream,该流通过main函数发送邮件,但是发过去时为什么附件保存下来后为0kb,即文件里没有任何东西
请各位大侠执教

解决方案 »

  1.   

        public void Export(Stream stream)
        {        string fileName = new Guid().ToString() + ".xml";
            string fileContent = string.Empty;        using (StreamReader sr = new StreamReader(stream))
            {
                fileContent = sr.ReadToEnd();
            }        using (StreamWriter sw = new StreamWriter("c:\\" + file,false))
            {
                sw.Write(fileContent);
            }    }
      

  2.   

    楼上的大哥 我通过System.IO.Path.GetTempPath() + "Report.xml" 创建了临时文件后 怎么删除这个临时文件啊?
      

  3.   

    生成临时文件是好方法.
     怎么删除这个临时文件啊?
    f = new FileInfo(FileName);
    f.delete();