最近在搞一个像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;
}
请问哪点写的不对?
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;
}
请问哪点写的不对?
另外,你可以在收件件中查看邮件时,查看源文件就很容易知道哪些少了。
http://www.fujitsu.com/incv4/common/libraries/include_libs.js??
{ //读取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" />
然后在别的地方就引用不到样式表了
2、直接用正则把<link href="xxx.css" rel="stylesheet" type="text/css" />替换成绝对路径
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/");
做一个正则,查找.js和.css,然后将js写入str<script></strip>,将css写入到<style></style>中
再将整个html发送出去后看看结果
如果这个结果都不正确,那么上面的操作也没有必要实现了。