最近在搞一个像qq邮箱收件箱收到别的公司的广告邮件一样的asp.net小程序。邮箱内容是一个Html文件。网上查了好多资料,简单写了一个。邮件发送和接收都是正常的。只是传递给程序的html显示不太正常。内容相比在浏览器少了好多东西。
private static void send163Mail()
        {
            System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
            client.Host = "smtp.163.com";//使用163的SMTP服务器发送邮件
            client.UseDefaultCredentials = true;
            client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
            client.Credentials = new System.Net.NetworkCredential("**@163.com", "****");//163的SMTP服务器需要用163邮箱的用户名和密码作认证
            //这里假定你已经拥有了一个163邮箱的账户,用户名为abc,密码为*******
            System.Net.Mail.MailMessage Message = new System.Net.Mail.MailMessage();
            Message.From = new System.Net.Mail.MailAddress("**@163.com");//这里需要注意,163似乎有规定发信人的邮箱地址必须是163的,而且发信人的邮箱用户名必须和上面SMTP服务器认证时的用户名相同
            //因为上面用的用户名abc作SMTP服务器认证,所以这里发信人的邮箱地址也应该写为[email protected]
            //Message.To.Add("[email protected]");//将邮件发送给Gmail
            Message.To.Add("[email protected]");//将邮件发送给QQ邮箱
            Message.Subject = "测试标体";
            Message.Body = ScreenScrapeHtml("http://www.fujitsu.com/cn/services/hardware/mobile/");
      
            Message.SubjectEncoding = Encoding.GetEncoding(936);
            Message.BodyEncoding = Encoding.GetEncoding(936);
            Message.Priority = System.Net.Mail.MailPriority.High;
            Message.IsBodyHtml = true;
            client.Send(Message);        }
//读取指定URL地址的HTML,用来以后发送网页用
        public static string ScreenScrapeHtml(string url)
        { //读取stream并且对于中文页面防止乱码
            StreamReader reader = new StreamReader(System.Net.WebRequest.Create(url).GetResponse().GetResponseStream(), System.Text.Encoding.UTF8);
            string str = reader.ReadToEnd();
            reader.Close();
            return str;
        }
请问哪点写的不对?

解决方案 »

  1.   

    根据我以前的经验应该是css没有了。
    另外,你可以在收件件中查看邮件时,查看源文件就很容易知道哪些少了。
      

  2.   

    <script type="text/javascript" src="/incv4/common/libraries/include_libs.js"> </script>样式和图片没有转地址
    http://www.fujitsu.com/incv4/common/libraries/include_libs.js??
      

  3.   

    public static string ScreenScrapeHtml(string url)
            { //读取stream并且对于中文页面防止乱码
                StreamReader reader = new StreamReader(System.Net.WebRequest.Create(url).GetResponse().GetResponseStream(), System.Text.Encoding.UTF8);
                string str = reader.ReadToEnd();
                reader.Close();
                return str;
            }
    只是把页面的html代码读了下来 样式表没有读下来  读下来的是 <link href="xxxx.css" rel="stylesheet" type="text/css" />
    然后在别的地方就引用不到样式表了
      

  4.   

    你写成这样的路径 以当前页面为例:<link href="bbs.csdn.net/assets/sh-2bfcf65754f6d04d58df6ed87a3b6faf.css" rel="stylesheet" type="text/css" />
      

  5.   

    1、你可以把官网的样式表和Html抓下来  然后自己改改放到一个html里 然后发送
    2、直接用正则把<link href="xxx.css" rel="stylesheet" type="text/css" />替换成绝对路径
      

  6.   

                string str = ScreenScrapeHtml("http://www.fujitsu.com/cn/services/hardware/mobile/"); 
                str = str.Replace("/imgv4/", "http://www.fujitsu.com/imgv4/");             
                str = str.Replace("/cssv4/", "http://www.fujitsu.com/cssv4/"); 
                str=str.Replace("/incv4/", "http://www.fujitsu.com/incv4/");    
      

  7.   

    把官网的样式表和Html抓下来  然后自己改改放到一个html里 然后发送。请问有没有什么新的技术可以将js文件、css文件和html一块打包发送?就像网页另存为mht一样。
      

  8.   

    请问有没有什么新的技术可以将js文件、css文件和html一块打包发送?
      

  9.   


    做一个正则,查找.js和.css,然后将js写入str<script></strip>,将css写入到<style></style>中
      

  10.   

    也就是只能将js,css,html 整合到一个文件里面进行发送了?
      

  11.   

    请问该怎么做?有什么技术点么?Message.Body=“”;好像只能传一个字符串。
      

  12.   

    我觉得你还是先试下,写一个完整的html,其中包含嵌入式script,嵌入式css
    再将整个html发送出去后看看结果
    如果这个结果都不正确,那么上面的操作也没有必要实现了。
      

  13.   

    直接把原来网页页面的css拔出来插进需要发送的html页面里就可以了。