2011-07-29 3 views
0

본문이 HTML 페이지에서 시작하여 작성되는 Multipart MailMessage를 보내야합니다. 문제는 내가 모든 이미지의 URL을 잡을과를 만들 필요가 있음을 고려할 때 이런 종류의C# <img src="url.jpg" /> 태그에서 cid (content id)를 얻는 방법

<img src="cid:imageid" /> 

의 다중 태그에 기록 된 이미지 태그 이런 식으로

<img src="url.jpg" /> 

을 "번역"해야한다는 것입니다 이 텍스트를 대체하기 전에 모든 사용자를위한 새로운 LinkedResource 인스턴스가이 작업을 수행하는 도구가 있는지 알고 계십니까?

답변

0

이 포럼과 MS Outlook 오브젝트 라이브러리를 사용하는 것이 처음입니다. 글쎄, 나는 또한이 어리석은 문제를 오랫동안 붙들고있다. 나는 그것에 대해 오래 전에 읽었던 기억하지만 couldnt 그 게시물을 다시 찾으십시오. 어쨌든 여기

는이 순간에 할 수있는 일이다, 이것은 내가 너무 일을하고 최대한 빨리 당신이 그것을 저장

<Code> 
EmailItem = Mailitem 
EmailItem.HTMLBODY = </img src = "SOMETHING.jpg" ...../> 
EmailItem.Save 
EmailItem.HTMLBODY >>> Read this text and parse it for CID of the image tag. 
</Code> 

(대신 C 번호의 VB에서 답을 받아 주시기 바랍니다)입니다, 그것은 변환된다 CID (고유 한 콘텐츠 ID가 부여됨). 그것을 분석하고 HTML을 재구성하십시오. 이것은 먼 길을 돌아 보았지만 지금은이 문제에서 빠져 나갈 수있는 방법입니다.

또한 공용 네트워크에서 이미지를 호스팅 할 경우 CID로 변경할 필요없이이 이메일을 보내면 자동으로 완료됩니다.

호프가 문제를 해결했거나 최소한의 아이디어를 줄 수 있기를 바랍니다.

감사 Virender 나는 아주 쉽게 IMG의 SRC 값을 대체하게 HtmlAgilityPack 사용하고

1

:

Dictionary<string, string> cids = new Dictionary<string, string>(); 
int imgCount = 0; 
HtmlDocument doc = new HtmlDocument(); 
doc.Load(htmlFilename, System.Text.Encoding.UTF8); 
foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//img")) 
{ 
    HtmlAttribute att = link.Attributes["src"]; 
    Console.Write("img src = " + att.Value); 
    if (!cids.ContainsKey(att.Value)) 
    { 
     cids[att.Value] = imgCount.ToString() + "." + GetRandomString(10) + "@domain.com"; 
     imgCount++; 
    } 
    att.Value = "cid:" + cids[att.Value]; 
    Console.WriteLine(" became " + att.Value); 
} 
StringWriter sw = new StringWriter(); 
doc.Save(sw); 
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(sw.ToString(), System.Text.Encoding.GetEncoding("utf-8"), "text/html"); 

을 그 후에 당신은 CID를 수집 및 부하를 반복하고 링크 된 자원으로 각 파일을 첨부해야 ContentID를 방금 설정 한 cid 값으로 설정합니다.

관련 문제