Search The ForumSearch   RegisterRegister  LoginLogin

MailBee Objects

 AfterLogic Forum : MailBee Objects
Subject Topic: Get Unique-ID? Post ReplyPost New Topic
Author
Message << Prev Topic | Next Topic >>
schase02
Newbie
Newbie
Avatar

Joined: 15 October 2004
Location: United States
Online Status: Offline
Posts: 18
Posted: 16 October 2007 at 1:47pm | IP Logged Quote schase02

Howdy,
picking up and resuming my project here. I've been trying to get the Unique-ID from an email message as I need to save each individual email into one folder. I may have hundreds or thousand+ emails in the folder, so a definitive unique name is a must.

Here is what I have using messageID - but I understand that is not as reliable as Unique-ID. Yet I cannot find anything in the docs that show it (I have found stuff that says this is where but that's all).

Here is what I have for code on message-ID If I try GetMessageUID - it throws an error on the GetMessageUID name. (invalid property assignment)

If objPOP3.MessageCount > 0 Then
      Set objMSG = objPOP3.RetrieveMessages
      If Not objMSG Is Nothing Then
      for each objMSG in objMSG
      mailcount=mailcount+1
      strMailItem=objMSG.MessageID
      strMailItem=replace(strMailItem,"<","")

      strMailItem=replace(lcase(strMailItem),"@ephweb.com>","")
      response.write objMSG.Subject & " - " & strMailItem & "!!<BR>"
      For Each objAttach In objMsg.Attachments
      response.write objAttach.Filename & "!!<BR>"
      If Not objAttach.SaveFile ("D:\path_to\leadmanager\htdocs\cust_email_attach\") Then Response.write "I/O Error"
' In ASP, use Response.Write instead of MsgBox
     Next
     objMSG.SaveMessage "D:\path_to\leadmanager\htdocs\cust_emails\" & strMailItem & ".eml"
      response.write "<BR><BR>"
      NEXT
      End If
   End If
Back to Top View schase02's Profile Search for other posts by schase02
 
Andrew
AfterLogic Support
AfterLogic Support


Joined: 28 April 2006
Location: United States
Online Status: Offline
Posts: 1189
Posted: 17 October 2007 at 4:01am | IP Logged Quote Andrew

Perhaps, you tried to call Message.GetMessageUID method, but Message object doesn't have such method. However, POP3 object does have GetMessageUID method.

There is no "Unique-ID" header in messages. UID is a POP3 server feature which assigns unique identifier to each message in the mailbox (and this ID is unique for that mailbox only).

Try to implement something like the following:

Code:
strMailItem=objPOP3.GetMessageUID(mailcount)


instead of:

Code:
strMailItem=objMSG.MessageID


Alternatively, you may implement unique names generator based on current date/time value plus a counter. Or use FileSystemObject.GetTempName method to get unique filenames.

Best regards,
Andrew
Back to Top View Andrew's Profile Search for other posts by Andrew
 
schase02
Newbie
Newbie
Avatar

Joined: 15 October 2004
Location: United States
Online Status: Offline
Posts: 18
Posted: 18 October 2007 at 10:20am | IP Logged Quote schase02

hmmm
okay, yeah looks like a Unix time stamp plus counter is best way to roll with it.

Thanks Andrew.
Back to Top View schase02's Profile Search for other posts by schase02
 
schase02
Newbie
Newbie
Avatar

Joined: 15 October 2004
Location: United States
Online Status: Offline
Posts: 18
Posted: 18 October 2007 at 1:34pm | IP Logged Quote schase02

Ok, I've run into another roadblock.

I have successfully - checked the proper email account, saved the entire email to a folder on my server with the .eml extension. It also saves the attachments just fine.

Now I need to view the saved email. I looked at the view HTML email tutorial but that seems to only work if your connecting to the mail server again. How do you load a saved to disk email into the mailbee objects?

I'll then need to be able to either reply or forward it. Anything special there too?

Thank you.
Back to Top View schase02's Profile Search for other posts by schase02
 
Andrew
AfterLogic Support
AfterLogic Support


Joined: 28 April 2006
Location: United States
Online Status: Offline
Posts: 1189
Posted: 19 October 2007 at 12:38am | IP Logged Quote Andrew

Message.ImportFromFile method allows loading message from a file.

"Forwarding message" and "Redirecting message" samples show how to forward or redirect messages. Replying is similar. You may also download and examine MailBee WebMail Lite ASP powered by MailBee Objects.


Best regards,
Andrew
Back to Top View Andrew's Profile Search for other posts by Andrew
 
schase02
Newbie
Newbie
Avatar

Joined: 15 October 2004
Location: United States
Online Status: Offline
Posts: 18
Posted: 07 November 2007 at 11:52am | IP Logged Quote schase02

okay,

I still do not see how to put the pieces together. the webmail lite appears to prefer to use online storage through pop3 vs local storage on the server on the harddrive.

it appears that the message.importfromfile works - at least no error message.

But how do you then use that importfromfile and turn around and show it, and then subsequently use it to reply and / or forward with?
Back to Top View schase02's Profile Search for other posts by schase02
 
Alex
AfterLogic Support
AfterLogic Support
Avatar

Joined: 19 November 2003
Online Status: Offline
Posts: 2206
Posted: 07 November 2007 at 12:01pm | IP Logged Quote Alex

The message received from POP3 server and the same message loaded using ImportFromFile as the same. So, you should find the place in the code where the message is being received from the server, insert your code there and use the subsequent code as is. For that code, it's not important how the message object was created. It will reply/forward/whatever the same message object and it's not important you received this object by other means.

Regards,
Alex
Back to Top View Alex's Profile Search for other posts by Alex
 
schase02
Newbie
Newbie
Avatar

Joined: 15 October 2004
Location: United States
Online Status: Offline
Posts: 18
Posted: 07 November 2007 at 1:23pm | IP Logged Quote schase02

Hi Alex,

The code samples & documentations show it is different.

If objPOP3.Connect Then

' Download first message completely
Set objMsg = objPOP3.RetrieveSingleMessage(1)


vs


If Mailer.Connect Then
Mailer.Message.ImportFromFile "C:\docs\letter.eml"

Back to Top View schase02's Profile Search for other posts by schase02
 
Alex
AfterLogic Support
AfterLogic Support
Avatar

Joined: 19 November 2003
Online Status: Offline
Posts: 2206
Posted: 07 November 2007 at 2:59pm | IP Logged Quote Alex

Sorry, I didn't understand. What's different?

I mean if you load something into Message from mail server or from file, the contents will be the same (if it's the same message).

And you can then process this message regardless of from which source it was taken.

Regards,
Alex
Back to Top View Alex's Profile Search for other posts by Alex
 
schase02
Newbie
Newbie
Avatar

Joined: 15 October 2004
Location: United States
Online Status: Offline
Posts: 18
Posted: 08 November 2007 at 3:29pm | IP Logged Quote schase02

Alex

How is it not different? the code is different. How can you call the same if it does not load with the same parameters.

If objPOP3.Connect Then

' Download first message completely
Set objMsg = objPOP3.RetrieveSingleMessage(1)


vs


If Mailer.Connect Then
Mailer.Message.ImportFromFile "C:\docs\letter.eml"

Back to Top View schase02's Profile Search for other posts by schase02
 
schase02
Newbie
Newbie
Avatar

Joined: 15 October 2004
Location: United States
Online Status: Offline
Posts: 18
Posted: 08 November 2007 at 3:40pm | IP Logged Quote schase02

I can take and write out objMSG if I retrieved it like that right?

but if i were to response.write mailer.message.BodyText - I would get nothing.
Back to Top View schase02's Profile Search for other posts by schase02
 
schase02
Newbie
Newbie
Avatar

Joined: 15 October 2004
Location: United States
Online Status: Offline
Posts: 18
Posted: 08 November 2007 at 3:58pm | IP Logged Quote schase02

AHHHA

I see it - I was calling for Server.CreateObject("MailBee.POP3")not SMTP
Back to Top View schase02's Profile Search for other posts by schase02
 
juris
Groupie
Groupie


Joined: 27 June 2011
Location: Italy
Online Status: Offline
Posts: 67
Posted: 27 June 2011 at 10:25am | IP Logged Quote juris

Andrew wrote:
...
There is no "Unique-ID" header in messages. UID is a POP3 server feature which assigns unique identifier to each message in the mailbox (and this ID is unique for that mailbox only).

Try to implement something like the following:

Code:
strMailItem=objPOP3.GetMessageUID(mailcount)


Alternatively, you may implement unique names generator based on current date/time value plus a counter. Or use FileSystemObject.GetTempName method to get unique filenames.

Best regards,
Andrew


Hi Andrew,

Back to Top View juris's Profile Search for other posts by juris
 
juris
Groupie
Groupie


Joined: 27 June 2011
Location: Italy
Online Status: Offline
Posts: 67
Posted: 27 June 2011 at 10:31am | IP Logged Quote juris

Andrew wrote:
Alternatively, you may implement unique names generator based on current date/time value plus a counter. Or use FileSystemObject.GetTempName method to get unique filenames.


Hi Andrew,

I use this code:

Code:

string uniqueFileName = msg.MessageID.ToString();
string regexSearch = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
Regex r = new Regex(string.Format("[{0}]", Regex.Escape(regexSearch)));
uniqueFileName = r.Replace(uniqueFileName, "");
uniqueFileName += ".eml";

What do you think?

Regards, Lello
Back to Top View juris's Profile Search for other posts by juris
 
juris
Groupie
Groupie


Joined: 27 June 2011
Location: Italy
Online Status: Offline
Posts: 67
Posted: 06 February 2017 at 2:05pm | IP Logged Quote juris

To create a unique filename now I use this code

Code:

private Regex RegularFileNameExpression = new Regex(string.Format("[{0}]", Regex.Escape(new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars()))));

string MyFilename = RegularFileNameExpression.Replace(msg.Date.ToString("yyyyMMddHHmmssfff") + "_" + msg.MessageID + ".eml", "");



Can anyone tell me if it's okay?
Back to Top View juris's Profile Search for other posts by juris
 
Alex
AfterLogic Support
AfterLogic Support
Avatar

Joined: 19 November 2003
Online Status: Offline
Posts: 2206
Posted: 07 February 2017 at 12:20am | IP Logged Quote Alex

Maybe it's ok but it's quite complicated. Back in 2000s, we used GetTempName when we needed a unique filename in VBS.

https://msdn.microsoft.com/en-us/library/w0azsy9b(v=vs.84).aspx

Regards,
Alex
Back to Top View Alex's Profile Search for other posts by Alex
 

If you wish to post a reply to this topic you must first login
If you are not already registered you must first register

  Post ReplyPost New Topic
Printable version Printable version

Forum Jump

Powered by Web Wiz Forums version 7.9
Copyright ©2001-2004 Web Wiz Guide