472,982 Members | 1,091 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,982 software developers and data experts.

Developing pop3 connector for Exchange 2003

Hi everybody!

I'm decided to develop (at least try) a custom pop3 connector / mail
downloader for Exchange 2003. The question is simple: How do I start? I use
MS Visual Studio 2003 (VB .Net). I want to build an app which first
retrieves all mail from our ISP and then delivers it to every Exchange inbox
folder in the company. So I guess I need first to build a pop3 client and
then manage to reroute those messages to the Exchange inbox folder of every
user. I need guidance on how to start searching for info and so on. I've
spent hours browsing the net with nearly no success. Is there a good book on
this?

Well, in a word, ANY KIND OF HELP WILL BE WELCOME!!!!

Thanks in advance.

Nov 21 '05 #1
3 3292
Hi,

I converted this c# pop3 mail class to vb.net. Maybe this will
help.

http://www.programmersheaven.com/2/Art_CSharp_3

How to use

Dim mail As New Pop3Mail

mail.Connect("mail.xxxx.net", "user", "password")

For Each msg As Pop3Mail.Pop3Message In mail.List

Trace.WriteLine(DirectCast(mail.Retrieve(msg),
Pop3Mail.Pop3Message).message)

Next

The class

Imports System.Net.Sockets

Public Class Pop3Mail

Inherits System.Net.Sockets.TcpClient

Public Class Pop3Exception

Inherits System.ApplicationException
Public Sub New(ByVal str As String)

MyBase.New(str)
End Sub 'New

End Class 'Pop3Exception

Public Class Pop3Message

Public number As Long

Public bytes As Long

Public retrieved As Boolean

Public message As String

End Class 'Pop3Message

Public Overloads Sub Connect(ByVal server As String, ByVal username As
String, ByVal password As String)

Dim message As String

Dim strResponse As String

Connect(server, 110)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(Response)

End If

message = "USER " + username + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

message = "PASS " + password + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

End Sub 'Connect

Public Sub Disconnect()

Dim message As String

Dim strResponse As String

message = "QUIT" + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

End Sub 'Disconnect

Public Function List() As ArrayList

Dim message As String

Dim strResponse As String

Dim retval As New ArrayList

message = "LIST" + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

While True

strResponse = Response()

If strResponse = "." & vbCr & vbLf Then

Return retval

Else

Dim msg As New Pop3Message

Dim seps As Char() = " ".ToCharArray

Dim values As String() = strResponse.Split(seps)

msg.number = Int32.Parse(values(0))

msg.bytes = Int32.Parse(values(1))

msg.retrieved = False

retval.Add(msg)

End If

End While

End Function 'List

Public Function Retrieve(ByVal rhs As Pop3Message) As Pop3Message

Dim message As String

Dim strResponse As String

Dim msg As New Pop3Message

msg.bytes = rhs.bytes

msg.number = rhs.number

message = "RETR " & rhs.number & vbCr & vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

msg.retrieved = True

While True

strResponse = Response()

If strResponse = "." & vbCr & vbLf Then

Exit While

Else

msg.message += strResponse

End If

End While

Return msg

End Function 'Retrieve

Private Sub Write(ByVal message As String)

Dim en As New System.Text.ASCIIEncoding

Dim WriteBuffer(1023) As Byte

WriteBuffer = en.GetBytes(message)

Dim stream As NetworkStream = GetStream()

stream.Write(WriteBuffer, 0, WriteBuffer.Length)

Debug.WriteLine("WRITE:" + message)

End Sub 'Write

Public Sub Delete(ByVal rhs As Pop3Message)

Dim message As String

Dim strResponse As String

message = "DELE " & rhs.number & vbCr & vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

End Sub 'Delete

Private Function Response() As String

Dim enc As New System.Text.ASCIIEncoding

Dim serverbuff() As Byte = New [Byte](1023) {}

Dim stream As NetworkStream = GetStream()

Dim count As Integer = 0

While True

Dim buff() As Byte = New [Byte](1) {}

Dim bytes As Integer = stream.Read(buff, 0, 1)

If bytes = 1 Then

serverbuff(count) = buff(0)

count += 1

If buff(0) = Asc(vbLf) Then

Exit While

End If

Else

Exit While

End If

End While

Dim retval As String = enc.GetString(serverbuff, 0, count)

Debug.WriteLine("READ:" + retval)

Return retval

End Function 'Response

End Class

Ken

---------------------------------
"Krach" <kr***@nomail.com> wrote in message
news:%2****************@TK2MSFTNGP11.phx.gbl...
Hi everybody!

I'm decided to develop (at least try) a custom pop3 connector / mail
downloader for Exchange 2003. The question is simple: How do I start? I use
MS Visual Studio 2003 (VB .Net). I want to build an app which first
retrieves all mail from our ISP and then delivers it to every Exchange inbox
folder in the company. So I guess I need first to build a pop3 client and
then manage to reroute those messages to the Exchange inbox folder of every
user. I need guidance on how to start searching for info and so on. I've
spent hours browsing the net with nearly no success. Is there a good book on
this?

Well, in a word, ANY KIND OF HELP WILL BE WELCOME!!!!

Thanks in advance.


Nov 21 '05 #2
Hi again Ken,

I had a look to the sample code you sent me. Now a question: How do I
retrieve attachements? Apparently this is not included in the code... (at
first sight)

And supposing I get the attachements too, the issue is "trasforming" that
into a message I can deliver to our Exchange server thru SMTP with the
original date & time...

Any ideas about all this stuff?

Thanx!

"Ken Tucker [MVP]" <vb***@bellsouth.net> escribió en el mensaje
news:#L**************@TK2MSFTNGP14.phx.gbl...
Hi,

I converted this c# pop3 mail class to vb.net. Maybe this will help.

http://www.programmersheaven.com/2/Art_CSharp_3

How to use

Dim mail As New Pop3Mail

mail.Connect("mail.xxxx.net", "user", "password")

For Each msg As Pop3Mail.Pop3Message In mail.List

Trace.WriteLine(DirectCast(mail.Retrieve(msg),
Pop3Mail.Pop3Message).message)

Next

The class

Imports System.Net.Sockets

Public Class Pop3Mail

Inherits System.Net.Sockets.TcpClient

Public Class Pop3Exception

Inherits System.ApplicationException
Public Sub New(ByVal str As String)

MyBase.New(str)
End Sub 'New

End Class 'Pop3Exception

Public Class Pop3Message

Public number As Long

Public bytes As Long

Public retrieved As Boolean

Public message As String

End Class 'Pop3Message

Public Overloads Sub Connect(ByVal server As String, ByVal username As
String, ByVal password As String)

Dim message As String

Dim strResponse As String

Connect(server, 110)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(Response)

End If

message = "USER " + username + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

message = "PASS " + password + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

End Sub 'Connect

Public Sub Disconnect()

Dim message As String

Dim strResponse As String

message = "QUIT" + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

End Sub 'Disconnect

Public Function List() As ArrayList

Dim message As String

Dim strResponse As String

Dim retval As New ArrayList

message = "LIST" + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

While True

strResponse = Response()

If strResponse = "." & vbCr & vbLf Then

Return retval

Else

Dim msg As New Pop3Message

Dim seps As Char() = " ".ToCharArray

Dim values As String() = strResponse.Split(seps)

msg.number = Int32.Parse(values(0))

msg.bytes = Int32.Parse(values(1))

msg.retrieved = False

retval.Add(msg)

End If

End While

End Function 'List

Public Function Retrieve(ByVal rhs As Pop3Message) As Pop3Message

Dim message As String

Dim strResponse As String

Dim msg As New Pop3Message

msg.bytes = rhs.bytes

msg.number = rhs.number

message = "RETR " & rhs.number & vbCr & vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

msg.retrieved = True

While True

strResponse = Response()

If strResponse = "." & vbCr & vbLf Then

Exit While

Else

msg.message += strResponse

End If

End While

Return msg

End Function 'Retrieve

Private Sub Write(ByVal message As String)

Dim en As New System.Text.ASCIIEncoding

Dim WriteBuffer(1023) As Byte

WriteBuffer = en.GetBytes(message)

Dim stream As NetworkStream = GetStream()

stream.Write(WriteBuffer, 0, WriteBuffer.Length)

Debug.WriteLine("WRITE:" + message)

End Sub 'Write

Public Sub Delete(ByVal rhs As Pop3Message)

Dim message As String

Dim strResponse As String

message = "DELE " & rhs.number & vbCr & vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

End Sub 'Delete

Private Function Response() As String

Dim enc As New System.Text.ASCIIEncoding

Dim serverbuff() As Byte = New [Byte](1023) {}

Dim stream As NetworkStream = GetStream()

Dim count As Integer = 0

While True

Dim buff() As Byte = New [Byte](1) {}

Dim bytes As Integer = stream.Read(buff, 0, 1)

If bytes = 1 Then

serverbuff(count) = buff(0)

count += 1

If buff(0) = Asc(vbLf) Then

Exit While

End If

Else

Exit While

End If

End While

Dim retval As String = enc.GetString(serverbuff, 0, count)

Debug.WriteLine("READ:" + retval)

Return retval

End Function 'Response

End Class

Ken

---------------------------------
"Krach" <kr***@nomail.com> wrote in message
news:%2****************@TK2MSFTNGP11.phx.gbl...
Hi everybody!

I'm decided to develop (at least try) a custom pop3 connector / mail
downloader for Exchange 2003. The question is simple: How do I start? I use MS Visual Studio 2003 (VB .Net). I want to build an app which first
retrieves all mail from our ISP and then delivers it to every Exchange inbox folder in the company. So I guess I need first to build a pop3 client and
then manage to reroute those messages to the Exchange inbox folder of every user. I need guidance on how to start searching for info and so on. I've
spent hours browsing the net with nearly no success. Is there a good book on this?

Well, in a word, ANY KIND OF HELP WILL BE WELCOME!!!!

Thanks in advance.

Nov 21 '05 #3
Hi,

http://www.codeproject.com/useritems/QMailClient.asp

Ken
------------------------
"Krach" <kr***@nomail.com> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
Hi again Ken,

I had a look to the sample code you sent me. Now a question: How do I
retrieve attachements? Apparently this is not included in the code... (at
first sight)

And supposing I get the attachements too, the issue is "trasforming" that
into a message I can deliver to our Exchange server thru SMTP with the
original date & time...

Any ideas about all this stuff?

Thanx!

"Ken Tucker [MVP]" <vb***@bellsouth.net> escribió en el mensaje
news:#L**************@TK2MSFTNGP14.phx.gbl...
Hi,

I converted this c# pop3 mail class to vb.net. Maybe this will help.

http://www.programmersheaven.com/2/Art_CSharp_3

How to use

Dim mail As New Pop3Mail

mail.Connect("mail.xxxx.net", "user", "password")

For Each msg As Pop3Mail.Pop3Message In mail.List

Trace.WriteLine(DirectCast(mail.Retrieve(msg),
Pop3Mail.Pop3Message).message)

Next

The class

Imports System.Net.Sockets

Public Class Pop3Mail

Inherits System.Net.Sockets.TcpClient

Public Class Pop3Exception

Inherits System.ApplicationException
Public Sub New(ByVal str As String)

MyBase.New(str)
End Sub 'New

End Class 'Pop3Exception

Public Class Pop3Message

Public number As Long

Public bytes As Long

Public retrieved As Boolean

Public message As String

End Class 'Pop3Message

Public Overloads Sub Connect(ByVal server As String, ByVal username As
String, ByVal password As String)

Dim message As String

Dim strResponse As String

Connect(server, 110)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(Response)

End If

message = "USER " + username + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

message = "PASS " + password + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

End Sub 'Connect

Public Sub Disconnect()

Dim message As String

Dim strResponse As String

message = "QUIT" + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

End Sub 'Disconnect

Public Function List() As ArrayList

Dim message As String

Dim strResponse As String

Dim retval As New ArrayList

message = "LIST" + vbCr + vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

While True

strResponse = Response()

If strResponse = "." & vbCr & vbLf Then

Return retval

Else

Dim msg As New Pop3Message

Dim seps As Char() = " ".ToCharArray

Dim values As String() = strResponse.Split(seps)

msg.number = Int32.Parse(values(0))

msg.bytes = Int32.Parse(values(1))

msg.retrieved = False

retval.Add(msg)

End If

End While

End Function 'List

Public Function Retrieve(ByVal rhs As Pop3Message) As Pop3Message

Dim message As String

Dim strResponse As String

Dim msg As New Pop3Message

msg.bytes = rhs.bytes

msg.number = rhs.number

message = "RETR " & rhs.number & vbCr & vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

msg.retrieved = True

While True

strResponse = Response()

If strResponse = "." & vbCr & vbLf Then

Exit While

Else

msg.message += strResponse

End If

End While

Return msg

End Function 'Retrieve

Private Sub Write(ByVal message As String)

Dim en As New System.Text.ASCIIEncoding

Dim WriteBuffer(1023) As Byte

WriteBuffer = en.GetBytes(message)

Dim stream As NetworkStream = GetStream()

stream.Write(WriteBuffer, 0, WriteBuffer.Length)

Debug.WriteLine("WRITE:" + message)

End Sub 'Write

Public Sub Delete(ByVal rhs As Pop3Message)

Dim message As String

Dim strResponse As String

message = "DELE " & rhs.number & vbCr & vbLf

Write(message)

strResponse = Response()

If strResponse.Substring(0, 3) <> "+OK" Then

Throw New Pop3Exception(strResponse)

End If

End Sub 'Delete

Private Function Response() As String

Dim enc As New System.Text.ASCIIEncoding

Dim serverbuff() As Byte = New [Byte](1023) {}

Dim stream As NetworkStream = GetStream()

Dim count As Integer = 0

While True

Dim buff() As Byte = New [Byte](1) {}

Dim bytes As Integer = stream.Read(buff, 0, 1)

If bytes = 1 Then

serverbuff(count) = buff(0)

count += 1

If buff(0) = Asc(vbLf) Then

Exit While

End If

Else

Exit While

End If

End While

Dim retval As String = enc.GetString(serverbuff, 0, count)

Debug.WriteLine("READ:" + retval)

Return retval

End Function 'Response

End Class

Ken

---------------------------------
"Krach" <kr***@nomail.com> wrote in message
news:%2****************@TK2MSFTNGP11.phx.gbl...
Hi everybody!

I'm decided to develop (at least try) a custom pop3 connector / mail
downloader for Exchange 2003. The question is simple: How do I start? I use MS Visual Studio 2003 (VB .Net). I want to build an app which first
retrieves all mail from our ISP and then delivers it to every Exchange inbox folder in the company. So I guess I need first to build a pop3 client and
then manage to reroute those messages to the Exchange inbox folder of every user. I need guidance on how to start searching for info and so on. I've
spent hours browsing the net with nearly no success. Is there a good book on this?

Well, in a word, ANY KIND OF HELP WILL BE WELCOME!!!!

Thanks in advance.


Nov 21 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Nitec Dev | last post by:
Our setup: server1 ASP database running on IIS5, Outlook 2000 and SQL 2000 on Windows 2000. Server2 runs Windows 2000 with Exchange 2000 using CDO 1.2 MAPI Sessions. Clients use IE5/6 and had...
3
by: Andyza | last post by:
My prod box consists of the following: - Windows 2003 Server - Exchange 2003 If I use cdoConfig to send emails from my .asp application do I need to include the following typelib on my .asp...
2
by: George Durzi | last post by:
We recently upgraded to Exchange2K3/W2K3 from Exchange2K/W2K, and some of my c# code that I used to access users' contacts using WebDAV has stopped working. I'm getting a 401 unauthorized error....
0
by: thewulf | last post by:
I'm currently building an application which will contain a link to MS Exchange 2003. We'd like the user to the able to click the link and automatically be logged in to MS Exchange 2003 using the...
0
by: fish | last post by:
Hi, I have a VB.net application that will save attachments to a directory on my local pc. I need to run this component on our exchange 2003 server and also save the attachments to a local DIR. ...
5
by: Philip Wagenaar | last post by:
What is the best approach to read emails from an Exchange 2003 useraccount. Pop3 and IMAP4 are unavilible
2
by: Andy | last post by:
Hi, I'm trying to get a users free/busy status from exchange from within a website and using the code below, but when I run this a login page from MS Outlook Web Access is retrieved from the...
6
Cyberdyne
by: Cyberdyne | last post by:
Hi guys, I have a windows 2003 sbs server running about 25 client licenses and here is my little problem my pop3 connector is throwing an error at me several times per day, although the system itself...
4
by: Tommy Holm Jakobsen | last post by:
Hi, I was wondering if it's possible to extract an users mailbox (Exchange 2003, PST file) from a webpage running ASP.NET? Either directly or by executing a Powershell script or something like...
0
by: lllomh | last post by:
Define the method first this.state = { buttonBackgroundColor: 'green', isBlinking: false, // A new status is added to identify whether the button is blinking or not } autoStart=()=>{
2
by: DJRhino | last post by:
Was curious if anyone else was having this same issue or not.... I was just Up/Down graded to windows 11 and now my access combo boxes are not acting right. With win 10 I could start typing...
2
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 4 Oct 2023 starting at 18:00 UK time (6PM UTC+1) and finishing at about 19:15 (7.15PM) The start time is equivalent to 19:00 (7PM) in Central...
0
by: Aliciasmith | last post by:
In an age dominated by smartphones, having a mobile app for your business is no longer an option; it's a necessity. Whether you're a startup or an established enterprise, finding the right mobile app...
0
tracyyun
by: tracyyun | last post by:
Hello everyone, I have a question and would like some advice on network connectivity. I have one computer connected to my router via WiFi, but I have two other computers that I want to be able to...
2
by: giovanniandrean | last post by:
The energy model is structured as follows and uses excel sheets to give input data: 1-Utility.py contains all the functions needed to calculate the variables and other minor things (mentions...
3
NeoPa
by: NeoPa | last post by:
Introduction For this article I'll be using a very simple database which has Form (clsForm) & Report (clsReport) classes that simply handle making the calling Form invisible until the Form, or all...
0
isladogs
by: isladogs | last post by:
The next online meeting of the Access Europe User Group will be on Wednesday 6 Dec 2023 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, Mike...
4
by: GKJR | last post by:
Does anyone have a recommendation to build a standalone application to replace an Access database? I have my bookkeeping software I developed in Access that I would like to make available to other...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.