Я использовал статическую карту Google, создал связанный ресурс, встроил его в электронную почту и отправил письмо всем пользователям.Я отправляю запрос на сервер Google и преобразовываю ответ в виде потока, а затем создаю связанный ресурс, используя этот поток.
Проблема в том, что я использовал цикл и отправлял почту на все идентификаторы электронной почты, присутствующие в таблице базы данных. Я создал связанный ресурс, создаваемый внутри цикла for, поэтому каждый раз одно и то же изображение запрашивается с сервера Googleи отправлено по почте пользователю.Я хочу предотвратить это, только в первый раз запрос должен быть отправлен в Google, и я должен сохранить этот поток ответов и использовать его для создания связанного ресурса.
Как это сделать?Я попытался сохранить поток в локальной переменной потока и создал связанный ресурс, используя эту переменную потока, я также сохранил поток в viewstate и в сеансе, но ни один из методов не сработал!
for (iCnt = 0; iCnt < dsEmailIds.Tables[0].Rows.Count; iCnt++)
{
//Linked resource to embed Google map in mail
LinkedResource lnkResMain;
if (imgPhotos.Src.Contains("maps.google.com"))
lnkResMain = new LinkedResource(getStream(imgPhotos.Src));
//send mail
mail.SendMail(fromAddress,dsEmailIds.Tables[0].Rows[0]["toAddress"].ToString(),lnkResMain);
}
//this converts string image url to stream since stream can be used to create linked resource
public Stream getStream(string imgUrl)
{
System.Net.WebRequest req = System.Net.WebRequest.Create(imgUrl);
System.Net.WebResponse response = req.GetResponse();
Stream stream = response.GetResponseStream();
return stream;
}