Reviewing Mail Suite: Requests/Questions

I'm reviewing the latest version of the Network suite specifically for POP3, IMAP, SMTP (all with and without SSL) and eventually exchange support.

Here's a couple of things that I noticed that would be nice to have or I couldn't find:

  1. The messageID is not the unique id of the message from the pop3 server and it doesn't appear that it's possible to get at the actual UniqueID on the server from the Message class. There should be a UniqueID property of the Message that stores this. Right now I'm having to do a second call for it which is obviously non-optimal.
  2. There is a date property, but that's of limited use because it could be set to anything by spamers and stupid mail clients. There also needs to be a received date, which is the final mail server's date/time that it received the message. (I rolled my own from the Received Header, but I'm sure this isn't optimal.)
  3. I received (I'm testing 10s of thousands of messages right now to make sure your control can decode them correctly) a message from outlook that didn't have a From header but did have a vFrom header. The .From of the message was null which is obviously not a good thing.
  4. The documentation in the help file that comes with it is weak. Yes I'm aware of the online stuff, but I like to just go from examples in the CHM file....
  5. Headers.Contains needs to have an override on it to take the string name of the header and returns true or false.

Questions:

  1. I'm writting an IMAP part to this as well. To do so I have to be able to do sync. That means I need to be able to get all non-deleted messages from the last unique number i have on and I need to be able to get all deleted messages from the last unique number I have to 0 so that I can sync the inbox. Can I run these types of fetches and get a collection of unique numbers that I should fetch/get more information on?
  2. How would you suggest dealing with someone changing a message's folder on the client side and syncing that change? How about the other way on the server side? It should remove it, but I don't know how I can handle this. It's like the IMAP protocol just doesn't deal with this well....
  3. Do I understand the documentation correctly that this control can connect to an exchange server directly without having Outlook installed via webdev and get mail etc. like IMAP?

Thanks for the info! Any guidance on the IMAP sync part that you can provide would be great. I have yet to see an optimal one (i.e. apple's iphone implimentation sucks) so I'm trying to be highly bandwidth efficient and yet, still get all of the changes.

More...

  1. I'm routinely getting messages where the From section isn't filled in, and when looking at the Headers the from header will instead be "vFrom" or "///From" or something. Looks like a parser error...
  2. LinkedResources don't let you just go from a stream, and set the file name and contentID. This is a real pain. I have to load it from a file and then manually set the contentype and then set the contentID. I would rather do it all in a stream because it's coming from a database.
  3. Any chance of getting the calculation header stuff that Outlook does added so that messages sent have the same anti-spam thing that Outlook messages get to ensure delivery?

Also, how does one reply to a read request?

With the latest version and SSL I cannot get it to work at all.

I connect like so:

pop = new Pop3Client("Server", 9995, UserName, password);

pop.EnableSsl = true;

pop.SecurityMode = Implicit;

pop.Connect(true);

It times out. The same settings work perfectly in Outlook.

Please help!

Hi,

Thanks for considering Aspose.

Can you make sure about 2 things in the above code sample?

  1. SSL port: 995 is used commonly for SSL enabled POP3 servers.
  2. pop.SecurityMode = Aspose.Network.Pop3.Pop3SslSecurityMode.Implicit;
    The "Implicit" word belongs to the Pop3SslSecurityMode enumeration

Can you tell us more about your environment e.g.which POP3 mail server are you connecting to

I will discuss the remaining queries with our developers and get back to you soon.

Hi,

Attached are the samples for IMAP, POP3 and SMTP on SSL. All of them connect to Gmail servers. Try to change the server name, username and password in the pop3 sample and see if it connects to your server.

saqib.razzaq:

Hi,

Thanks for considering Aspose.

Can you make sure about 2 things in the above code sample?

  1. SSL port: 995 is used commonly for SSL enabled POP3 servers.
  2. pop.SecurityMode = Aspose.Network.Pop3.Pop3SslSecurityMode.Implicit;
    The "Implicit" word belongs to the Pop3SslSecurityMode enumeration

Can you tell us more about your environment e.g.which POP3 mail server are you connecting to

I will discuss the remaining queries with our developers and get back to you soon.

#1: Yes, I have control over the mail server and it's intentionally on a non-standard port of 9995.

#2: Yes, I was being lazy because I didn't want to just copy and paste our code and didn't feel like typing that all out.

I'm on Verizon DSL in the US and even the sample you kindly provided connecting to gmail comes back with a time out. Changing the info to ours, doesn't work either.

Works fine in Outlook 2007 though with SSL on....

I just again tested the pop3 SSL sample and only changed my valid gmail username and password. It worked and connects quickly. It hardly took 1 or 2 seconds. In case of invalid username/password, it throws authentication exception.

Can you please debug the sample and tell me on which function call you are getting timeout. If its on connect() method, then somehow aspose is unable to make connection to gmail server. May be its network/firewall issue.

It's on the connect.

It fails on 3 separate servers that work fine in Outlook on the same connection.

To verify that it wasn't the firewall in the way here I plugged direclty into the dsl modem with the same results.

I guess that Verizon might be blocking it, but then why would it work with Outlook?

If you'd like I'm willing to let you remote in and run debug code if you have it, or send me debug versions and then I can tell you were it fails etc. I really need this to work before I can go with you. (everything else other than the issues with the from parsing are candy... the IMAP stuff I will eventually need but it isn't impairitive for right now, and I can always roll my own by issuing direct commands)

Please debug the Pop3ConsoleDemo C# sample project that I attached in the above post. Monitor the following lines that are in Class1.cs file:

//connect and login to Pop3 server
try
{
client.Connect();
Console.WriteLine("==================");
Console.WriteLine("connected ");
Console.WriteLine("==================");
client.Login();
Console.WriteLine("==================");
Console.WriteLine("logged in ");
Console.WriteLine("==================");
}
catch(Exception ex)
{
Console.Write(ex.Message) ;
}

I just want to know whether the exception is thrown in Connect() method or login() method. Post the screenshot of the output console window too. This will give an idea upto which stage the program is executing successfully.

As I said, it's timing out on the .Connect() method, not the login method.

It just comes up and says "Timeout occured" and then tries to login but fails as there is no connection.

Here's a couple of things that I noticed that would be nice to have or I couldn't find:

  1. The messageID is not the unique id of the message from the pop3 server and it doesn't appear that it's possible to get at the actual UniqueID on the server from the Message class. There should be a UniqueID property of the Message that stores this. Right now I'm having to do a second call for it which is obviously non-optimal.
    [iret]: You can get Pop3MessageInfo from the server, which contains the unique id of the message.
  2. There is a date property, but that's of limited use because it could be set to anything by spamers and stupid mail clients. There also needs to be a received date, which is the final mail server's date/time that it received the message. (I rolled my own from the Received Header, but I'm sure this isn't optimal.)
    [iret]: It is not supported, we will be glad to add such feature.
  3. I received (I'm testing 10s of thousands of messages right now to make sure your control can decode them correctly) a message from outlook that didn't have a From header but did have a vFrom header. The .From of the message was null which is obviously not a good thing.
    [iret]: Could you give us some message samples? We will do some investigation.
  4. The documentation in the help file that comes with it is weak. Yes I'm aware of the online stuff, but I like to just go from examples in the CHM file....
    [iret]: Our support engineer is working hard to improve the document. You will see the updates.
  5. Headers.Contains needs to have an override on it to take the string name of the header and returns true or false.
    [iret]: We will support it.

Questions:

  1. I'm writting an IMAP part to this as well. To do so I have to be able to do sync. That means I need to be able to get all non-deleted messages from the last unique number i have on and I need to be able to get all deleted messages from the last unique number I have to 0 so that I can sync the inbox. Can I run these types of fetches and get a collection of unique numbers that I should fetch/get more information on?
  2. How would you suggest dealing with someone changing a message's folder on the client side and syncing that change? How about the other way on the server side? It should remove it, but I don't know how I can handle this. It's like the IMAP protocol just doesn't deal with this well....
    [iret]:We need you get us more details about the above 2 quetions.
  3. Do I understand the documentation correctly that this control can connect to an exchange server directly without having Outlook installed via webdev and get mail etc. like IMAP?
    [iret]:Yes, we support webdev to access exchange server.

For this timeout, could you provide account for our debugging?

If yes, please send me the info on email: guangzhou$aspose.com

Best regards

#1. the Pop3MessageInfo appears to be a separate request though. Because of the archetecture we have, I need to look it up on the message object itself, instead of pre-download (we do a compare of what's on the server, get the items in sequence we need, then in a separate processing unit, manage the save of the message to our database.)

#2 Excellent!

#3 See the email I sent you directly.

#4 Excellent!

#5 Excellent!

Questions

#1/2 Basically I'm trying to reproduce the same support that Microsoft Outlook's IMAP functionality has, while maintaining one inbox. The idea being is that most smart phones have IMAP support and thus we can support push email in our software and on their phones and have delete from one, delete from both. Thus I need a quick and non-data transfer-intensive way to sync the items that have been deleted or moved on both the client side and the server side. Client side is easy, server side is hard, because I need to be able to query for new messages that haven't been deleted (this is done with the Unique ID and a flag I believe), and also the ones that have been deleted from message 0 to the last one that we had with the Unique ID. Again this is just a query with the right flag set).

The problem comes when a message is moved. I don't believe it deletes the message and then puts a copy in another folder on the IMAP server and I'm at a loss as to how to detect that a message was moved to another folder other than the inbox on the server. Any ideas on how to do this would be very beneficial.

In short I need these IMAP commands returning a collection of messages in each case:

(pusedo code)

GET MESSAGE IDS = X + 1 to Newest where NOT Deleted

GET MESSAGE IDS = 0 TO X WHERE deleted (or moved)

#3 Excellent!

Any chance of getting an updated build when the ssl issue has been resolved and these other items are in (i.e. of key importance is the from decode properly and the recieve date)

Otherwise' we're sold at this point even though I really haven't gotten into the IMAP, and Exchange functionality (and the FTP which we will be using too)

Thanks!

oh... two other requests:

Please unseal:

the Message object and the MailAddress objects. I would like to inherit from them because of additional database related things that we do with our messages and it would make it much easier if I could.

Then there are these things that I mentioned too that I would love to see addressed:

  1. LinkedResources don't let you just go from a stream, and set the file name and contentID. This is a real pain. I have to load it from a file and then manually set the contentype and then set the contentID. I would rather do it all in a stream because it's coming from a database.
  2. Any chance of getting the calculation header stuff that Outlook does added so that messages sent have the same anti-spam thing that Outlook messages get to ensure delivery?

Thanks!

*bump*

Any luck with the SSL issues and the From parsing at least?

Also, I've noticed that there is no vcard functionality and the icalendar support is weak (only supports one event per file from what I can see). Any plans to do full ical and enable vcard?

Thanks!

Hello,

I have located the root for the problem. The hotfix will be available shortly.

For vCard, we will also release it in the coming release. Actually, we have finished its implementation already.

For iCal, we will consider your suggestion seriously and review existing implemenations. I will get back to you after our discussions. I think we will finally come out plans to make more features for iCal. Because we also got the feature requests from other users about iCal.

Thanks,

Excellent :)

Please let me know when I can grab the fix. I need it as soon as possible so that I can finalize testing.

Thanks!

Hello,

Please check the hotfix,

www.aspose.com/Aspose.Network/products/Releases/3.8.0/Aspose.Network.v3.8.0.4.zip

Thanks

Page not found error…