Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Создание почтовой программы


Автор: Revan 12.10.2007, 18:31
Помогите,пожалуйста,с созданием почтовой программы ввида Microsoft Office Outlook. Буду признателен за любую помощь! 

Автор: alexburzak 13.10.2007, 22:51
 smile 
Наверное ты ставишь сильно общую задачу, поэтому никто и не пишет тебе.
Давай попробуем сначало просто создать виндоус приложение и отслать какой нибудь текст себе(мне) на почту.
Например вот код:
Код

    Public Function SendMail(ByVal strFrom As String, ByVal strTo As String, ByVal strSubject As String, ByVal strText As String) As String
        Dim mmMail As New MailMessage(strFrom, strTo, strSubject, strText)
        With mmMail
            .IsBodyHtml = True
            .SubjectEncoding = System.Text.Encoding.GetEncoding("utf-8")
            .BodyEncoding = System.Text.Encoding.GetEncoding("utf-8")
        End With
        Dim scLogicPC As New SmtpClient("mail.myhost.co.il")
        scLogicPC.Credentials = New NetworkCredential("[email protected]", "erthdkjsfdssd")
        Try
            scLogicPC.Send(mmMail)
        Catch ex As Exception
            'Sorry . . .
            Return "Error " & ex.Message()
        End Try
        Return "Yes!"
    End Function

Если получится будем думать дальше, если нет то говори, что.  smile 

Автор: Revan 14.10.2007, 17:12
Вот ты написал код отправки письма, а как его отправить, например, кнопкой.

Добавлено через 2 минуты и 12 секунд
Если можно, то писать по этой теме можно всё, мне многое интересно: и коды и предложения!

Автор: alexburzak 14.10.2007, 17:27
 smile Вот ты задаешь вопросы ответ на каторый есть в книжках на уровне начинаюшего.
    Запускаешь VS 2005.
    берешь форму.
    на нее перетаскиваешь кнопку.
    два раза шелкаешь на этой кнопке.
    автоматом входишь в режим редактирования обработчика этой кнопки.
    В этом обработчике тупо копируешь мой код(без функции) + незабываешь что тебе нужн хост и акаунт.
    Компилируешь и запускаешь и идешь к холлодильнику за пивом.  smile
 smile 
Одназначно, купи(найди) книжку для начинающих. Если хочешь могу посоветовать. Луче в личку или на почту.

Автор: gta4kv 15.10.2007, 20:56
alexburzak, раз уж началось обсуждение, скажу что такого как "MailMessage" студия не знает smile

Добавлено через 10 минут и 13 секунд
Цитата(gta4kv @ 15.10.2007,  20:56)
alexburzak, раз уж началось обсуждение, скажу что такого как "MailMessage" студия не знает smile

Наврал, ддл-ка не подключена была, сорри )

Автор: gta4kv 15.10.2007, 21:14
Цитата(gta4kv @ 15.10.2007,  20:56)
alexburzak, раз уж началось обсуждение, скажу что такого как "MailMessage" студия не знает smile

Добавлено @ 21:07
Цитата(gta4kv @ 15.10.2007,  20:56)
alexburzak, раз уж началось обсуждение, скажу что такого как "MailMessage" студия не знает smile

Наврал, ддл-ка не подключена была, сорри )

alexburzak, а как отправить письмо без smtp сервера? ( заголовками т.е )

Автор: alexburzak 15.10.2007, 21:50
Цитата(gta4kv @ 15.10.2007,  21:14)
alexburzak, а как отправить письмо без smtp сервера? ( заголовками т.е )

Сори это не ко мне.  smile 

Автор: tol05 15.10.2007, 23:06
Цитата(gta4kv @  15.10.2007,  21:14 Найти цитируемый пост)
alexburzak, а как отправить письмо без smtp сервера? ( заголовками т.е ) 

если получится открыть сокет на 25 порт, то можно отправить потоком что-угодно и без чего угодно  smile 

Автор: gta4kv 16.10.2007, 15:39
Цитата(tol05 @ 15.10.2007,  23:06)
Цитата(gta4kv @  15.10.2007,  21:14 Найти цитируемый пост)
alexburzak, а как отправить письмо без smtp сервера? ( заголовками т.е ) 

если получится открыть сокет на 25 порт, то можно отправить потоком что-угодно и без чего угодно  smile

Э, ну тогда как бы  smile 

Автор: tol05 16.10.2007, 23:45
gta4kv, задержал пример, т.к.:
- не очень хорошо знаю (знал smile, счас чуть лучше) протокол SMTP
- много работы днем... 

Пример : посылка сообщения с сервера mail.ru на ... да все равно куда. Просто mail.ru требует авторизации Base64, а другой сервер - может чего-то другого,.. если что - гугл в руки

Пример на шарпе, извини. Думаю, проблем с чтением кода быть не должно

Код

using System;
using System.Net.Sockets;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static TcpClient;

        static byte[] buffer;
        static NetworkStream stream;
        static byte[] data;

        static void Main(string[] args)
        {
            buffer = new byte[1024];
            client = new TcpClient("smtp.list.ru", 25);
            stream = new NetworkStream(client.Client);

            SendReceive("EHLO smtp.list.ru", false);
            SendReceive("AUTH LOGIN", false);

            SendReceive("tol05", true);
            SendReceive("..............................................", true);//извини, пароль дать не могу :)

            SendReceive("MAIL FROM:<[email protected]>", false);
            SendReceive("RCPT TO:<[email protected]>", false);
            SendReceive("DATA", false);
            SendReceive("ПРИВЕТ." + Environment.NewLine, false);
            SendReceive("." + Environment.NewLine, false);
            SendReceive("QUIT", false);

            stream.Close();
            client.Close();
        }

        private static void SendReceive(string message, bool encode)
        {
            if(encode)
            {
                message = Convert.ToBase64String(Encoding.ASCII.GetBytes(message));
            }
            Console.WriteLine(message);
            data = Encoding.ASCII.GetBytes(message + Environment.NewLine);
            stream.Write(data, 0, data.Length);

            client.Client.Receive(buffer);
            Console.WriteLine(Encoding.ASCII.GetString(buffer));
        }
    }
}



P.S. да, писать/читать можно также только через сокет, или через поток, так что и сокет и поток не обязательно юзать вместе... Просто для наглядности оставил...

Автор: Revan 17.10.2007, 14:19
Цитата(alexburzak @ 14.10.2007,  17:27)
smile Вот ты задаешь вопросы ответ на каторый есть в книжках на уровне начинаюшего.
    Запускаешь VS 2005.
    берешь форму.
    на нее перетаскиваешь кнопку.
    два раза шелкаешь на этой кнопке.
    автоматом входишь в режим редактирования обработчика этой кнопки.
    В этом обработчике тупо копируешь мой код(без функции) + незабываешь что тебе нужн хост и акаунт.
    Компилируешь и запускаешь и идешь к холлодильнику за пивом.  smile
 smile 
Одназначно, купи(найди) книжку для начинающих. Если хочешь могу посоветовать. Луче в личку или на почту.

Я знаю основу и чуть больше я уже прочитал 3 толстых книжки, я имею виду как ты собирался объявлять переменные, которые ты использушь в самом начале не через функцию? Чтобы не вызвать ошибки. Я хорошо занимаюсь основой и дизайном, а вот по поводу там всяких сокетов и других трудностей, как например отправка сообщений, я не знаю, вот я и создал эту тему. Так как я хочу научиться всему этому. Я расчитываю на вашу поддержку.

Автор: alexburzak 17.10.2007, 14:27
Цитата(Revan @ 17.10.2007,  14:19)
Я расчитываю на вашу поддержку.
Yt

Без проблем получишь.
Переменные обявляются вот так(Синтакс VB.NET):
Dim mmMail As New MailMessage()
Не забудь прописать импорты(gta4kv забыл).
Imports System.[Поиск в MSDN и Google(также можно спрашивать но лучше попробуй поискать сам)]
Какие еще вопросы не понятны?
 smile 

Автор: gta4kv 18.10.2007, 05:45
Цитата(tol05 @ 16.10.2007,  23:45)
gta4kv, задержал пример, т.к.:
- не очень хорошо знаю (знал smile, счас чуть лучше) протокол SMTP
- много работы днем... 

Пример : посылка сообщения с сервера mail.ru на ... да все равно куда. Просто mail.ru требует авторизации Base64, а другой сервер - может чего-то другого,.. если что - гугл в руки

Пример на шарпе, извини. Думаю, проблем с чтением кода быть не должно

Код

using System;
using System.Net.Sockets;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static TcpClient;

        static byte[] buffer;
        static NetworkStream stream;
        static byte[] data;

        static void Main(string[] args)
        {
            buffer = new byte[1024];
            client = new TcpClient("smtp.list.ru", 25);
            stream = new NetworkStream(client.Client);

            SendReceive("EHLO smtp.list.ru", false);
            SendReceive("AUTH LOGIN", false);

            SendReceive("tol05", true);
            SendReceive("..............................................", true);//извини, пароль дать не могу :)

            SendReceive("MAIL FROM:<[email protected]>", false);
            SendReceive("RCPT TO:<[email protected]>", false);
            SendReceive("DATA", false);
            SendReceive("ПРИВЕТ." + Environment.NewLine, false);
            SendReceive("." + Environment.NewLine, false);
            SendReceive("QUIT", false);

            stream.Close();
            client.Close();
        }

        private static void SendReceive(string message, bool encode)
        {
            if(encode)
            {
                message = Convert.ToBase64String(Encoding.ASCII.GetBytes(message));
            }
            Console.WriteLine(message);
            data = Encoding.ASCII.GetBytes(message + Environment.NewLine);
            stream.Write(data, 0, data.Length);

            client.Client.Receive(buffer);
            Console.WriteLine(Encoding.ASCII.GetString(buffer));
        }
    }
}



P.S. да, писать/читать можно также только через сокет, или через поток, так что и сокет и поток не обязательно юзать вместе... Просто для наглядности оставил...

Блин! Я же просил без сервера ))

Цитата
alexburzak, а как отправить письмо без smtp сервера? ( заголовками т.е ) 

Автор: tol05 18.10.2007, 07:56
Цитата(gta4kv @  18.10.2007,  05:45 Найти цитируемый пост)
Блин! Я же просил без сервера ))

а как это, совсем без сервера? В космос послать поток? Может лет через 200 кто-то ответит?

Сокет с твоего компа должен подконнектиться к сокету сервера. Если не будет соединения, то передачи не будет тоже. И как клиент заберет письмо, если сервер его не получал? Он же хочет получить письмо? С почтового сервера?
Цитата(gta4kv @  15.10.2007,  21:14 Найти цитируемый пост)
а как отправить письмо без smtp сервера?

или давай тогда не говорить "письмо", "почтовая программа", а говорить просто - сетевая программа, сетевое сообщение.

P.S. Напиши пример с заголовками, как это должно выглядеть, то, чего ты хочешь.

Автор: Zhenek 23.10.2007, 15:39
Revan, 
ИМХО , но с такими знаниями рано тебе еще писать почтовые программы.
Мы тебе поможем ты только спрашивай, но зачем изобретать велосипед.... чем тебя то-же Outlook или the bat не устраивает????    там есть все что нужно......

Автор: Baa 23.10.2007, 15:56
Эх, без сервера smile Эт такой кайф, когда ты сам себе сервер ;-) релэй, сам резолвишь домены, все другие резолвят тебя smile и в таком духе. Ах, да, внутри себя можно посылать через шардмемори smile
Не хочет он быть грозной царицой, хочет быть владычицой морскою smile
п.с. может ты перепутал MS Outlook с MS Exchange Server? smile

Автор: Revan 23.10.2007, 20:49
А с чего тогда мне начать? Вроде бы год уже занимаюсь VB,но в голову дельного так и ничего и не приходит! Конечно, приходило, но все проекты так и не доделаны. Хотел играми заняться, но пока ещё видно рано, да ещё SDK не знаю где взять

Автор: alexburzak 23.10.2007, 21:02
Revan
А сколько времени ты занимаешься VB?
Возьми какой-нибудь легкий проект который ты можешь довести до ума интернет тебе в помощь! Такой что бы за неделю можно было закончить и самое главне, что бы ты представлял в голове КАК это можно сделать.
Например обучалка печатывания на клавиатуре. Появляется буква на форме VB(label) и пользователь должен нажать такую клавищу скажем в течении 2-3 секунд. и выводить один звук если получилось и другой если нет(фантазию на звуки можешь включить сам).
Что бы был стимул найди в нете бесплатный хостинг сделай себе страничку и там вылаживай свои творения, глядишь через год другой сам будешь удивлятся какие элементарные вещи ты в начале делал....
 smile 

Автор: Baa 24.10.2007, 11:18
Цитата(Revan @ 23.10.2007,  20:49)
А с чего тогда мне начать? Вроде бы год уже занимаюсь VB,но в голову дельного так и ничего и не приходит! Конечно, приходило, но все проекты так и не доделаны. Хотел играми заняться, но пока ещё видно рано, да ещё SDK не знаю где взять

Игры можно делать и без сдк.
Начни с простого, если тебе интересны именно игры, сделай аналог тетриса, пакмена.
Отрисовывай всё на форму через GDI+.

Автор: Revan 28.10.2007, 20:33
Конечно, мне интересны игры, но сейчас хочу сначала нормально разобраться с созданием программ.
У меня есть несколько вопросов:
1. Как при загрузки программы проиграть какой-нибудь звук или музыку. Или при нажатие на кнопку
2. Как можно использовать одну Panel несколько раз. Например, при нажатие на кнопку появлялось несколько кнопок, имеющие свои действия. И вторая кнопка, при нажатие на которую на той же самой панели сменились кнопки, при чём, чтобы они имели уже другие действия
3.Мне нужен хороший понятный пример мини-текстового редактора, чтобы там был выбор шрифта, размер текста, выбор цвета 
 Пока мне хватит, заранее спасибо

Автор: Revan 30.10.2007, 21:59
Ну чё никто не пишет то? Я не поверю, что вы не знаете. Я пойму, если это просто лень, но всё же можно же помощь человеку то?

Автор: Baa 31.10.2007, 00:30
Ну, дело в том, что большую часть твоих вопросов можно решить, открыв книгу или зайдя на codeproject или codeguru(не говоря уж о том, что можно банально воспользоваться поиском по форуму). Там в соседнем подфоруме Kurzon "зажигает" на примерно такие же темы, можно почитать и их.

Автор: Revan 31.10.2007, 13:07
По звукам вопрос я мог и использовать media player,но я хотел, по проще и по оптимизированее. Вопрос по шрифтам я имел ввиду как и в офисе, чтоб можно было из combobox выбирать размер и названия шрифта. Покажи мне хоть один самоучитель где это написано! Чем писать ищи "по форуму" мог бы и скопировать сюда. Вот найди, я чё-то ничего не нашёл. Если ты умный такой, лучше не пиши.  

Автор: alexburzak 5.11.2007, 14:15
Цитата(Revan @ 31.10.2007,  13:07)
По звукам вопрос я мог и использовать media player,но я хотел, по проще и по оптимизированее. Вопрос по шрифтам я имел ввиду как и в офисе, чтоб можно было из combobox выбирать размер и названия шрифта. Покажи мне хоть один самоучитель где это написано! Чем писать ищи "по форуму" мог бы и скопировать сюда. Вот найди, я чё-то ничего не нашёл. Если ты умный такой, лучше не пиши.

 smile 
Ребята правы.
Попробую все свои вопросы разбить на отдельные посты.
Также прежде чем написать пост обезательно воспользуюся поском и только если ты в полном тупике, то задавай КОНКРЕТНЫЙ вопрос здесь. Как правило всегда кто-нибудь ответит. А еще есть и другие форумы... Мой опыт говорит, что здесь сидят не жлобы и стараются отвечать как могут.  smile 
Удачи!

Автор: Revan 5.11.2007, 15:25
Я бы не задал вопросов, если хоть что-нибудь нашёл. Насчёт других форумов, то там не форумы, а не знаю что. Тем более именно на VB.NET, щас мало примером в инете 

Автор: Revan 5.11.2007, 16:23
Ваша помощь остаётся в силе

Автор: alexburzak 6.11.2007, 09:38
Цитата(Revan @ 5.11.2007,  15:25)
Я бы не задал вопросов, если хоть что-нибудь нашёл. Насчёт других форумов, то там не форумы, а не знаю что. Тем более именно на VB.NET, щас мало примером в инете

Сори, но обычно в интернете, кто ничего не находить с тем никто не хочет общатся.
Попробуй дать пример чего ты ищешь мне - поишем вместе. Только что-то конкретное. И лучше на мыло(на почту)

Добавлено через 1 минуту и 17 секунд
Цитата(Revan @ 5.11.2007,  16:23)
Ваша помощь остаётся в силе      ?

Если это вопрос, то да и еще раз лучше на почту.

Автор: Ania 10.10.2008, 22:37
Цитата(tol05 @ 18.10.2007,  07:56)
Цитата(gta4kv @  18.10.2007,  05:45 Найти цитируемый пост)
Блин! Я же просил без сервера ))

а как это, совсем без сервера? В космос послать поток? Может лет через 200 кто-то ответит?

Сокет с твоего компа должен подконнектиться к сокету сервера. Если не будет соединения, то передачи не будет тоже. И как клиент заберет письмо, если сервер его не получал? Он же хочет получить письмо? С почтового сервера?
Цитата(gta4kv @  15.10.2007,  21:14 Найти цитируемый пост)
а как отправить письмо без smtp сервера?

или давай тогда не говорить "письмо", "почтовая программа", а говорить просто - сетевая программа, сетевое сообщение.

P.S. Напиши пример с заголовками, как это должно выглядеть, то, чего ты хочешь.

У меня похожий вопрос, но с конкретным примером...
http://forum.vingrad.ru/index.php?showtopic=223610&view=findpost&p=1664937

Автор: Pilger 13.10.2008, 00:09
Если все будут спрашивать одно и тоже по сто раз, то не форум будет, а свалка. Советую не сгребать все в одну кучу.

Цитата

2. Как можно использовать одну Panel несколько раз. Например, при нажатие на кнопку появлялось несколько кнопок, имеющие свои действия. И вторая кнопка, при нажатие на которую на той же самой панели сменились кнопки, при чём, чтобы они имели уже другие действия


http://forum.vingrad.ru/forum/topic-222125.html

Автор: DesTPor 21.2.2009, 15:18
Цитата(Zhenek @ 23.10.2007,  15:39)
Revan, 
ИМХО , но с такими знаниями рано тебе еще писать почтовые программы.
Мы тебе поможем ты только спрашивай, но зачем изобретать велосипед.... чем тебя то-же Outlook или the bat не устраивает????    там есть все что нужно......

при чём здесь Outlook или the bat? возможно ему нужно тоже самое что и мне


хотелось бы в свою прогу всунуть дополнительную фишку - почтовый клиент с возможностью отправки и приёма сообщений, а так же возможностью прикрепления файлов

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)