The problem with your code is that you call "e.moveNext()" at the beginning of your loop. This means that it'll start off by index 1 in the Enumerator object and will go past the end. Thus, you're actually missing the first contact and then you go past the end of the enumeration, giving you that "empty object" error.
In fact, there's an even better way to do this. Instead of using your numeric "i" variable in your for-loop, you can do the checks with the Enumerator and let the "i" variable increase with it. You don't even need to put it at the end of the loop yourself, you can place in the incremental statement by separating it with a comma from the "e.moveNext()"! And you can also do the same to define both the "i" and "e" variables!
This can give you code as short as this:
code:
for(var e = new Enumerator(Messenger.MyContacts), i = 0; !e.atEnd(); e.moveNext(), i++) {
Contact = e.item();
EmailArray[i] = Contact.Email;
WndEmail.Combo_AddItem("Email",Contact.Email);
}
Red = initial statement
Green = conditional statement
Blue = incremental statement
Just to show you how much you can simplify a piece of JScript by pushing it to the limits...