Closed Bug 91295 Opened 24 years ago Closed 23 years ago

Fails to import address lists from Eudora address book

Categories

(SeaMonkey :: MailNews: Address Book & Contacts, defect, P2)

x86
Windows 2000
defect

Tracking

(Not tracked)

VERIFIED FIXED
mozilla1.2alpha

People

(Reporter: cmessenger, Assigned: cavin)

References

Details

(Whiteboard: nab-imp, imp-failure)

Attachments

(1 file, 2 obsolete files)

I imported my Eudora address book into Mozilla mail. It mostly worked, but it didn't import any of my mail lists. In Eudora, each address book entry consists of one or more addresses and/or other address book entries. Mozilla failed to import any of the address book entries which contained one or more other address book entries.
actually, an address book problem, not a mail database problem.
Assignee: bienvenu → chuang
Component: Mail Database → Address Book
QA Contact: esther → nbaca
setting bug status to New
Status: UNCONFIRMED → NEW
Ever confirmed: true
reassigning to cavin
Assignee: chuang → cavin
Keywords: nsbeta1
Whiteboard: nab-imp, imp-failure
Bug 82276 was just fixed and it was caused by entries not having any email address(es) (ie, entries without email address(es) were not imported). The way it works now is that if you have the following addrbook entries efined in Eudora: Nickname First Last Email 1. Test1 Foo1 Bar test1@foobar.com 2. test2 Foo2 Bar test2@foobar.com, test1 3. test3 Foo3 Bar test3@foobar.com, foo@bar.com Then after import finishes you'll have the following cards in NS6 addrbook: Nickname First Last Email 2nd Email 1. Test1 Foo1 Bar test1@foobar.com 2. Test2 Foo2 Bar test2@foobar.com test1@foobar.com 3. Test3 Foo3 Bar test3@foobar.com foo@bar.com I'm not 100% sure if this bug may have been fixed by 82276, so, reporter, can you try it again with the latest build? If it still does not work for you can you show us some sample entries which fail to be imported? This will help us resolve the problem quickly.
I tried again with 0.9.8, and it still fails in the same way.
Chuck, I should have said that the fix for bug 82276 was just checked in yesterday so you'll need to run today's commercial build to verify it. When you report errors or not working stuff next time, it would be great if you can also include the build id of the mailnews program you run in the comment. Thanks for the help.
Severity: enhancement → normal
Status: NEW → ASSIGNED
Keywords: nsbeta1nsbeta1+
Priority: -- → P2
Target Milestone: --- → mozilla1.0
Blocks: 126318
Blocks: 122274
Keywords: nsbeta1+nsbeta1-
Target Milestone: mozilla1.0 → mozilla1.2
*** Bug 139511 has been marked as a duplicate of this bug. ***
Attached patch Proposed patch, v1 (obsolete) — Splinter Review
If an Eudora contact contains two or more email addresses then it's mapped to a list (or group).
Attached patch Proposed patch, v2 (obsolete) — Splinter Review
Made some minor changes to v1 patch.
Attachment #81811 - Attachment is obsolete: true
Cavin, thanks for fixing all these bugs in our import code. Some minor comments and suggestions: 1) - // Set 2nd email. If we have two/more email addresses then use the 2nd one on the list. - if (emailList.Count() > 1) - { - pData = (CAliasData *)emailList.ElementAt(1); - ADD_FIELD_TO_DB_ROW(pDb, Add2ndEmail, newRow, pData->m_email, uniStr); - } forgive me for not understanding the import code. do we loose any functionality by removing this code? can you explain why it's safe to remove it? 2) + // Make sure group members exists before adding groups. + AddGroupMembersAsCards(membersArray, pDb); you aren't checking rv, yet AddGroupMembersAsCards() can return failure. 3) +void nsEudoraAddress::RememberGroupMembers(nsVoidArray &membersArray, nsVoidArray &emailList) +{ + PRInt32 i, j, memberCnt, cnt = emailList.Count(); + CAliasData *pData; As a style nit, I'd declare j, memberCnt and pData in the inner most proper scope. You've declared them in an outer scope, where they are not needed. 4) + nsresult rv = NS_OK; + nsCOMPtr <nsIMdbRow> newRow; + nsAutoString uniStr; + nsCAutoString displayName; These four are unused. 5) +nsresult nsEudoraAddress::AddGroupMembersAsCards(nsVoidArray &membersArray, nsIAddrDatabase *pDb) +{ + PRInt32 i, max = membersArray.Count(); + CAliasData *pData; + nsresult rv = NS_OK; + nsCOMPtr <nsIMdbRow> newRow; + nsAutoString uniStr; + nsCAutoString displayName; again, style nit on where these are declared. 6) + displayName.Truncate(); + if (!pData->m_realName.IsEmpty()) + displayName = pData->m_realName; + else if (!pData->m_nickName.IsEmpty()) + displayName = pData->m_nickName; why not: + if (!pData->m_realName.IsEmpty()) + displayName = pData->m_realName; + else if (!pData->m_nickName.IsEmpty()) + displayName = pData->m_nickName; + else + displayName.Truncate(); 7) + // Create a list. + nsresult rv; + nsCOMPtr <nsIMdbRow> newRow; + rv = pDb->GetNewListRow(getter_AddRefs(newRow)); just a minor style nit, consider: + nsCOMPtr <nsIMdbRow> newRow; + nsresult rv = pDb->GetNewListRow(getter_AddRefs(newRow)); 8) + nsCAutoString value; again, declared in a wider scope than necessary. 9) + value.Assign("mail="); + value.Append(pData->m_email); + rv = pDb->AddLdifListMember(newRow, value.get()); consider: nsCAutoString ldifValue = NS_LITERAL_CSTRING("mail=") + nsDependentCString (pData->m_email); (or something similar). 10) some other things to test or consider (these might become spin off bugs) a) how does your code handle non-ASCII display names? b) will this code work with IDNs in email addresses? (does eudora support that?) see http://bugzilla.mozilla.org/show_bug.cgi?id=127399 c) when you import on a debug build, do you assert? for a related asserting when importing, see http://bugzilla.mozilla.org/show_bug.cgi?id=142123 11) please include some notes on what scenarios you tested (lists with 1 email, lists with multiple emails, lists with 0 emails, etc.) for QAs consideration.
(1) It's safe to remove the setting of 2nd email address code because before the fix we always mapped Eudora address entries to NS cards so we would set the 2nd email address for a card if an Eudora address entry contains two or more email addresses. But now we map those Eudora entries to lists/groups, so the code to set 2nd email address is no longer needed. (2) - (9) Will make the changes. (10) a) - The code currently only works for ascii display names and email addresses. b) - It won't work with IDNs in email addresses. Not sure if Eudora currently supports IDNs in email addresses, but my guess is not. c) - Yes, I did see the same thread safety assertions as recorded in http://bugzilla.mozilla.org/show_bug.cgi?id=142123. (11) To test the fix, create a new Eudora address entry with two or more email addresses (ie, in the space where it says "This nickname will expand to the following addresses:" enter two or more addresses). Then import this Eudora addressbook and you should see the Eudora address entry is turned into an NS list, not card, with the right number of member addresses. In addition, create some more new Eudora address entries with 0 or 1 email address and import the addressbook again. These Eudora entries should be turned into NS cards. A new patch is coming.
Attachment #82788 - Attachment is obsolete: true
Comment on attachment 83611 [details] [diff] [review] Incorporated review comments. r=sspitzer
Attachment #83611 - Flags: review+
> The code currently only works for ascii display names and email addresses. Assuming you can have non ascii display names in Eudora, we should log a bug on this, since we know a problem exists. when you do, please cc ji@netscape.com
+ rv = pDb->GetNewRow(getter_AddRefs(newRow)); + if (!newRow) + return NS_ERROR_FAILURE; you're not checking rv, and you're not returning rv either...if you fix that, sr=bienvenu
OK, I'll fix it before checking in the code.
The issue of supporting non-ascii display names and email addresses is logged in bug 145293.
Fix landed on trunk.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Nominating for rtm.
Keywords: nsbeta1-nsbeta1+
Wrong keyword. Doing it again.
Keywords: nsbeta1+nsbeta1
Trunk build 2002-05-28: WinMe, Mac 9.1 Verified Fixed. - Individual entries are imported with all the data. - Entries with more than 1 email address become a list after importing.
Status: RESOLVED → VERIFIED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: