Я хотел бы прочитать скриншот веб-страницы и отправить его по электронной почте в C# без сохранения его в виде файла. Прямо сейчас мое тело сообщения электронной почты показывает только это сообщение: «Это начальная стартовая страница для сервера WebDriver», изображение отсутствует. Какое решение для отображения изображения? Спасибо.
Main:
static void Main(string[] args)
{
//FOR IE
InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
IWebDriver driver = new InternetExplorerDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), options);
// end of IE driver
driver.Navigate().GoToUrl("https://www.google.com");
var screenshot = (driver as ITakesScreenshot).GetScreenshot();
//send email
SendEmail(screenshot.AsByteArray, "google", DateTime.Now);
driver.Close();
driver.Quit();
}
способ отправки по почте
//write byte[] to email
static void SendEmail(byte[] stream, string pageName, DateTime screenshotTime)
{
byte[] image = stream;
Attachment att = new Attachment(new MemoryStream(stream), pageName);
att.ContentDisposition.Inline = true;
att.ContentId = Guid.NewGuid().ToString();
att.ContentType.MediaType = "image/png";
//send mail
SmtpClient client = new SmtpClient(myMailServer);
MailMessage mailMessage = new MailMessage();
mailMessage.IsBodyHtml = true;
mailMessage.From = new MailAddress(from);
mailMessage.To.Add(new MailAddress(to));
//send message
mailMessage.Subject = "Website Screenshot";
mailMessage.Body += "Website Name: " + pageName + Environment.NewLine + Environment.NewLine;
mailMessage.Body += "Screenshot Time: " + screenshotTime + Environment.NewLine + Environment.NewLine;
mailMessage.Body = String.Format( "<h3>Screenshot</h3>" + @"<img src=""cid:{0}"" />", att.ContentId);
mailMessage.Attachments.Add(att);
try
{
client.Send(mailMessage);
}
catch (Exception ex)
{
throw ex;
}
}