我希望用户的客户端打开邮件的时候,提示他“邮件内容为HTML格式,请选择HTML方式查看”他使用HTML方式查看以后就显示HTML格式的邮件内容。请问如何加入“邮件内容为HTML格式,请选择HTML方式查看”这句话?我用的MailMessage类发送的。

解决方案 »

  1.   

    小灰自己搞邮件客户端啊.牛x能不能这样,检查邮件内容.包含html几个标志性的标签,就提示用户"选择html格式查看"
      

  2.   

    不是自己开发客户端,是我ASP.NET程序发送邮件,用户接收的时候,默认提示“邮件内容为HTML格式,请选择HTML方式查看”
      

  3.   

    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;
    ...
      

  4.   


    你这个方法指标不治本啊,HTML方式浏览还提示“邮件内容为HTML格式,请选择HTML方式查看”我早想到并且开始用这个办法了。
      

  5.   

    邮件接收方,通常默认都是html形式的吧。关键是你在发送的时候要指定发送格式是纯文本还是html格式。纯文本就没什么影响了。在邮件发送过程中应该邮件格式中有内嵌邮件格式了吧。剩下的应该是邮件接收端解析问题
      

  6.   

    /// <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;
            }
        }
      

  7.   

    我已经试过了!!
    绝对可以的!!
    你把一个网页保存下来,应该有个文件夹和htm文件,路径对就可以发了!!
      

  8.   

    @yagebu1983谢谢你的耐心解答。不过我需要知道的是如何在客户端默认浏览的时候提示:“这是一封HTML格式邮件,请切换到HTML方式查看”我自己会发送HTML格式邮件,但是我需要用户能自动用HTML方式查看。因为outlook等浏览器默认都是文本方式查看的。
      

  9.   

    html 的页面发送到邮箱 
      

  10.   

    -  -什么叫没人会?
    你在客户收到邮件的内容第一句加:邮件内容为HTML格式,请选择HTML方式查看;
    不就行了啊?问题复杂化?还有发送邮件好象可以指定以html还是txt格式发送吧?给固定成html格式撒