Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310

Клиент для e-mail

09.04.2011, 22:44. Показов 3133. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу сделать программку. Смысл её-чтение и отправка почты с компа. Преимущество по сравнению с Аутлуком:маленький вес и голая нужда, а с майл агентом-поддержка нескольких учёток на серверах отличных от mail.ru.
Как отправить почту-я знаю, но вот вопрос, а как её принять, а точнее просто считать с почтового ящика не удаляя их с сервера. Выглядеть должно как-то так. Мы выбираем ак(вводим логин, пароль) дальше в лист бокс должно загрузиться список сообщений. Щёлкая по любому из этих пунктов, мы выводим в текстбокс текст сообщения и данные отправителя. Кроме этого хочу сделать кнопку скачать всё, которая скачивает все сообщения в текстовый документ. Буду очень признателен за помощь.
p.s Есть какие-то dll библиотеки или элементы activex которые позволяют как-то всё это реализовывать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.04.2011, 22:44
Ответы с готовыми решениями:

Почтовый клиент для mail.ru.Кодировка строк
Здравствуйте! Написание потового клиента.POP3. Получаю с сервера письмо анализирую его кодировку и перекодирую его в соответствии с...

Почтовый клиент pop.mail.ru
Здравствуйте! Пытаюсь написать небольшой консольный почтовый клиент для mail.ru, но возникла сложность. После успешной авторизации не...

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

7
Крутой форумчанин
154 / 154 / 8
Регистрация: 09.01.2011
Сообщений: 298
10.04.2011, 10:39
итак, начнём.
http://ru.wikipedia.org/wiki/POP3
POP3 используется почтовым клиентом для получения сообщений электронной почты с сервера.
Что ещё для счастья нужно?

Получить-то, ты их получишь... Но. Ещё нужно разобраться с кодировками и форматом полученных сообщений...
0
 Аватар для Ciberst
559 / 436 / 21
Регистрация: 16.12.2010
Сообщений: 953
10.04.2011, 11:52
чем смогу, тем помогу, могу предоставить пример, получает кол-во писем, но пока не разобрался как их прочитать, итак,вот код:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
Imports System.Drawing
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.Threading
Imports System.Windows.Forms
 
 
Public Class PopCheck
 
    Inherits Form
    Public Shared hostname As New Windows.Forms.TextBox
    Public Shared messages As New Windows.Forms.ListBox
    Public Shared password As New Windows.Forms.TextBox
    Public Shared status As New Windows.Forms.TextBox
    Public Shared username As New Windows.Forms.TextBox
    Public Shared mailclient As TcpClient
    Public Shared ns As NetworkStream
    Public Shared sr As StreamReader
    Public Shared sw As StreamWriter
 
 
    Public Sub New()
    End Sub
 
    Public Shared Sub ButtonloginOnClick()
        status.Text = "Проверка..."
        Dim startlogin As New Thread(New ThreadStart(AddressOf loginandretr))
        startlogin.IsBackground = True
        startlogin.Start()
    End Sub
 
    Public Shared Sub ButtoncloseOnClick(ByVal obj As Object, ByVal ea As EventArgs)
        If ns IsNot Nothing Then
            sw.Close()
            sr.Close()
            ns.Close()
            mailclient.Close()
        End If
 
    End Sub
 
    Public Shared Sub loginandretr()
        Try
            Dim response As String
            Dim from As String = Nothing
            Dim subject As String = Nothing
            Dim totmessages As Integer
 
            Try
                mailclient = New TcpClient(hostname.Text, 110)
            Catch generatedExceptionName As SocketException
                status.Text = "Никак"
                Return
            End Try
 
            ns = mailclient.GetStream()
            sr = New StreamReader(ns)
            sw = New StreamWriter(ns)
 
            response = sr.ReadLine()
 
            sw.WriteLine("User " + username.Text)
            sw.Flush()
 
            response = sr.ReadLine()
            If response = "-ERR" Then
                status.Text = "Никак"
                Return
            End If
 
            sw.WriteLine("Pass " + password.Text)
            sw.Flush()
 
            Try
                response = sr.ReadLine()
            Catch generatedExceptionName As IOException
                status.Text = "Невозможно подключиться"
                Return
            End Try
            If response.Substring(0, 3) = "-ER" Then
                status.Text = "Сервер не доступен"
                Return
            End If
 
            sw.WriteLine("stat")
            sw.Flush()
 
            response = sr.ReadLine()
            Dim nummess As String() = response.Split(" "c)
            totmessages = Convert.ToInt16(nummess(1))
            If totmessages > 0 Then
                status.Text = "у вас" & totmessages & "сообщения"
            Else
                status.Text = "Сообщений нету"
            End If
 
            For i As Integer = 1 To totmessages
                sw.WriteLine("top " & i & " 0")
                sw.Flush()
                response = sr.ReadLine()
 
                While True
                    response = sr.ReadLine()
                    If response = "." Then
                        Exit While
                    End If
                    Try
 
                        If response.Length > 4 Then
                            If response.Substring(0, 5) = "От:" Then
                                from = response
                            End If
                            If response.Substring(0, 8) = "Сабж:" Then
                                subject = response
                            End If
                        End If
 
                    Catch ex As Exception
 
                    End Try
                End While
                Try
                    messages.Items.Add(i & "  " & from & "  " & subject)
                Catch
                End Try
 
            Next
        Catch
        End Try
 
    End Sub
 
    Public Shared Sub getmessagesDoubleClick(ByVal ind As Integer)
        Dim text As String = DirectCast(messages.Items(ind), String)
        Dim textarray As String() = text.Split(" "c)
        Dim sm As New ShowMessage(ns, textarray(0))
        sm.ShowDialog()
    End Sub
 
    Public Shared Sub Main()
        Application.Run(New PopCheck())
    End Sub
End Class
 
Class ShowMessage
    Inherits Form
    Public Sub New(ByVal ns As NetworkStream, ByVal messnumber As String)
        Dim sr As New StreamReader(ns)
        Dim sw As New StreamWriter(ns)
        Dim response As String
 
        Text = "Message " & messnumber
        Size = New Size(400, 380)
        ShowInTaskbar = False
 
        Dim display As New TextBox()
        display.Parent = Me
        display.Multiline = True
        display.Dock = DockStyle.Fill
        display.ScrollBars = ScrollBars.Both
 
        sw.WriteLine("retr " & messnumber)
        sw.Flush()
        response = sr.ReadLine()
 
        While False
            'response = sr.ReadLine()
            If response = "." Then
                Exit While
            End If
            'display.Text += response & vbCr & vbLf
        End While
    End Sub
End Class
-------------------------------------------
VB.NET
1
2
3
4
5
6
7
8
                    PopCheck.hostname.Text = "pop.mail.ru"
                    PopCheck.username.Text = "user"
                    PopCheck.password.Text = "pass"
                    PopCheck.ButtonloginOnClick()
                    For i = 0 To PopCheck.messages.Items.Count - 1
                       textbox.text=textbox.text & vbcrlf & PopCheck.messages.Items(i).ToString
                    Next
                    PopCheck.getmessagesDoubleClick(5)
Добавлено через 6 минут
p.s. код брал дл9 c#
1
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
10.04.2011, 15:50  [ТС]
часть проблем решена, осталось как-то считать всё это дело, то бишь текст писем. Буду пока сёрфить msdn

Добавлено через 13 минут
Ciberst, можешь дать краткие пояснения к коду. А то очень сложно разобраться. Спасибо заранее.
0
 Аватар для Ciberst
559 / 436 / 21
Регистрация: 16.12.2010
Сообщений: 953
10.04.2011, 16:01
Provaider, я этот код взял из интернета, в принципе, там есть попытка прочитать письмо, но выдает пустоту, если получится сделать рабочий клиент на vb net, обязательно отпишись, создадим библу тогда, и расскажем как пользоваться, а то под .нет, мало хороших и понятных клиентов, в общем вечером (по москве) постараюсь прокомментировать код, я сейчас пишу с телефона просто
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
10.04.2011, 16:51
Вот можно этот пример взять в качестве основы программы
0
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
10.04.2011, 22:32  [ТС]
нашёл вот что Но есть проблема: при загрузке примера, мой VB2008 Начинает материться и трансформирует код, что естественно приводит прогу в неработоспособное состояние=(

Добавлено через 4 часа 24 минуты
Полазил по MSDN. Оказывается, что в вб.нет есть таки спец класс для приёма: вот оно. Постараюсь в ближайшие сутки переварить

Добавлено через 42 минуты
Ага!!! есть контакт. Кое-что на шпилли виллил. Итак скачиваем ДДЛ библиотеку. Дальше создаём новое приложение в vb.net, кидаем на форму 1 кнопку и 1 текст бокс и пишем что-то вроде этого:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Public Class Form1
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim mailman As New Chilkat.MailMan()
 
        Dim success As Boolean
        success = mailman.UnlockComponent("30-day trial")
        If (success <> True) Then
            MsgBox("Component unlock failed")
            Exit Sub
        End If
 
 
       
        mailman.MailHost = "POP.mail.ru"
 
 
        mailman.PopUsername = "ВАШ АККАУНТ"
        mailman.PopPassword = "ПАРОЛЬ ОТ АККАУНТА"
 
        Dim bundle As Chilkat.EmailBundle
      
        bundle = mailman.CopyMail()
 
        If (bundle Is Nothing) Then
            MsgBox(mailman.LastErrorText)
            Exit Sub
        End If
 
 
        Dim i As Long
        Dim email As Chilkat.Email
        For i = 0 To bundle.MessageCount - 1
            email = bundle.GetEmail(i)
            TextBox1.Text = TextBox1.Text & email.From & vbCrLf
            TextBox1.Text = TextBox1.Text & email.Subject _
                 & vbCrLf & vbCrLf
 
        Next
 
 
 
        mailman.Pop3EndSession()
 
 
    End Sub
End Class
Не забудте указать ваш ак и пароль на майле, я там подписал, где надо. В текст бокс кидается ваша переписка. Смущает меня только 2 момента: это
VB.NET
1
 success = mailman.UnlockComponent("30-day trial")
И ещё 1, но не такой важный-вес библиотечки 5,45 метра и то, что некоторые русский кодировки(НЕ ВСЕ!!!) становятся китайской грамотой. Всё это я скоммуниздел здесь
0
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
28.04.2011, 11:21  [ТС]
В ходе дальнейшей работы над прогой выяснился 1 важный момент. Относится всё это к пользователям линеек Vista/7. Дела в том, что данный код не работает на компьютерах, в чьих именах содержатся русские буквы. Если выдаёт ошибку вроде "Сбой отправки". Проверте имя компьютера Панель управления\Система и безопасность\Система в 7ке, а в Висте уже не помню, но как-то также.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2011, 11:21
Помогаю со студенческими работами здесь

mail клиент с помощью сокетов, проблемка
День добрый. Начал изучать C#, решил написать простенький клиент для отправки и получения почты с помощью сокетов. Проблема в том, что...

Как запустить e-mail клиент из Access''a?
В текстовом поле хранится e-mail. По-умолчанию открывается Internrt browser . А как открыть e-mail клиент для отправки почтового сообщения...

Почтовый клиент.POP3.Кодировка текста (почта mail.ru)
Я получаю с сервера вот такую строку: =?utf-8?Q?=D0=9C=D0=B8=D1=88=D0=B0_=D0=A1=D0=B5=D1=80=D1=91=D0=B3=D0=B8=D0=BD?= (что здесь лишнее т.е...

Почтовый клиент.POP3. Расшифровка писем с почты mail.ru
Подскажите, пожалуйста, как можно из строки (String) в которой находится текст письма зашифрованный в Base64, получить строку String (не...

Определение E-mail для Mail-in базы
Здравствуйте, уважаемые коллеги! Такой вопрос: как лучше определять e-mail текущей базы данных - лезть каждый раз в адресную книжку или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru