你是用JEmail还是net自带的编写程序的?

解决方案 »

  1.   

    不会呀,我弄的一直都正常呀。
    发出去的html文件中的链接请使用绝对链接,如:http://topic.csdn.net/u/20091130/09/91657cb1-85e0-463f-b3a8-c8db6066259b.html?81246 
      

  2.   

    MailMessage message = new MailMessage();
                    message.From = new MailAddress(from, fromName);
                    message.To.Add(to);
                    message.Subject = subject;
                    message.Body = body;
                    message.IsBodyHtml = true;请注意这个
      

  3.   

    你的意思是希望邮件里面的图片之类在脱机也可以看到是吗?这个比较麻烦。使用jmail可以做到。默认的不支持。如果你只是希望发html,联机看图片,那么只需要设置邮件格式为html,里面的图片连接使用完整的url就可以了。
      

  4.   

    给你一个jmail的代码吧using System;
    using System.Net ;
    using System.IO;
    using System.Text;
    using jmail;
    using System.Text.RegularExpressions;  
    using System.Collections;namespace SendByJMail
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    public class JavaMail
    {
    public JavaMail()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    public static void SendHtmlMail(string MailServer,string FromName,string From,string MailTo,string CopyTo,string BccTo,string Subject,string MailDetail)
    {
    string HtmlStr = MailDetail; //To Be Modify
    jmail.Message msg = new jmail.MessageClass();
    msg.Charset = "gb2312";
    msg.Encoding = "base64";
    msg.From = From;
    msg.FromName = FromName; string[] ReceiveEmails = MailTo.Split(new char[]{';'});
    foreach ( string Email in ReceiveEmails )
    {
    if ( Email.Trim() != string.Empty )
    {
    msg.AddRecipient(Email,"","");
    }
    } string[] CopyEmails = CopyTo.Split(new char[]{';'});
    foreach ( string Email in CopyEmails )
    {
    if ( Email.Trim() != string.Empty )
    {
    msg.AddRecipientCC(Email,"","");
    }
    } string[] BccEmails = BccTo.Split(new char[]{';'});
    foreach ( string Email in BccEmails )
    {
    if ( Email.Trim() != string.Empty )
    {
    msg.AddRecipientBCC(Email,"");
    }
    } // string RepSubject = Subject.Replace("...","……");
    msg.Subject= Subject; msg.Logging=false; Hashtable ht = FindImage(HtmlStr); for ( int i=0;i<ht.Count;i++)
    {
    string ImageCID="";
    string tempUrl = ht[i].ToString(); string ImageUrl = tempUrl.Replace("\"",string.Empty); //提取出连接URL中的文件名称作为附件名称
    Regex r = new Regex(@"/(?<imageName>[^/]*)$",RegexOptions.Compiled|RegexOptions.IgnoreCase);
    Match m = r.Match(ImageUrl);
    if ( m.Success )
    {
    string ImageName = m.Result("${imageName}");
    string MyID = msg.AddURLAttachment(ImageUrl,ImageName, false,"image/bmp");
    ImageCID = "\"cid:" + MyID + "\"";
    HtmlStr = HtmlStr.Replace(tempUrl,ImageCID);
    }
    }
    msg.AppendHTML(HtmlStr); msg.Send(MailServer,false);

    //private int ImageCount=0; //查找
    private static Hashtable FindImage(string HtmlStr)
    {
    Hashtable ht = new Hashtable();
    int ImageCount = 0; string ImageUrl="";
    string myRegEx = @"\s*(src|background)=(?<ImageUrl>([^\s>]*))[\s>]*"; Regex rr = new Regex(myRegEx,RegexOptions.Compiled|RegexOptions.IgnoreCase); for ( Match m = rr.Match(HtmlStr);m.Success;m=m.NextMatch())
    {
    ImageUrl = m.Result("${ImageUrl}"); bool ImageExist = false;
    foreach ( object obj in ht.Values )
    {
    if ( obj.ToString()== ImageUrl )
    {
    ImageExist = true;
    break;
    }
    } if (!ImageExist)
    {
    ht.Add(ImageCount,ImageUrl);
    ImageCount++;
    }
    }
    return ht;
    }
    }
    }