# Thunderbird >= 2.0.0.6
# Kmail >= 1.9.7 / Kaddressbook >= 3.5.7
# ** kmail bug: can export badly formatted csv **
+# Gmail
+# Fox Mail
#
# Becky: full export with titles
# thunderbird: export as 'comma separated'
# kmail/kaddressbook: Export CSV list
+# gmail: export Outlook format
+# foxmail: export with all possible headers
###
my $quote_char = '"';
my $bookname = '';
my $iNeedHelp = '';
-my $known_types = qr/^(?:becky|thunderbird|kmail)$/;
+my $known_types = qr/^(?:becky|thunderbird|kmail|gmail|foxmail)$/;
GetOptions("type=s" => \$type,
"csv=s" => \$csvfile,
'Work City','Work State','Work ZipCode','Work Country',
'Job Title','Department','Organization','Web Page 1',
'Web Page 2','Birth Year','Birth Month','Birth Day',
- 'Custom 1','Custom 2','Custom 3','Custom 4','Notes','junk');
+ 'Custom 1','Custom 2','Custom 3','Custom 4','Notes',
+ 'Anniversary Year','Anniversary Month','Anniversary Day',
+ 'Category','Spouse name');
my @kmail_fields = ('Formatted Name','Family Name','Given Name',
'Additional Names','Honorific Prefixes','Honorific Suffixes',
'Nick Name','Birthday','Home Address Street',
'Organisation','Department','Note','Homepage','Profession',
'Assistant\'s Name','Manager\'s Name','Partner\'s Name',
'Office','IM Address','Anniversary','Blog');
+my @gmail_fields = ('Name','E-mail Address','Notes','E-mail 2 Address',
+ 'E-mail 3 Address','Mobile Phone','Pager','Company',
+ 'Job Title','Home Phone','Home Phone 2','Home Fax',
+ 'Home Address','Business Phone','Business Phone 2',
+ 'Business Fax','Business Address','Other Phone','Other Fax',
+ 'Other Address','junk');
+my @foxmail_fields = ('First Name','Last Name','Name','Nickname','e-mail Address',
+ 'Mobile Phone','Pager Number','QQ','ICQ','Personal Home Page',
+ 'Sex','Birthday','Interest','Home Country','Home Province',
+ 'Home City','Home Postal Code','Home Street Address',
+ 'Home Telephone 1','Home Telephone 2','Home Fax','Office Company',
+ 'Office Country','Office Province','Office City',
+ 'Office Postal Code','Office Address','Office HomePage',
+ 'Office Position','Office Department','Office Telephone 1',
+ 'Office Telephone 2','Office Fax','Memo','foxaddrID');
if (grep m/claws-mail/ => `ps -U $ENV{USER}`) {
die("You must quit claws-mail before running this script\n");
Usage:
$script [OPTIONS]
Options:
- --help Show this screen
- --type=becky|thunderbird|kmail Type of exported address book
- --csv=FILENAME Full path to CSV file
- --name="My new address book" Name of new Claws address book (optional)
+ --help Show this screen
+ --type=becky|thunderbird|kmail|gmail|foxmail
+ Type of exported address book
+ --csv=FILENAME Full path to CSV file
+ --name="My new address book" Name of new Claws address book (optional)
~;
exit;
}
return("Thunderbird address book");
} elsif ($type eq "kmail") {
return("Kmail address book");
+ } elsif ($type eq "gmail") {
+ return("gmail address book");
+ } elsif ($type eq "foxmail") {
+ return("foxmail address book");
}
}
sub check_fields {
if ($type eq "becky") {
if ($#csvfields != $#becky_fields) {
- die("ERROR:\n\tNot enough fields!\n"
+ die("ERROR:\n\tInvalid field count!\n"
."\tYou need to do a Full Export With Titles\n");
}
} elsif ($type eq "thunderbird") {
if ($#csvfields != $#tbird_fields) {
- die("ERROR:\n\tNot enough fields!\n"
+ die("ERROR:\n\tInvalid field count!\n"
."\tProblem with your exported CSV file\n");
}
} elsif ($type eq "kmail") {
if ($#csvfields != $#kmail_fields) {
- die("ERROR:\n\tNot enough fields!\n"
+ die("ERROR:\n\tInvalid field count!\n"
+ ."\tProblem with your exported CSV file\n");
+ }
+ } elsif ($type eq "gmail") {
+ if ($#csvfields != $#gmail_fields) {
+ die("ERROR:\n\tInvalid field count!\n"
+ ."\tProblem with your exported CSV file\n");
+ }
+ } elsif ($type eq "foxmail") {
+ if ($#csvfields != $#foxmail_fields) {
+ die("ERROR:\n\tInvalid field count!\n"
."\tProblem with your exported CSV file\n");
}
}
."remarks=\"\" /> \n";
}
$xml .= " </address-list> \n";
+ } elsif ($type eq "foxmail") {
+ $xml .= "<address-list>\n ";
+ if ($fields[$std_items[4]] =~ m/,/) {
+ my @addrs = split(",", $fields[$std_items[4]]);
+ my $addr_one = pop(@addrs);
+ $xml .= "<address uid=\"$time\" alias=\"\" "
+ ."email=\"$addr_one\" "
+ ."remarks=\"$fields[$std_items[5]]\" /> \n";
+ foreach my $eaddr (@addrs) {
+ $time++;
+ $xml .= "<address uid=\"$time\" alias=\"\" "
+ ."email=\"$eaddr\" "
+ ."remarks=\"\" /> \n";
+ }
+ } else {
+ $xml .= "<address uid=\"$time\" alias=\"\" "
+ ."email=\"$fields[$std_items[4]]\" "
+ ."remarks=\"$fields[$std_items[5]]\" /> \n";
+ }
+ $xml .= "</address-list> \n";
} else {
$xml .= "<address-list>\n "
."<address uid=\"$time\" alias=\"\" "
return ('0','1','3','2','4','5','38');
} elsif ($type eq "kmail") {
return ('2','1','6','0','28','34');
+ } elsif ($type eq "gmail") {
+ return('0','0','0','0','1','2');
+ } elsif ($type eq "foxmail") {
+ return ('0','1','3','2','4','33');
}
}
return(@tbird_fields);
} elsif ($type eq "kmail") {
return(@kmail_fields);
+ } elsif ($type eq "gmail") {
+ return(@gmail_fields);
+ } elsif ($type eq "foxmail") {
+ return(@foxmail_fields);
}
}