当前位置:编程学习 > C#/ASP.NET >>

请教各位高手,.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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,