请教各位高手,.net发送网页邮件,网页图片不能正常显示而且链接也不对
请问各位该怎么解决呢? 不是发送静态网页,也不是发送网站地址,一打开邮件就看到这个网站的页面,, --------------------编程问答-------------------- 框架 --------------------编程问答-------------------- 框架?能不能说明白点呢,我不知道怎么做,框架是不是很多邮箱都能适合呢? --------------------编程问答-------------------- 你是用JEmail还是net自带的编写程序的? --------------------编程问答-------------------- 两种都试过,都不行, --------------------编程问答-------------------- 各位帮帮忙啊,,我不知道怎么解决啦 --------------------编程问答-------------------- 我也正在为此苦恼呢。 --------------------编程问答-------------------- 期待 高手的降临 --------------------编程问答-------------------- 不会呀,我弄的一直都正常呀。发出去的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;请注意这个 --------------------编程问答-------------------- dfdsf --------------------编程问答-------------------- 一样一样 --------------------编程问答-------------------- 你的意思是希望邮件里面的图片之类在脱机也可以看到是吗?这个比较麻烦。使用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;
}
}
}
补充:.NET技术 , C#