API für Entwickler
Machen Sie den IceWarp Mail Server zu Ihrer persönlich zugeschnittenen Lösung indem Sie ihn genau so erweitern wie Sie es haben möchten. Und zwar ohne zusätzliche Kosten!
Die offen zugängliche API erlaubt dem Entwickler die vollständige Kontrolle über den IceWarp Server. Ob Zugriff auf GroupWare-Elemente, Verwaltung von Konten oder ganzen Domänen, Konfiguration von Server-Einstellungen, all dies kann aus einem beliebigen Script oder Programm gesteuert werden. Die API kann für alle Programmiersprachen eingesetzt werden, welche die COM-Technologie unterstützen. Die API steht unmittelbar nach Installation des IceWarp Servers zur Verfügung, es fallen keine zusätzlichen Kosten für Sie an. Ausserdem können Sie unsere kostenlosen Tools von der Website herunterladen, welche Server-Traffic simulieren, die DNS-Konfigurationen testen, Fehler identifizieren und analysieren können, damit einer reibungslosen Integration nichts mehr im Wege steht.
Mailserver Integration einfach gemacht...
Dokumentation der API
Die API ist bestens dazu geeignet, Ihren IceWarp Server durch ein eigen erstelltes Visual C++, Visual Studio, Delphi, FreePascal, PHP, ASP, Visual Basic oder Microsoft .NET Programm zu konfigurieren oder zu warten. über RPC (Remote Procedure Call) können Sie remote auf die COM-Objekte des Servers zugreifen.
Weitere Informationen zur API finden Sie im API folder im Rootverzeichnis Ihrer Installation. Eine vollständige Liste der unterstützten Funktionen für COM-Objekte ist in der Datei api\classes.txt enthalten; eine weitere Liste der über die API zugreifbaren Variablen ist in api\Delphi\APIConst.pas enthalten. Obschon Dokumentationen für andere Programmiersprachen verfügbar sind, ist die ausführlichste und aktuellste Dokumentation für die Sprache Delphi verfasst worden. In diesem Ordner finden Sie auch Source Code für das Kommandozeilen-Tool (tool.exe), welches eng mit der API zusammenarbeitet und somit als gutes Beispiel selbst für komplizierte Applikationen verwendet werden kann.
COM-Objekte können genutzt werden, um E-Mail und IM-Nachrichten zu versenden. Sie bieten eine abstrahierte Schnittstelle, weshalb Sie sich nicht um die Details aller Kommunikationsprotokolle zu kümmern brauchen. COM-Objekte stellen auch Zugriff auf IDP-Routinen zur Verfügung, zwecks der Manipulation von IDP-Archiven.
Verfügbare COM-Objekte:
- IceWarpServer.APIObject
- IceWarpServer.DomainObject
- IceWarpServer.AccountObject
- IceWarpServer.RemoteAccountObject
- IceWarpServer.ScheduleObject
- IceWarpServer.StatisticsObject
- IceWarpCOM.GroupWare
- IceWarpCOM.Mailer
- IceWarpCOM.IMMessage
- IceWarpCOM.IDP
All diese COM-Objekte können mit den im API-Ordner publizierten Variablen operieren.
IceWarpServer.APIObject
Dieses Objekt enthält Funktionen, um globale Einstellungen des Servers abzufragen und zu setzen. Das APIObject ermöglicht, Domänen des Mail-Servers zu erstellen, editieren oder zu löschen. Schliesslich können Sie Konten hinzufügen, editieren oder löschen.
<?php
$api=new COM('IceWarpServer.APIObject');
$tarpit = $api->GetProperty('C_Mail_Security_Tarpit_Enable');
echo 'Tarpitting is '.($tarpit==0 ? 'disabled':'enabled').'<br />';
$api->SetProperty('C_Mail_Security_Tarpit_Enable', ($tarpit==0 ? 1 : 0));
echo 'Tarpitting has been '.($tarpit==0 ? 'enabled':'disabled');
$api->Save();
$api->UpdateConfiguration();
?>
IceWarpServer.DomainObject
Dieses Objekt enthält Funktionen, um Domäneneinstellungen abzufragen und zu setzen sowie ganze Domänen zu erstellen, editieren oder zu löschen.
<?php
$dom=new COM('IceWarpServer.DomainObject');
$dom->New('icewarpdemo.com');
$dom->Save();
echo 'icewarpdemo.com was created';
?>
IceWarpServer.AccountObject
Dieses Objekt enthält Funktionen, um Kontoeinstellungen abzufragen und zu setzen.
<?php
$account=new COM('IceWarpServer.AccountObject');
$account->New('newuser@icewarpdemo.com');
$account->SetProperty('U_Password', 'newpassword');
if ($account->Save())
echo 'Account newuser@icewarpdemo.com was created';
else
echo 'Error creating account newaccount@icewarpdemo.com';
?>
IceWarpServer.RemoteAccountObject, IceWarpServer.ScheduleObject
Ein Set an Funktionen, um Konteneinstellungen remote abzufragen und zu setzen.
<?php
$ra=new COM('IceWarpServer.RemoteAccountObject');
$ra->Open(0); // Open the first remote account
$schedule = $ra->GetSchedule('ra_schedule');
if($schedule->Count>0)
{
$schedule->Select(0); // Select the first schedule as active
$schedule->SetProperty("s_weekdays_su", false);
$schedule->SetProperty("s_weekdays_mo", true);
$schedule->SetProperty("s_weekdays_tu", false);
$schedule->SetProperty("s_weekdays_we", true);
$schedule->SetProperty("s_weekdays_th", false);
$schedule->SetProperty("s_weekdays_fr", true);
$schedule->SetProperty("s_weekdays_sa", false);
$schedule->SetProperty("s_scheduletype", 0); // Every x minutes type
$schedule->SetProperty("s_every", 1200); // Set 20 minutes
$schedule->SetProperty("s_wholeday", true); // Whole day interval
}
$ra->SetSchedule('ra_schedule', $schedule); // Set the changed schedule
$ra->Save();
?>
IceWarpServer.StatisticsObject
Dies ist ein Interface, um statistische Informationen wie beispielsweise die Laufzeit oder Traffic von Diensten abzufragen.
<?php
$stats=new COM('IceWarpServer.StatisticsObject');
$stats->Poll('SMTP');
echo $stats->GetProperty('ST_SMTP_MessageOut') . ' messages sent out';
?>
IceWarpCOM.GroupWare
Dies ist ein Interface, um mithilfe der GroupWare API und GroupWare PHP Klasse auf GroupWare zuzugreifen.
<?php
require_once('.\webmail\server\inc\gw\gwapi.php');
$gw=new MerakGWAPI();
$gw->user='john.doe@icewarpdemo.com';
$gw->pass='secret';
$gw->Login();
$gid = $gw->OpenGroup('*');
$fid = $gw->OpenFolder($gid, 'Contacts');
$list = $gw->ParseParamLine($gw->FunctionCall('GetContactList', $fid));
$data = array();
for ($i=0;$i
$id = $list[$i][CONTACT_ID];
$data[] = $gw->FunctionCall('GetVCard', $fid, $id);
}
$vcard='
BEGIN:VCARD
VERSION:2.1
PRODID:-//IceWarp//Merak Mail Server 9.2.1//EN
FN:John Doe
N:Doe;John
NOTE;ENCODING=QUOTED-PRINTABLE:Multi-line note=0D=0AAnother=0D=0AMore=0D=0AAnd more
URL;http://www.icewarp.com/
UID:370398ef4001
CLASS:PUBLIC
SEQUENCE:1
CREATED:20080503T170731Z
DTSTAMP:20080503T170731Z
LAST-MODIFIED:20080503T170747Z
ORG:IceWarp Inc.
END:VCARD';
$gw->FunctionCall('AddVCard', $fid, $vcard);
?>
IceWarpCOM.Mailer
Dieses Objekt enthält Funktionen, um Klartext oder HTML-Nachrichten zu senden und um Anhänge, eingebettete Bilder, spezifische Zeichensätze, Cc, Reply-To oder beliebig angepasste Headers einer E-Mail Nachricht hinzuzufügen. Das Mailer-Objekt ist zu 100% kompatibel zur Syntax der bekannten ASP-E-Mail-Komponente.
Nachricht als Klartext in PHP
<?php
$com = new COM("IceWarpCOM.Mailer");
$com->RemoteHost = "localhost";
$com->Helo = "mycomputer.icewarpdemo.com";
$com->FromName = "John Doe";
$com->FromAddress = "john@icewarpdemo.com";
$com->AddRecipient("mother@icewarpdemo.com", "Mom");
$com->Subject = "Hi mom";
$com->BodyText = "Just wanted to let you know I have new
IceWarp Server installed.". "\n\nSincerely,". "\nJohn";
if (!$com->SendMail()) echo $com->Response;
else echo "Mail was sent";
$com = null;
?>
Nachricht als Klartext in ASP
<%
Set Com = Server.CreateObject( "IceWarpCOM.Mailer" )
Com.RemoteHost = "localhost"
Com.Helo = "localhost"
Com.FromName = "User One"
Com.FromAddress = "user1@demodomain.com"
Com.MailFrom = Mail.FromAddress
Com.AddRecipient "user2@demodomain.com.br", "User Two"
Com.Subject = "Test message"
Com.IsHTML = "True"
Com.BodyText = "IceWarp COM objects under IIS work"
If Not Com.SendMail Then Response.Write com.Response
Set Com = Nothing
%>
HTML-Nachricht in PHP
<?php
$com = new COM("IceWarpCOM.Mailer");
$com->RemoteHost = "localhost";
$com->Helo = "mycomputer.icewarpdemo.com";
$com->FromName = "John Doe";
$com->FromAddress = "john@icewarpdemo.com";
$com->AddRecipient("mother@icewarpdemo.com", "Mom");
$com->Subject = "Hi mom";
$com->IsHTML = True;
$com->BodyText = "... one more thing - I can now send even
HTML messages from my scripts!". "\n\nSincerely,". "\nJohn";
if (!$com->SendMail()) echo $com->Response;
else echo "Mail was sent";
$com = null;
?>
Nachricht mit Anhängen in PHP
<?php
$com = new COM("IceWarpCOM.Mailer");
$com->RemoteHost = "localhost";
$com->Helo = "mycomputer.icewarpdemo.com";
$com->FromName = "John Doe";
$com->FromAddress = "john@icewarpdemo.com";
$com->AddRecipient("bob@icewarpdemo.com", "Bob Smith");
$com->Subject = "Annual report";
$com->BodyText = "Hi Bob,\n". "sending you the annual report.
See attachment.". "\n\nRegards,". "\nJohn";
$com->AddAttachment("C:\\Documents and Settings\\John\\report.rtf");
if (!$com->SendMail()) echo $com->Response;
else echo "Mail was sent";
$com = null;
?>
Nachricht mit eingebettetem Bild in PHP
<?php
$com = new COM("IceWarpCOM.Mailer");
$com->RemoteHost = "localhost";
$com->Helo = "mycomputer.icewarpdemo.com";
$com->FromName = "John Doe";
$com->FromAddress = "john@icewarpdemo.com";
$com->AddRecipient("bob@icewarpdemo.com", "Bob Smith");
$com->Subject = "Bob you have to see this...";
$com->IsHTML = True;
$com->BodyText = "<html><head>". "
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">".
"</head><body><img src=\"cid:123\">". "</body></html>";
$com->AddEmbeddedImage("c:\\image.jpg", "123");
if (!$com->SendMail()) echo $com->Response;
else echo "Mail was sent";
$com = null;
?>
IceWarpCOM.IMMessage
Dieses Objekt enthält Funktionen, um den Status von IM Kontakten zu überprüfen und IM Nachrichten zu senden. Es werden beliebige XML Tags unterstützt.
IM-Nachricht in PHP
(bob@icewarpdemo.com muss in John's Kontaktleiste sein)
<?php
$com = new COM("IceWarpCOM.IMMessage");
$com->MessageFrom = "admin@icewarpdemo.com";
$com->MessageTo = "john@icewarpdemo.com";
$com->MessageSubject = "Hey pal";
$com->MessageBody = "This IM message was sent from my web site";
$com->SendMessage();
$com = null;
?>
IM-Nachricht in ASP (Sender und Empfänger müssen sich gegenseitig in der Kontaktleiste eingetragen haben)
<%
Set IM = Server.CreateObject("IceWarpCOM.IMMessage")
Im.MessageFrom = "user1@demodomain.com"
Im.MessageTo = "user2@demodomain.com"
Im.MessageSubject = "TEST"
Im.MessageBody = "UNO DUE TRES QUATRO"
If Not Im.SendMessage Then
Response.Write "Error sending message to " & Im.MessageTo & " "
Else Response.Write "Message Sent "
End If
If Im.IsOnline( Im.MessageTo ) Then
Response.Write Im.MessageTo & " is online "
End If
Set Im = Nothing
%>
Abfrage des IM-Status in PHP
<?php
$com = new COM("IceWarpCOM.IMMessage");
$buddy = "john@icewarpdemo.com";
echo $buddy . ' is ';
if (!$com->IsOnline($buddy)) echo 'NOT';
echo 'online';
$com = null;
?>
IceWarpCOM.IDP
Dieses Objekt enthält Funktionen, um Dateien in IDP-Archive einzufügen bzw. um Dateien vom IDP-Archiv zu extrahieren.
Datei in ein IDP-Archiv einfügen in PHP
(Muss ein User mit Schreibrecht auf das Verzeichnis ausführen)
<?php
$com = new COM('IceWarpCOM.IDP');
$com->AddFiles('c:\temp\temp.zip', 'c:\windows\temp');
$com = null;
?>