Интернет

  • Автор темы f.7
  • Дата начала
F

f.7

Гость
#1
Нет сил больше бороться - взываю о помощи...., вот не получается 2 задачи.
1) Надо программно проверить есть ли интернет(ну тоесть подключён ли текущий ПК к инету).
2) Как принять и отправить почту???
Я конечно понимаю что мне скажут погуглить или что-то похожее, но всё что я находил работало некоректно....
Буду очень благодарен за подробное обяснение, и/или исходники, которые корректно работают...
 
M

mr_ST

Гость
#2
Нет сил больше бороться - взываю о помощи...., вот не получается 2 задачи.
1) Надо программно проверить есть ли интернет(ну тоесть подключён ли текущий ПК к инету).
2) Как принять и отправить почту???
Я конечно понимаю что мне скажут погуглить или что-то похожее, но всё что я находил работало некоректно....
Буду очень благодарен за подробное обяснение, и/или исходники, которые корректно работают...
1) Смотря что понимать под "есть ли интернет", возможно вам будет достаточно попинговать набор некоторых сайтов (типа microsoft.com, google.com, yahoo.com) Решение не самое лучшее, т.к. в случае если сайты будут лежать то это для программы означает отсутствие инета. Посему нужно пинговать набор сайтов и если хотя бы один опингуется то все ОК (в качестве пингуемых сайтов можно использовать IP адреса корневых DNS серверов). Другая проблема что на firewall пинг может быть и закрыт.

2) Смотри в хелпе SmtpClient класс (только .NET 2.0) это для отправить. С принять сложнее т.к. придется реализовывать соответствующий протокол.
 
P

Pasha

Гость
#3
Если "есть интернет" == "есть хоть какая-то сеть", то можно использовать Microsoft.VisualBasic.Devices.Network.IsAvailable из Microsoft.VisualBasic.dll или IsNetworkAlive из sensapi.dll.
 
F

f.7

Гость
#4
Спасибо за быстроотреагированные ответы, даже не ожидал ;) .
но опять задам вопрос...
1)*********************************
Вот этот код отправляет письмо:


using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net.Mail;
using System.Net;
using System.Windows.Forms;

namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
FileInfo f = new FileInfo(@"C:\temp.txt");
StreamWriter writer = f.CreateText();
writer.WriteLine("Current OS: {0}", Environment.OSVersion);
writer.Close();
try
{
MailMessage message = new MailMessage(

//*******************************************************************************
"Sviksi@mail.ru",//В эту строку можно вписать адрес отправителя
//*******************************************************************************

"Fold@mail.ru",
"Subject",
"Hello");
Attachment data = new Attachment(@"C:\temp.txt");
message.Attachments.Add(data);
SmtpClient client = new SmtpClient("smtp.mail.ru");
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Send(message);
MessageBox.Show("1");
}
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
MessageBox.Show("0");
}
}
}
}

Обратите внимание на строку которая выделена //***** с верху и с низу, так вот если туда вписать адрес "F.7@mail.ru", то выдаёт ошибку, в чем может быть дело?
2)*********************************
Впринципе подойдет и пинг сайтов, но плизззз выкините код как это сделать?????
 
M

mr_ST

Гость
#5
Спасибо за быстроотреагированные ответы, даже не ожидал ;) .
но опять задам вопрос...
Обратите внимание на строку которая выделена //***** с верху и с низу, так вот если туда вписать адрес "F.7@mail.ru", то выдаёт ошибку, в чем может быть дело?
2)*********************************
Впринципе подойдет и пинг сайтов, но плизззз выкините код как это сделать?????
1) Какую ошибку? Разве на mail.ru без авторизации можно работать с smtp?
2) См. класс Ping :)
 
F

f.7

Гость
#6
Вот эту ошибку:
System.Net.Mail.SmtpException: Bad sequence of commands. The server response was
: Administrative prohibition -- authorization required. Users in your domain ar
e not allowed to send email without authorization. See http://www.mail.ru/pages
/help/261.html for details.
at System.Net.Mail.DataCommand.CheckResponse(SmtpStatusCode statusCode, Strin
g serverResponse)
at System.Net.Mail.DataCommand.Send(SmtpConnection conn)
at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressColl
ection recipients, String deliveryNotify, SmtpFailedRecipientException& exceptio
n)
at System.Net.Mail.SmtpClient.Send(MailMessage message)
at ConsoleApplication4.Program.Main(String[] args) in C:\Documents and Settin
gs\Aleksey\Desktop\ConsoleMail\ConsoleMail\Program.cs:line 29

На mail.ru без авторизации работать вроде можно с smtp, как я уже говорил дело в адресе, наверное чтото не нравиться в адресе точка!!!!!
 
M

mr_ST

Гость
#7
Вот эту ошибку:
System.Net.Mail.SmtpException: Bad sequence of commands. The server response was
: Administrative prohibition -- authorization required. Users in your domain ar
e not allowed to send email without authorization. See http://www.mail.ru/pages
/help/261.html for details.
at System.Net.Mail.DataCommand.CheckResponse(SmtpStatusCode statusCode, Strin
g serverResponse)
at System.Net.Mail.DataCommand.Send(SmtpConnection conn)
at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressColl
ection recipients, String deliveryNotify, SmtpFailedRecipientException& exceptio
n)
at System.Net.Mail.SmtpClient.Send(MailMessage message)
at ConsoleApplication4.Program.Main(String[] args) in C:\Documents and Settin
gs\Aleksey\Desktop\ConsoleMail\ConsoleMail\Program.cs:line 29

На mail.ru без авторизации работать вроде можно с smtp, как я уже говорил дело в адресе, наверное чтото не нравиться в адресе точка!!!!!
Уважаемый, там же черным по английскому написано "Administrative prohibition -- authorization required. Users in your domain are not allowed to send email without authorization. See http://www.mail.ru/pages/help/261.html for details."
 
F

f.7

Гость
#8
Всё понял, спасибо за ответ, просто я в английском не очень шарю!!!!
 
R

Real-Mulik

Гость
#9
Скажите плиз как поставить хук на появление инета? В частности на доступ к оперделенному адресу..