Schrift
[thread]6602[/thread]

thunderbird - adressbuch schreiben und lesen

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
mättu
 2004-12-29 22:27
#50442 #50442
User since
2004-12-12
30 Artikel
BenutzerIn
[default_avatar]
Hallo Experten

Ich suche einen Weg, mit Perl zwischen einer mysql-Datenbank und einem thunderbird-Adressbuch zu vermitteln.
Ich filtere also etwa 200 Mailadressen aus der Datenbank und möchte sie automatisch in das TB-Adressbuch eintragen. Leider sieht das Teil recht kryptisch aus.
Meine Suche im Mozilla-Forum hat nur ergeben, dass viele die jetzige Lösung unglücklich finden..

Grüsse
M.\n\n

<!--EDIT|mättu|1104352106-->
Strat
 2004-12-29 23:25
#50443 #50443
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
zum ersten Teil kann ich dir helfen: lies dir mal durch, was ich auf meiner HP unter Perl -> Tips&Tricks -> Perl-Enhanced -> MySql mit DBI geschrieben habe.

Vom Adressbuch habe ich keine Ahnung, aber wenn du sagst, wie man darauf zugreifen kann bzw. um was fuer ein Format es sich handelt (wenn datei), dann kann dir vielleicht geholfen werden.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
esskar
 2004-12-30 00:04
#50444 #50444
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
CPAN:Mail::Addressbook::Convert::Ldif ist wohl dein bester Freund bei dieser Sache.
Ronnie
 2004-12-30 13:15
#50445 #50445
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Das native Adressbuch-Format scheint etwas aufwendiger zu sein. Am besten ist wohl der Import über CSV-Dateien. Das vorgeschlagene LDIF-Format bietet sich auch an, ist nur aufwendiger beim Export aus der Datenbank zu erstellen. Probier einfach mal aus, wie die aus dem Thunderbird-Adressbuch exportierten .CSV-Dateien aussehen, dann exportiere deine Datenbank in eine äquivalente .CSV-Datei. Im einfachsten Fall reicht dir ein Dump der Datenbank, im schwierigeren Fall musst du die Datenbank mit DBI abfragen und die einzelnen Zeilen passend in eine .CSV-Datei schreiben. Um das händige Importieren in den Thunderbird wirst du wohl nicht rumkommen.
format_c
 2004-12-30 23:07
#50446 #50446
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Oder du schreibst deine Ergebnisse aus der Datenbank in ein LDAP Directory. Laut mozilla.org unterstützt Thunderbird LDAP Addressbooks http://www.mozilla.org/projects/thunderbird/specs/ldap.html

Hab ich allerdings noch nicht gemacht. Wobei das das feature ist worauf ich schon länger warte.

Gruß Alex
mättu
 2004-01-01 17:36
#50447 #50447
User since
2004-12-12
30 Artikel
BenutzerIn
[default_avatar]
Hallo Experten!

Hab eure Ratschläge verfolgt. Sie sind sehr hilfreich und gut.
Mein Problem bleibt: ohne "Handarbeit" Adressen in TB-Adressbuch schreiben.
Ein Ldif-File nützt mir ja nicht wirklich, weil ich es auch manuell jedes Mal in TB importieren muss, oder?

LDAP ist vielleicht wirklich der Weg. Kennt sich da jemand aus? Bin am Herausfinden..
mättu
 2004-01-02 02:20
#50448 #50448
User since
2004-12-12
30 Artikel
BenutzerIn
[default_avatar]
Hallo Experten!

Habe mozilla befragt und jemand hat mir geholfen. Das Resultat will ich euch gerne zukommen lassen.

Also: TB-Adressbücher sind in Mork geschrieben. Ja, richtig!
Alles was man darüber im Internet findet, ist voller Hass auf den Erfinder. Oder es ist eine unverständliche Erklärung des Erfinders, der laut seiner Homepage eine multiple Persönlichkeit mit verschiedenartig bösartigen Charakteren ist.

In Mork ist echt die Kacke am Dampfen, könnte glatt von mir sein. Es besteht aus verschiedenen Teilen, die in unterschiedlicher Weise gemorkt und verwurstelt sind. Ich erspar euch die Details, wir können gerne ein Mork-Thema öffnen, wenn jemand interessiert ist, just let me know.
Auf jeden Fall hab ichs geschafft, ein script zu schreiben, welches meine datenbanken einwandfrei in mork übersetzt.
Wahrscheinlich nicht in wirkliches Mork, aber doch immerhin so, dass es TB lesen kann.

Hier eine kleine Anlaitung, damit nichts schief geht, es nähme mich nämlich teuflisch wunder, obs bei euch auch geht!

- Gründe zuerst ein neues Adressbuch, damit kein bestehendes kaputt geht.
- Schau nach, wie dieses neue Adressbook heisst (abook-(nummer).mab bei mir)
- kopiere das script in den selben Ordner wie das Adressbuch
- füll die Variablen oben im Script ein

-perl laufen lassen, TB starten, Adressbuch ansehn.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/perl
use DBI;
#----------------------------------- DBI
#Bitte hier ausfüllen:

$database = (deine database);
$tabelle = (deine tabelle);
$hostname = "localhost";
$user = (dein mysql username);
$pass = (..und das Passwort);
$address_book = (hier der name des Adressbuchs bitte!) #in meinem Fall: abook-5.mab

$dsn = "DBI:mysql:database=$database;host=$hostname";


$dbh = DBI::->connect( $dsn, $user, $pass, { 'RaiseError' => 1, 'AutoCommit' => 1 } ) or die DBI::errstr;
$sql = "SELECT * FROM $tabelle";
my $sth = $dbh->prepare($sql) or die $dbh->errstr;
$sth->execute or die $sth->errstr;

while ($reihenref = $sth->fetchrow_hashref)
{
%reihe = %{$reihenref};
if ($reihe{'email'})
{
push @email, $reihe{'email'}; #alle adressen gehen in @email
}
}
#----------------------------------- Mork - header

open (textfile, ">$address_book");
print textfile '// <!-- <mdb:mork:z v="1.4"/> -->
< <(a=c)> // (f=iso-8859-1)
(B8=Custom4)(B9=Notes)(BA=LastModifiedDate)(BB=RecordKey)
(BC=AddrCharSet)(BD=LastRecordKey)(BE=ns:addrbk:db:table:kind:pab)
(BF=ListName)(C0=ListNickName)(C1=ListDescription)
(C2=ListTotalAddresses)(C3=LowercaseListName)
(C4=ns:addrbk:db:table:kind:deleted)
(80=ns:addrbk:db:row:scope:card:all)
(81=ns:addrbk:db:row:scope:list:all)
(82=ns:addrbk:db:row:scope:data:all)(83=FirstName)(84=LastName)
(85=PhoneticFirstName)(86=PhoneticLastName)(87=DisplayName)
(88=NickName)(89=PrimaryEmail)(8A=LowercasePrimaryEmail)
(8B=SecondEmail)(8C=DefaultEmail)(8D=CardType)(8E=PreferMailFormat)
(8F=WorkPhone)(90=HomePhone)(91=FaxNumber)(92=PagerNumber)
(93=CellularNumber)(94=WorkPhoneType)(95=HomePhoneType)
(96=FaxNumberType)(97=PagerNumberType)(98=CellularNumberType)
(99=HomeAddress)(9A=HomeAddress2)(9B=HomeCity)(9C=HomeState)
(9D=HomeZipCode)(9E=HomeCountry)(9F=WorkAddress)(A0=WorkAddress2)
(A1=WorkCity)(A2=WorkState)(A3=WorkZipCode)(A4=WorkCountry)
(A5=JobTitle)(A6=Department)(A7=Company)(A8=_AimScreenName)
(A9=AnniversaryYear)(AA=AnniversaryMonth)(AB=AnniversaryDay)
(AC=SpouseName)(AD=FamilyName)(AE=DefaultAddress)(AF=Category)
(B0=WebPage1)(B1=WebPage2)(B2=BirthYear)(B3=BirthMonth)(B4=BirthDay)
(B5=Custom1)(B6=Custom2)(B7=Custom3)>';
print textfile "\n\n<(80=0)(81=)";
$e =0;
$i =1;

#------------------------------------- mork Mittelteil
foreach $mail (@email)
{
$mail_nummer = $e + 82;
$id_nummer = $e + 83;
print textfile "\n($mail_nummer=$mail)($id_nummer=$i)";
$e=$e+2;
$i++;
}
print textfile '>';
print textfile "\n\n{\n1:^80\n{\n(k^BE:c)(s=9)\n}\n[1:^82(^BD=3)] ";
$e=0;
$i =1;

#----------------------------------------- mork - Bauch
foreach $mail(@email)
{
$mail_nummer = $e + 82;
print textfile "
[$i(^83=)(^84=)(^85=)(^86=)(^87=)(^88=)(^89^$mail_nummer)(^8A^$mail_nummer)(^8B=)(^8C=)
(^8D=)(^8E=0)(^8F=)(^90=)(^91=)(^92=)(^93=)(^94=)(^95=)(^96=)(^97=)
(^98=)(^99=)(^9A=)(^9B=)(^9C=)(^9D=)(^9E=)(^9F=)(^A0=)(^A1=)(^A2=)
(^A3=)(^A4=)(^A5=)(^A6=)(^A7=)(^A8=)(^A9=)(^AA=)(^AB=)(^AC=)(^AD=)
(^AE=)(^AF=)(^B0=)(^B1=)(^B2=)(^B3=)(^B4=)(^B5=)(^B6=)(^B7=)(^B8=)
(^B9=)(^BA=0)(^BB=$i)]";
$e =$e+2;
$i++;
}
print textfile "\n}";
close textfile;


Wie gesagt: Mork ist spannend, wenn man ein wenig einen seltsamen Humor hat. Sicherlich könnte man sich auch noch darum kümmern, dass nicht nur mail-adressen geschrieben werden usw.\n\n

<!--EDIT|esskar|1104626249-->
mättu
 2004-01-02 02:21
#50449 #50449
User since
2004-12-12
30 Artikel
BenutzerIn
[default_avatar]
oh, was ich vergessen habe, die Kolonne in der Datenbank mit den Mailadressen muss 'email' heissen..
(Oder man schreibt halt schnell das script bisserl um)
esskar
 2004-01-02 02:39
#50450 #50450
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
@mättu: hab mal deinem beitrag code-tags spendiert;
dein script ist toll; hab es aber nicht getestet

man müsste glatt ein mork module auf cpan stellen
mättu
 2004-01-02 10:03
#50451 #50451
User since
2004-12-12
30 Artikel
BenutzerIn
[default_avatar]
@esskar
Viellecht sollten wir zuerst eine Mork-Forschungsstation auftun hier im Forum oder so. Für CPAN reicht es wohl noch nicht ganz..
Soll ich mal was starten und alles schreiben, was ich herausgefunden habe? Nicht hier, oder?
Danke fürs code-tag-spendieren!
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-12-29 22:27.