我的概念是从网址下载图像并将图像(链接资源)发送到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!
答案 0 :(得分:0)
我认为你不应该采用这种方法。
MSMQ旨在实现目标,因此发送像图像这样的大量数据并非意图 - 当然,这在技术上是可行的。
另请注意,MSQM每封邮件的限制为4 MB。根据图像的大小,这可能会成为问题(或可能不会)。
相反,我建议您将图像保存到所有参与的应用程序/服务/等可以访问的地方,例如网络共享,文件服务器或Web服务器,或......
然后,您只发送MSMQ消息中的URI。在发送方和接收方都可以非常快速地处理。此外,这将在MSMQ基础设施上轻松得多。