Solved

can't delete mails using Winsock.SendData "DELE x"

Posted on 2004-04-01
8
747 Views
Last Modified: 2013-12-25
hi experts,

i am using the Winsock control to grab mails from a mailbox.
i do the usual checking of the DataArrival event of the control, call the GetData method to retrieve messages from the mail server and i always get my email as a stream of encoded asciis, no problem.

so i get my emails, store them for future processing, and delete them from mailbox, repeat the procedure, and it works perfect. of course, i use the SendData method to do the deletion [Winsock.SendData "DELE x"].

everything's been fine until recently.

i had a scenario where for some reason i got a number "blank" mails on my mail server. by blank i mean, there was no sender, subject, body, etc indicated on the emails. i don't know how those "blank" mails got to the server in the first place. this might have been caused by the virus scanner but i am not too sure.

anyway, my program read the other legitimate mails from the server together with those blank ones and processed them, but was not able to delete any email successfully. it ended up reading the same set emails over and over again and needless to say, i had disastrous results.

questions: when using the winsock control, is there any email ID that i can use to tell that a particular email has already been looked at [and was just retrieved again because it was not deleted]. also, does Winsock.SendData "DELE x" return any error when it is not able to delete mails? i am using VB and i have an "On Error GoTo Label" statement on my code. it was not able to do the deletion but it just kept on going and retrieving the same set of emails and didn't return an error for 12 hours until i stopped it.

thanks in advance,

flor
0
Comment
Question by:papaflo
  • 3
  • 2
  • 2
  • +1
8 Comments
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 10735684
The Winsock control is a generic control for sending and receiving data, and as such, it has no knowledge of what you are doing with it (sending files, getting mail, playing a game, etc.).  Any error codes would have to be sent to you via the DataArrival event and this would be a function of your mail server.

For someone to help you with this problem they would need to know what kind of mail server you are accessing.

Idle_Mind
0
 

Author Comment

by:papaflo
ID: 10735777
thanks for the input, Idle_Mind
would you be one of those someone who, if they know what kind of mail server i am accessing, they would be able to help me out?
i am using IMail by the way
0
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 10735833
I have lots of experience with the Winsock control through various FTP, File Transfer, and Chat applications but unfortunately have never used it to get mail from a server.

Sorry.

Idle_Mind
0
Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

 

Author Comment

by:papaflo
ID: 10736829
that allright, Idle_Mind
if you know of anybody who's got answers, please ask them to help out
thanks anyhow
0
 
LVL 5

Expert Comment

by:crazycomputers
ID: 10737424
How are you logging out?  Using WinSock.Close will not work.  According to the SMTP protocol RFC, terminating the connection does not purge any messages marked deleted.  You need to do

WinSock.SendData "QUIT" & vbCrLf

to delete the messages.

(I'm not sure which method you're using, but I've had this problem too, and this is how I fixed it.)
0
 
LVL 2

Assisted Solution

by:jasonholland
jasonholland earned 60 total points
ID: 10737430
Well, you said you are using Imail so I went to IPSwitch's website and looked up IMail server error codes

http://support.ipswitch.com/kb/IM-20000419-DM01.htm

Take a look at the error codes, and put some traps in your DataArrival event for these error codes being returned as data.

Jason Holland
0
 

Author Comment

by:papaflo
ID: 10742454
thanks for the input, guys

crazycomputers:
i do use
WinSock.SendData "QUIT" & vbCrLf
and i am able to delete messages in the normal case as i've mentioned above
i only run into problems when i had those "blank" messages [please see my initial post above]

jasonholland:
i do have error handlers on my code, but as mentioned, when the "blank"messages occurred, my program did not delete messages but NO ERROR WAS RAISED [please see my initial post above]
i also have code on the  Winsock_Error event by the way, and that portion of the program was not reach as well

any of you guys know anything about a unique email ID? [please see my initial post above]
0
 
LVL 5

Accepted Solution

by:
crazycomputers earned 65 total points
ID: 10743451
I do not believe that SMTP provides a unique mail ID beyond the message numbers.  It looks like this is a server problem.  Try contacting the server administrator and see if he can't explain what's going on.
0

Featured Post

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

There are many ways to remove duplicate entries in an SQL or Access database. Most make you temporarily insert an ID field, make a temp table and copy data back and forth, and/or are slow. Here is an easy way in VB6 using ADO to remove duplicate row…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

832 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question