发送邮件的问题,如何提示“邮件内容为HTML格式,请选择HTML方式查看” 我希望用户的客户端打开邮件的时候,提示他“邮件内容为HTML格式,请选择HTML方式查看”他使用HTML方式查看以后就显示HTML格式的邮件内容。请问如何加入“邮件内容为HTML格式,请选择HTML方式查看”这句话?我用的MailMessage类发送的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 小灰自己搞邮件客户端啊.牛x能不能这样,检查邮件内容.包含html几个标志性的标签,就提示用户"选择html格式查看" 不是自己开发客户端,是我ASP.NET程序发送邮件,用户接收的时候,默认提示“邮件内容为HTML格式,请选择HTML方式查看” System.Net.Mail.MailMessage msg=new System.Net.Mail.MailMessage();...StringBuilder sb=new StringBuilder();sb.Append("邮件内容为HTML格式,请选择HTML方式查看<br/>");sb.Append(thebody);//your html body!msg.Body=sb.ToString();msg.BodyEncoding=System.Text.Encoding.UTF8;msg.IsBodyHtml=true;... 你这个方法指标不治本啊,HTML方式浏览还提示“邮件内容为HTML格式,请选择HTML方式查看”我早想到并且开始用这个办法了。 邮件接收方,通常默认都是html形式的吧。关键是你在发送的时候要指定发送格式是纯文本还是html格式。纯文本就没什么影响了。在邮件发送过程中应该邮件格式中有内嵌邮件格式了吧。剩下的应该是邮件接收端解析问题 /// <summary> /// 类的主要作用:完成成发送邮件 /// </summary> class SendMailClass { static public string accountName ="你的gmail帐号" ;//ConfigurationManager.AppSettings["MailAccount"]; static public string password = "gmail密码";//ConfigurationManager.AppSettings["MailPwd"]; static public string smtpServer = "smtp.gmail.com";//ConfigurationManager.AppSettings["SMTP"]; static public int smtpPort = "587";//int.Parse(ConfigurationManager.AppSettings["Port"]); /// <summary> /// 发送邮件方法 /// </summary> /// <param name="to">电子邮件地址</param> /// <param name="subject">邮件主题</param> /// <param name="filePath">文件路径</param> /// <param name="fileName">文件名</param> public static void SendMail(MailAddressCollection sendTo, string subject,string filePath,string fileName) { System.Net.Mail.MailMessage mailmsg = new System.Net.Mail.MailMessage(); if (sendTo != null) { //得到邮件地址 foreach (MailAddress address in sendTo) mailmsg.To.Add(address); } MailAddress FromAddress = new MailAddress(accountName); mailmsg.From = FromAddress; mailmsg.Subject = subject; mailmsg.IsBodyHtml = true;//设置邮件内容的格式 mailmsg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码 //得到html文件 string htmlFileContent=GetHtmlFile(filePath, fileName); //对html中的src进行cid化 string strHtml = GetSendHtml(fileName,htmlFileContent); //得到图片路径集合 ArrayList imgSrcPath = GetImgSrcPath(filePath,fileName); //设置潜入资源的ContentID的集合 ArrayList contentId = SetContentId(imgSrcPath); //得到图片名称集合 ArrayList ImgNameColletion = GetImgNameCollection(filePath,fileName); //得到发送html文件 string sendHtml = SetSendHtml(strHtml, contentId, ImgNameColletion); //设置邮件的查看格式 AlternateView mailContent = AlternateView.CreateAlternateViewFromString(sendHtml, null, MediaTypeNames.Text.Html); mailmsg.AlternateViews.Add(mailContent); if (imgSrcPath.Count > 0) { for (int i = 0; i < imgSrcPath.Count; i++) { //设置邮件的潜入资源图片 LinkedResource linkResource = new LinkedResource(imgSrcPath[i].ToString()); linkResource.ContentId = contentId[i].ToString(); mailContent.LinkedResources.Add(linkResource); } } System.Net.Mail.SmtpClient client = new SmtpClient(); client.Host = smtpServer; client.Port = smtpPort; client.Credentials = new System.Net.NetworkCredential(accountName, password);//用户名和密码 client.EnableSsl = true; client.Send(mailmsg); } /// <summary> /// 得到邮件地址集合 /// </summary> /// <param name="address">邮件地址</param> /// <returns>MailAddressCollection</returns> public static MailAddressCollection ParseAddress(String address) { if (address == null) return null; //match all mail address from a string string pattern = @"([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)"; Regex regex = new Regex(pattern); MatchCollection matchs = regex.Matches(address); MailAddressCollection list = new MailAddressCollection(); foreach (Match m in matchs) list.Add(m.Value); return list; } /// <summary> /// 得到图片路径集合 /// </summary> /// <param name="strHtml">html文件</param> /// <param name="filePath">文件路径</param> /// <param name="fileName">文件名</param> /// <returns>ArrayList</returns> private static ArrayList GetImgSrcPath(string filePath,string fileName) { ArrayList imgSrc = new ArrayList(20); string[] files = Directory.GetFiles(filePath + fileName + @"_files\");//得到文件 foreach (string file in files)//循环文件 { string exname = file.Substring(file.LastIndexOf(".") + 1);//得到后缀名 if (".jpg|.gif".IndexOf(file.Substring(file.LastIndexOf(".") + 1)) > -1)//如果后缀名为.jpg和.gif的文件 { FileInfo fi = new FileInfo(file);//建立FileInfo对象 imgSrc.Add(fi.FullName);//把.jpg和.gif文件全名加人到FileInfo对象 } } return imgSrc; } /// <summary> /// 对文件中图片进行CID化 /// </summary> private static string GetSendHtml(string fileName,string strHtml) { string oldValue = fileName + @"_files/"; return strHtml.Replace(oldValue,"cid:"); } /// <summary> /// 从路径下读文件 /// </summary> private static string GetHtmlFile(string filePath,string fileName) { //TextWriter textWriter= string path = filePath + fileName+".htm"; StreamReader fileStream = new StreamReader(path, Encoding.Default); string fielText = fileStream.ReadToEnd(); fileStream.Close(); return HttpUtility.UrlDecode(fielText); } /// <summary> /// 判断文件夹是否存在 /// </summary> public static bool IsExistsFile(string filePath,string fileName) { if (Directory.Exists(filePath + fileName + @"_files")) { return true; } else { return false; } } /// <summary> /// 设置LinkedResource的ContentID /// </summary> private static ArrayList SetContentId(ArrayList ImgSrc) { ArrayList contentId = new ArrayList(20); int count = ImgSrc.Count; for (int i = 0; i < count; i++) { //strHtml.Replace(ImgSrc[i].ToString(),"Img"+i.ToString()); contentId.Add("Img"+i.ToString()); } return contentId; } /// <summary> /// 设置发送的Html文件 /// </summary> private static string SetSendHtml(string strHtml, ArrayList contentId, ArrayList ImgSrc) { string result = strHtml; int count = contentId.Count; for (int i = 0; i < count; i++) { result = result.Replace(ImgSrc[i].ToString(), contentId[i].ToString()); } return result; } /// <summary> /// 得到图片名称集合 /// </summary> private static ArrayList GetImgNameCollection(string filePath, string fileName) { ArrayList imgSrc = new ArrayList(20); string[] files = Directory.GetFiles(filePath + fileName + @"_files\");//得到文件 foreach (string file in files)//循环文件 { string exname = file.Substring(file.LastIndexOf(".") + 1);//得到后缀名 if (".jpg|.gif".IndexOf(file.Substring(file.LastIndexOf(".") + 1)) > -1)//如果后缀名为.jpg和.gif的文件 { FileInfo fi = new FileInfo(file);//建立FileInfo对象 imgSrc.Add(fi.Name);//把.jpg和.gif文件全名加人到FileInfo对象 } } return imgSrc; } } 我已经试过了!!绝对可以的!!你把一个网页保存下来,应该有个文件夹和htm文件,路径对就可以发了!! @yagebu1983谢谢你的耐心解答。不过我需要知道的是如何在客户端默认浏览的时候提示:“这是一封HTML格式邮件,请切换到HTML方式查看”我自己会发送HTML格式邮件,但是我需要用户能自动用HTML方式查看。因为outlook等浏览器默认都是文本方式查看的。 html 的页面发送到邮箱 - -什么叫没人会?你在客户收到邮件的内容第一句加:邮件内容为HTML格式,请选择HTML方式查看;不就行了啊?问题复杂化?还有发送邮件好象可以指定以html还是txt格式发送吧?给固定成html格式撒 gridview配置对象数据源时无法找到业务类? 找一个五星评分插件 或 代码 执行executeReader返回一个空的sqldatareader (对不起没分了)asp.net 下数据表做纵向切分如何做? SQL2005数据库重名的问题 DropDownList控件的问题 我做了一个上传组件,但是在回送的时候却取不到数据,请问是为什么 如何使服务器端的图片按钮 当鼠标放上时图片变化 用SMTPMAIL发送yahoo信箱为何收不到? 请问:在.net中大家是如何控制数据库连接字符串的?2个问题?在线等待!!! 高手看看数据库连接错在哪里? ajax问题?
...
StringBuilder sb=new StringBuilder();
sb.Append("邮件内容为HTML格式,请选择HTML方式查看<br/>");
sb.Append(thebody);//your html body!
msg.Body=sb.ToString();
msg.BodyEncoding=System.Text.Encoding.UTF8;
msg.IsBodyHtml=true;
...
你这个方法指标不治本啊,HTML方式浏览还提示“邮件内容为HTML格式,请选择HTML方式查看”我早想到并且开始用这个办法了。
/// 类的主要作用:完成成发送邮件
/// </summary>
class SendMailClass
{
static public string accountName ="你的gmail帐号" ;//ConfigurationManager.AppSettings["MailAccount"];
static public string password = "gmail密码";//ConfigurationManager.AppSettings["MailPwd"];
static public string smtpServer = "smtp.gmail.com";//ConfigurationManager.AppSettings["SMTP"];
static public int smtpPort = "587";//int.Parse(ConfigurationManager.AppSettings["Port"]); /// <summary>
/// 发送邮件方法
/// </summary>
/// <param name="to">电子邮件地址</param>
/// <param name="subject">邮件主题</param>
/// <param name="filePath">文件路径</param>
/// <param name="fileName">文件名</param>
public static void SendMail(MailAddressCollection sendTo, string subject,string filePath,string fileName)
{
System.Net.Mail.MailMessage mailmsg = new System.Net.Mail.MailMessage();
if (sendTo != null)
{
//得到邮件地址
foreach (MailAddress address in sendTo)
mailmsg.To.Add(address);
}
MailAddress FromAddress = new MailAddress(accountName);
mailmsg.From = FromAddress;
mailmsg.Subject = subject;
mailmsg.IsBodyHtml = true;//设置邮件内容的格式
mailmsg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
//得到html文件
string htmlFileContent=GetHtmlFile(filePath, fileName);
//对html中的src进行cid化
string strHtml = GetSendHtml(fileName,htmlFileContent);
//得到图片路径集合
ArrayList imgSrcPath = GetImgSrcPath(filePath,fileName);
//设置潜入资源的ContentID的集合
ArrayList contentId = SetContentId(imgSrcPath);
//得到图片名称集合
ArrayList ImgNameColletion = GetImgNameCollection(filePath,fileName);
//得到发送html文件
string sendHtml = SetSendHtml(strHtml, contentId, ImgNameColletion);
//设置邮件的查看格式
AlternateView mailContent = AlternateView.CreateAlternateViewFromString(sendHtml, null, MediaTypeNames.Text.Html);
mailmsg.AlternateViews.Add(mailContent);
if (imgSrcPath.Count > 0)
{
for (int i = 0; i < imgSrcPath.Count; i++)
{
//设置邮件的潜入资源图片
LinkedResource linkResource = new LinkedResource(imgSrcPath[i].ToString());
linkResource.ContentId = contentId[i].ToString();
mailContent.LinkedResources.Add(linkResource);
}
}
System.Net.Mail.SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Port = smtpPort;
client.Credentials = new System.Net.NetworkCredential(accountName, password);//用户名和密码
client.EnableSsl = true;
client.Send(mailmsg);
}
/// <summary>
/// 得到邮件地址集合
/// </summary>
/// <param name="address">邮件地址</param>
/// <returns>MailAddressCollection</returns>
public static MailAddressCollection ParseAddress(String address)
{
if (address == null)
return null;
//match all mail address from a string
string pattern = @"([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)";
Regex regex = new Regex(pattern);
MatchCollection matchs = regex.Matches(address);
MailAddressCollection list = new MailAddressCollection();
foreach (Match m in matchs)
list.Add(m.Value);
return list;
}
/// <summary>
/// 得到图片路径集合
/// </summary>
/// <param name="strHtml">html文件</param>
/// <param name="filePath">文件路径</param>
/// <param name="fileName">文件名</param>
/// <returns>ArrayList</returns>
private static ArrayList GetImgSrcPath(string filePath,string fileName)
{
ArrayList imgSrc = new ArrayList(20);
string[] files = Directory.GetFiles(filePath + fileName + @"_files\");//得到文件
foreach (string file in files)//循环文件
{
string exname = file.Substring(file.LastIndexOf(".") + 1);//得到后缀名
if (".jpg|.gif".IndexOf(file.Substring(file.LastIndexOf(".") + 1)) > -1)//如果后缀名为.jpg和.gif的文件
{
FileInfo fi = new FileInfo(file);//建立FileInfo对象
imgSrc.Add(fi.FullName);//把.jpg和.gif文件全名加人到FileInfo对象
}
}
return imgSrc;
} /// <summary>
/// 对文件中图片进行CID化
/// </summary>
private static string GetSendHtml(string fileName,string strHtml)
{
string oldValue = fileName + @"_files/";
return strHtml.Replace(oldValue,"cid:");
}
/// <summary>
/// 从路径下读文件
/// </summary>
private static string GetHtmlFile(string filePath,string fileName)
{
//TextWriter textWriter=
string path = filePath + fileName+".htm";
StreamReader fileStream = new StreamReader(path, Encoding.Default);
string fielText = fileStream.ReadToEnd();
fileStream.Close();
return HttpUtility.UrlDecode(fielText);
} /// <summary>
/// 判断文件夹是否存在
/// </summary>
public static bool IsExistsFile(string filePath,string fileName)
{
if (Directory.Exists(filePath + fileName + @"_files"))
{
return true;
}
else
{
return false;
}
} /// <summary>
/// 设置LinkedResource的ContentID
/// </summary>
private static ArrayList SetContentId(ArrayList ImgSrc)
{
ArrayList contentId = new ArrayList(20);
int count = ImgSrc.Count;
for (int i = 0; i < count; i++)
{
//strHtml.Replace(ImgSrc[i].ToString(),"Img"+i.ToString());
contentId.Add("Img"+i.ToString());
}
return contentId;
} /// <summary>
/// 设置发送的Html文件
/// </summary>
private static string SetSendHtml(string strHtml, ArrayList contentId, ArrayList ImgSrc)
{
string result = strHtml;
int count = contentId.Count;
for (int i = 0; i < count; i++)
{
result = result.Replace(ImgSrc[i].ToString(), contentId[i].ToString());
}
return result;
}
/// <summary>
/// 得到图片名称集合
/// </summary>
private static ArrayList GetImgNameCollection(string filePath, string fileName)
{
ArrayList imgSrc = new ArrayList(20);
string[] files = Directory.GetFiles(filePath + fileName + @"_files\");//得到文件
foreach (string file in files)//循环文件
{
string exname = file.Substring(file.LastIndexOf(".") + 1);//得到后缀名
if (".jpg|.gif".IndexOf(file.Substring(file.LastIndexOf(".") + 1)) > -1)//如果后缀名为.jpg和.gif的文件
{
FileInfo fi = new FileInfo(file);//建立FileInfo对象
imgSrc.Add(fi.Name);//把.jpg和.gif文件全名加人到FileInfo对象
}
}
return imgSrc;
}
}
绝对可以的!!
你把一个网页保存下来,应该有个文件夹和htm文件,路径对就可以发了!!
你在客户收到邮件的内容第一句加:邮件内容为HTML格式,请选择HTML方式查看;
不就行了啊?问题复杂化?还有发送邮件好象可以指定以html还是txt格式发送吧?给固定成html格式撒