0
我的理念是從url下載圖像併發送圖像(鏈接資源)到郵件消息到MSMQ !,我可以成功下載圖像,但我無法將它發送給MSMQ,我需要序列化替代視圖,我無法做到這一點?序列化替代視圖MSMQ
下面是代碼
MailMessage m = new MailMessage();
string strBody="<h1>This is sample</h1><image src=\"cid:image1\">";
m.Body = strBody;
AlternateView av1 = AlternateView.CreateAlternateViewFromString(strBody, null, MediaTypeNames.Text.Html);
在這裏,我從網址下載圖片
Stream DownloadStream = ReturnImage();
LinkedResource lr = new LinkedResource(DownloadStream, MediaTypeNames.Image.Gif);
lr.ContentId = "image1";
av1.LinkedResources.Add(lr);
m.AlternateViews.Add(av);
private Stream ReturnImage()
{
try
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(urlForImage);
webRequest.ProtocolVersion = HttpVersion.Version10;
webRequest.KeepAlive = false;
webRequest.Timeout = 1000000000;
webRequest.ReadWriteTimeout = 1000000000;
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
{
Stream k = webResponse.GetResponseStream();
MemoryStream ms = new MemoryStream();
int count = 0;
do
{
byte[] buf = new byte[1024];
count = k.Read(buf, 0, 1024);
ms.Write(buf, 0, count);
} while (k.CanRead && count > 0);
return ms;
}
}
catch (WebException e)
{
return null;
}
你們可以給序列化的另類觀點的解決方案,使我可以能夠發送和接收MSMQ !
你的方法也是正確的,我使用asmx服務,我下載圖像到每個郵件的文件夾,但我無法刪除msmq收到後的文件夾圖像,它說圖像在工作進程 –
@ MazherUlHaq:這與MSQM無關。它表示處理圖像的代碼沒有正確清理,並且保持處理圖像處於打開狀態。確保在適用的情況下調用適當的'Close()'(例如在Streams上)和'Dispose()'方法。還要注意隱藏的陷阱:我非常驚訝,Image.FromFile()在應用程序之前保持文件句柄處於打開狀態。 –