PureBasic Forum https://www.purebasic.fr/english/ |
|
Atomic mailer help needed https://www.purebasic.fr/english/viewtopic.php?f=13&t=4795 |
Page 1 of 1 |
Author: | BackupUser [ Mon Jan 13, 2003 8:33 pm ] |
Post subject: | |
Restored from previous forum. Originally posted by PB. I need to retrieve the subject and date stamp ONLY of any mail on my POP3 server. The last version of the Atomic mailer I had is very old, and only lets you retrieve the entire mail, not just the subject/date. Here it is... does anyone know how to modify it to achieve my goal? It's probaby really simple, but I just can't work it out right now. Code: InitNetwork()
OpenConsole() #MODE_Authorization = 1 #MODE_Transaction = 2 Login$ = "login" Password$ = "password" POP_Provider$ = "pop.mailserver.com.au" EOL$ = Chr(13)+Chr(10) Pop3Mode = #MODE_AUTHORIZATION NetWorkID=OpenNetworkConnection(POP_Provider$, 110) If NetWorkID0 PrintN("Connected..") AllocateMemory(0, 2000, 0) Repeat NEvent = NetworkClientEvent(NetWorkID) If NEvent ReadLength = ReceiveNetworkData(NetWorkID, UseMemory(0), 2000) If (ReadLength) > 2 PokeB(UseMemory(0)+ReadLength-2, 0) ; Remove the CRLF directly Line$ = PeekS(UseMemory(0)) PrintN(Line$) Gosub ParseLine Else PrintN("Bad received packet") EndIf Else Delay(20) EndIf ForEver Else PrintN("Impossible to connect to the pop3 the server") EndIf MessageRequester("Info", "Program finished correctly.", 0) End ParseLine: If Len(Line$) >= 3 If Left(Line$, 3) = "+OK" Select Pop3Mode Case #MODE_Authorization Gosub Authorization Case #MODE_Transaction Gosub Transaction Default ; PrintN("Error: no such case 1") EndSelect Else ; PrintN("Error... Deconnect now ! (-ERR)"); EndIf Else ; PrintN("Error... Too short packet"); EndIf Return ; Authorization the init phase where the user must login.. ; ; Authorization: Select AuthStep Case 0 a$ = "USER "+Login$+EOL$ SendNetworkData(NetWorkID, a$, Len(a$)) Case 1 a$ = "PASS "+Password$+EOL$ SendNetworkData(NetWorkID, a$, Len(a$)) Pop3Mode = #MODE_Transaction ;Case 2 ; a$ = "QUIT"+EOL$ ; SendNetworkData(0, a$, Len(a$)) ; Pop3Mode = #MODE_Transaction EndSelect AuthStep+1 Return Transaction: Select TransStep Case 0 a$ = "STAT"+EOL$ SendNetworkData(NetWorkID, a$, Len(a$)) Case 1 a$ = "LIST "+EOL$ SendNetworkData(NetWorkID, a$, Len(a$)) Case 2 PrintN("Type msg# to retreive:") Nb$ = Input() PrintN(Str(1100)) PrintN("Retrieving...") ; Nb$ = "1" a$ = "RETR "+Nb$+EOL$ SendNetworkData(NetWorkID, a$, Len(a$)) TransStep-1 If CreateFile(0, "MAIL.txt") FirstTime = 1 Size = 1 Repeat NEvent = NetworkClientEvent(NetWorkID) If NEvent ReadLength = ReceiveNetworkData(NetWorkID, UseMemory(0), 1999) PokeB(UseMemory(0)+ReadLength, 0) a$ = PeekS(UseMemory(0)) PrintN(a$) If FirstTime Position = FindString(a$, " ", 5) Size$ = Mid(a$, 5, Position-5) PrintN(Size$) Size = Val(Size$) FirstTime = 0 WriteString(a$) Size-ReadLength Else WriteString(a$) Size-ReadLength EndIf Else Delay(20) EndIf Until Size <= 0 ; And FirstTime = 0 CloseFile(0) PrintN("Mail transfer finished") Else PrintN("Can't open the file...") EndIf EndSelect TransStep+1 Return |
Author: | BackupUser [ Mon Jan 13, 2003 11:18 pm ] |
Post subject: | |
Restored from previous forum. Originally posted by DemonHell. Quote: Originally posted by PB I need to retrieve the subject and date stamp ONLY of any mail on my POP3 server. The last version of the Atomic mailer I had is very old, and only lets you retrieve the entire mail, not just the subject/date. Check out RFC 1725 ( The POP3 specification) I was doing some similar stuff with POP3 and PB just last night..spooky huh? ( Not working on a spam filter by any chance? ) From looking briefly at the code, replace the a$ = "RETR "+Nb$+EOL$ with a$ = "TOP "+Nb$+" 0"+EOL$ This will download only the header of the message. From there, you`ll have to do a simple(ish) search on the lines. Something to be aware of.. headers are multi line, each line separated with the CR-LF pair, and sometimes split lines are indented with the Tab chr. Hope this helps. |
Author: | BackupUser [ Tue Jan 14, 2003 8:40 am ] |
Post subject: | |
Restored from previous forum. Originally posted by PB. > ( Not working on a spam filter by any chance? ) No -- just something else where I need to see subject/date. BTW, your tip didn't help (sorry). I'll have to read up on the POP specs more properly. |
Author: | BackupUser [ Sun Jan 19, 2003 7:39 pm ] |
Post subject: | |
Restored from previous forum. Originally posted by DemonHell. @PB Wierd, did you get an error message from the POP3 server?? The TOP command is optional in the POP3 spec..if that doesn`t work, you`re only choice is to download the entire mail and extract date and subject from that. |
Author: | BackupUser [ Mon Jan 20, 2003 12:04 am ] |
Post subject: | |
Restored from previous forum. Originally posted by PB. > Wierd, did you get an error message from the POP3 server?? Oops, my mistake (sorry!). Yes, it worked fine. Thanks! ![]() |
Page 1 of 1 | All times are UTC + 1 hour |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |