Считать Selenium Image в байтовый массив и отправить в виде встроенного изображения в электронное письмо - PullRequest
1 голос
/ 29 февраля 2020

Я хотел бы прочитать скриншот веб-страницы и отправить его по электронной почте в 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;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...