请教各位高手,.net发送网页邮件,网页图片不能正常显示而且链接也不对 你是用JEmail还是net自带的编写程序的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不会呀,我弄的一直都正常呀。发出去的html文件中的链接请使用绝对链接,如:http://topic.csdn.net/u/20091130/09/91657cb1-85e0-463f-b3a8-c8db6066259b.html?81246 MailMessage message = new MailMessage(); message.From = new MailAddress(from, fromName); message.To.Add(to); message.Subject = subject; message.Body = body; message.IsBodyHtml = true;请注意这个 你的意思是希望邮件里面的图片之类在脱机也可以看到是吗?这个比较麻烦。使用jmail可以做到。默认的不支持。如果你只是希望发html,联机看图片,那么只需要设置邮件格式为html,里面的图片连接使用完整的url就可以了。 给你一个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; } }} 未将对象引用设置到对象的实例。是怎么回事? 向EXCEL单元格插入图片的问题!!!! TextBox输入字符限制,要求多输入时,直接弹出对话框警告?? 新手提问!关于c#和数据库的问题 如何写事件? 如何将Winform下的DataGrid绑定到抽象的实体集上? 水晶报表如何实现分栏显示? C# Api调用的奇怪问题 关于SQL语句插入不了问题 弄了一天了也没搞定...Asp.NET下:未能获取此实现的 CryptoAPI 加密服务提供程序(CSP)。 各位大侠,帮帮忙啊 有关提示框的
发出去的html文件中的链接请使用绝对链接,如:http://topic.csdn.net/u/20091130/09/91657cb1-85e0-463f-b3a8-c8db6066259b.html?81246
message.From = new MailAddress(from, fromName);
message.To.Add(to);
message.Subject = subject;
message.Body = body;
message.IsBodyHtml = true;请注意这个
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;
}
}
}