Создание и отправка скриншота на почту на си шарп
Появилась следующая задача:
Создать программу на си шарп, которая через определенное время после запуска снимает скриншот с экрана и отправляет его на почту.Решение несложное, код ниже, еще ниже необходимые пояснения к нему.
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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты