Создание и отправка скриншота на почту на си шарп


Появилась следующая задача:

Создать программу на си шарп, которая через определенное время после запуска снимает скриншот с экрана и отправляет его на почту.
Решение несложное, код ниже, еще ниже необходимые пояснения к нему.

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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си шарп, отправка письма




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Оптимизация MySQL запросов: практика
Что за папка .well-known?
Книга для развлечения, в другой мир после авиакатастрофы