Страница: 1 |
Страница: 1 |
Вопрос: Почта
Добавлено: 13.05.07 14:36
Автор вопроса: D o c a l | Web-сайт:
Народ может хто имеет робочий пример отправления и приема почти скиньте мне на мило пожалуста
Буду очень благодарен
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #1
Добавлено: 13.05.07 16:19
У тебя диалап? А поиск гуглей по VBNet.Ru не подходит?
Номер ответа: 2
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #2
Добавлено: 13.05.07 18:10
Как отправлять я нашол а как принимать не очень
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 13.05.07 18:19
Ну ненадо ссказки.. не искал..
ищи по ключевым VB+POP3
Номер ответа: 4
Автор ответа:
Gogic
Вопросов: 38
Ответов: 121
Профиль | | #4
Добавлено: 13.05.07 23:46
Или в MSDN справку по MAPI.
Номер ответа: 5
Автор ответа:
Dark
Вопросов: 4
Ответов: 41
Профиль | | #5
Добавлено: 14.05.07 04:53
Нах мапи в .NET! Есть стороние классы для работы с pop и еще много чем другим, например Indy.Sockets.dll. Она много с чем умеет работать, в том числе и с POP, к сожалению весит 2,6 Mb. Если тягать с собой dll влом могу предложить собственный класс для работы с POP3, правда немного кривой и написанный на C#.
P.S. POP3 - это для получения почты .
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;
namespace POP_Client
{
class POP_Client
{
private TcpClient m_TcpClient;
private NetworkStream m_NetStream;
private StreamReader m_Reader;
private string log;
private string msg;
public void Connect(string host, string login, string password)
{
// POP3 у нас на 110 порту
m_TcpClient = new TcpClient(host, 110);
// инициализация
m_NetStream = m_TcpClient.GetStream(); // сетевой поток
m_Reader = new StreamReader(m_TcpClient.GetStream()); // ассоциируем с ним ридер потока
//Теперь POP3-сервер ожидает авторизацию
//Выполняем авторизацию
string result;
//result = SendCmd(string.Format("PASS {0}", password));
result = SendCmd(string.Format("USER {0}", login));
result = SendCmd(string.Format("PASS {0}", password));
return;
}
private string SendCmd(string cmd)
{
string result = "";
string m_Data = cmd + System.Environment.NewLine;
byte[] szData;
try
{
szData = System.Text.Encoding.ASCII.GetBytes(m_Data.ToCharArray()); //Преобразуем в строку ASCII
m_NetStream.Write(szData, 0, szData.Length);
result = m_Reader.ReadLine();
log = "Result: " + result + "\r\n" + "Command: " + cmd + "\r\n" + log;
}
catch { }
return result;
}
public int CheckMessages()
{
int count = 0,p;
string result;
result = SendCmd("STAT"
result = SendCmd("LIST"
p = result.IndexOf(" ", 4);
count=int.Parse(result.Substring(4,p-3));
if(count==0)
result = SendCmd("QUIT"
return count;
}
public string RetrieveSubject(int index)
{
string result, str;
bool flag = false;
result = SendCmd("RETR "+index);
result = SendCmd("ELE " + index);
result = SendCmd("QUIT"
msg = "";
str = m_Reader.ReadLine();
while (str!=null)
{
if (str.Length > 7)
if (str.Substring(0, 8).ToLower() == "subject:"
{
result = str;
}
if (str=="Content-Transfer-Encoding: base64"
flag = true;
str = m_Reader.ReadLine();
if (flag && str!="" && str!="\r\n"
msg += str+"\r\n";
}
result = result.Substring(8);
result = result.TrimStart(" ".ToCharArray());
return result;
}
public string GetMsg()
{
int p;
string m = msg;
msg = "";
p = m.IndexOf("=\r\n"
if (p == -1)
{
p = m.IndexOf("==\r\n"
p++;
}
if (p <=0)
{
p = m.IndexOf("+\r\n"
}
m = m.Substring(0, p + 1);
m = Encoding.UTF8.GetString(Convert.FromBase64String(m));
return m;
}
public string GetLog()
{
string l=log;
log="";
return l;
}
}
}
Номер ответа: 6
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #6
Добавлено: 14.05.07 08:39
POP3 - протокол простой на самом деле. Я свои ящики проверяю с помощью телнета, когда времени мало и надо просто узнать сколько там писем.
Делаю так:
[Win] + [R]
cmd[Enter]
telnet pop3.mail.ru 110[Enter]
сервер отвечает +OK
USER zagzag2003[Enter]
сервер отвечает +OK
PASS XеXеXеXe [Enter]
сервер отвечает +OK
STAT
сервер отвечает +OK и выдает кол-во писем и их суммарный объем в байтах
QUIT
сервер отвечает +OK и выгоняет
для получения № первых строк письма по его индексу - команда TOP номер_письма №
для получения всего письма - команда RETR номер_письма
для удаления письма - команда DELE номер_письма (тут я могу ошибаться)