API 开发
开放 API 提供了服务器完全控制、可以从任意的脚本或程序进行协同工作组访问、帐户和域管理、服务器设置、日程安排、统计及更多先进功能。API 可以被所有支持 COM 对象的开发语言使用,安装后即可免费使用。添加这些功能将将帮助您模拟服务器流量,检测 DNS 配置,分析和检查错误,提供最高的可靠性和整体零故障。
整合邮件服务器使其操作简易.
API 文档
API 为您提供最好的方法从任何编程语言来维护您的爱思华宝服务器,如 Visual C++、 Visual Studio、Delphi、freepascal、PHP、 ASP、 Visual Basic、Microsoft .NET 或任何其他语言。你可以使用的RPC(远程过程调用)远程访问服务器或 COM 对象。
更多信息可以在安装根目录下的 API 文件夹 被发现。api\classes.txt 文件中有一个完整的 COM 对象功能函数列表。完整的 API 可用变量列表位于 api\Delphi\APIConst.pas 文件。这里同样也有其它程序语言的文件夹,但是最新更新永远会首先出现在 Dephi 文件夹。 在这个文件夹中你也能找到命令行工具 Tool - tool.exe 的源代码, 这些都是很好的 API 应用实例,即使做为最复杂的应用也同样有效。
COM 对象也能在不了解所有通讯协议的情况下被用于发送电子邮件和 IM 信息。 它同时也提供 IDP 访问途径用于 IDP 归档操作。
可用的 COM 对象:
- IceWarpServer.APIObject
- IceWarpServer.DomainObject
- IceWarpServer.AccountObject
- IceWarpServer.RemoteAccountObject
- IceWarpServer.ScheduleObject
- IceWarpServer.StatisticsObject
- IceWarpCOM.GroupWare
- IceWarpCOM.Mailer
- IceWarpCOM.IMMessage
- IceWarpCOM.IDP
所有 COM 对象可以通过 API 文件夹中公布的变量名操作。
IceWarpServer.APIObject
设置和查询全局服务器设置功能, 也提供创建/编辑/删除邮件服务器中域的能力。同时也能用于添加/编辑/删除帐户。
<?
$api=new COM('IceWarpServer.APIObject');
$tarpit = $api->GetProperty('C_Config_Delivery_Tarpitting');
echo 'Tarpitting is '.($tarpit==0 ? 'disabled':'enabled').'<br />';
$api->SetProperty('C_Config_Delivery_Tarpitting', ($tarpit==0 ? 1 : 0));
echo 'Tarpitting has been '.($tarpit==0 ? 'enabled':'disabled');
$api->Save();
$api->UpdateConfiguration();
$api->Release();
?>
IceWarpServer.DomainObject
设置和查询域配置功能,建立/编辑/删除域。
<?
$dom=new COM('IceWarpServer.DomainObject');
$dom->New('newdomain.com');
$dom->Save();
echo 'newdomain.com was created';
$dom->Release();
?>
IceWarpServer.AccountObject
设置和查询帐户配置功能。
<?
$account=new COM('IceWarpServer.AccountObject');
$account->New('newuser@newdomain.com');
$account->SetProperty('U_Password', 'newpassword');
if ($account->Save())
echo 'Account newaccount@newdomain.com was created';
else
echo 'Error creating account newaccount@newdomain.com';
$account->Release();
?>
IceWarpServer.RemoteAccountObject, IceWarpServer.ScheduleObject
设置和查询远程帐户配置的简易设置功能。
<?
$ra=new COM('IceWarpServer.RemoteAccountObject');
$ra->Open(0); // 开启首个远程帐户
$schedule = $ra->GetSchedule('ra_schedule');
// 获得对象的进度表
$schedule->Count = 1; // 设置 1 个进度表条目
$schedule->SetProperty("s_weekdays_su", true);
$schedule->SetProperty("s_weekdays_mo", true);
$schedule->SetProperty("s_weekdays_tu", true);
$schedule->SetProperty("s_weekdays_we", true);
$schedule->SetProperty("s_weekdays_th", true);
$schedule->SetProperty("s_weekdays_fr", true);
$schedule->SetProperty("s_weekdays_sa", true);
$schedule->SetProperty("s_scheduletype", 0); // 每 x 分钟类型
$schedule->SetProperty("s_every", 1200); // 设置为 20 分钟
$schedule->SetProperty("s_wholeday", true); // 全天间隔
$ra->SetSchedule('ra_schedule', $schedule); // 改变进度表设置
$ra->Save(); // 保存远程帐户改变
?>
IceWarpServer.StatisticsObject
查询统计信息比如运行时间和服务流量的界面。
<?
$stats=new COM('IceWarpServer.StatisticsObject');
$stats->Poll('SMTP');
echo $stats->GetProperty('st_smtp_messagesout') . ' messages sent out';
$statsi->Release();
?>
IceWarpCOM.GroupWare
使用协同工作 API 和协同工作 PHP 类的协同工作组访问介面。
<?
require_once('gw.php');
$gw=new MerakGWAPI();
$gw->user='john@doe.com;
$gw->pass='secret';
$gw->Login();
$gw->OpenGroup('*');
$gw->OpenFolder('Contacts');
$vcard=' BEGIN:VCARD VERSION:2.1 PRODID:-//IceWarp//Merak Mail Server 9.0.0-3//EN FN:John Doe N:Doe;John NOTE;ENCODING=QUOTED-PRINTABLE:Multiple line note=0D=0AAnother=0D=0AMore=0D=0AAnd more URL;http://www.icewarp.com/ UID:370398ef4001 CLASS:PUBLIC SEQUENCE:1 CREATED:20070803T170731Z DTSTAMP:20070803T170731Z LAST-MODIFIED:20070803T170747Z ORG:IceWarp Ltd. END:VCARD';
$gw->FunctionCall($fid, 'AddVCard', $vcard);
?>
IceWarpCOM.Mailer
发送纯文本或 HTML 邮件、添加附件、插入图片、指定字符集、 Cc、 回复或任何定制邮件头功能。 与著名的 ASP 电子邮件组件语法 100% 兼容。
PHP 中纯文本邮件
<?
$com = new COM("IceWarpCOM.Mailer");
$com->RemoteHost = "smtp.mydomain.com";
$com->Helo = "mycomputer.mydomain.com";
$com->FromName = "John Doe";
$com->FromAddress = "john@mydomain.com";
$com->AddRecipient("mother@mydomain.com", "Mom");
$com->Subject = "Hi mom";
$com->BodyText = "我刚刚安装了一个新的
爱思华宝邮件服务器。". "\n\nSincerely,". "\nJohn";
if (!$com->SendMail()) echo $com->Response;
$com->Release();
$com = null;
?>
ASP 中纯文本邮件
<%
Set Mail = Server.CreateObject( "IceWarpCOM.Mailer" )
Mail.RemoteHost = "localhost"
Mail.Helo = "localhost"
Mail.FromName = "User One"
Mail.FromAddress = "user1@demodomain.com"
Mail.MailFrom = Mail.FromAddress
Mail.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
%>
PHP 中 HTML 邮件
<?
$com = new COM("IceWarpCOM.Mailer");
$com->RemoteHost = "smtp.mydomain.com";
$com->Helo = "mycomputer.mydomain.com";
$com->FromName = "John Doe";
$com->FromAddress = "john@mydomain.com";
$com->AddRecipient("mother@mydomain.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;
$com->Release();
$com = null;
?>
PHP 中带附件邮件
<?
$com = new COM("IceWarpCOM.Mailer");
$com->RemoteHost = "smtp.mydomain.com";
$com->Helo = "mycomputer.mydomain.com";
$com->FromName = "John Doe";
$com->FromAddress = "john@mydomain.com";
$com->AddRecipient("bob@mydomain.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;
$com->Release();
$com = null;
?>
PHP 中带图件的邮件
<?
$com = new COM("IceWarpCOM.Mailer");
$com->RemoteHost = "localhost";
$com->Helo = "localhost";
$com->FromName = "Martin";
$com->FromAddress = "admin@localhost";
$com->AddRecipient("admin@localhost", "Lobogo :)");
$com->Subject = "COM obj test";
$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;
$com->Release();
$com = null;
?>
IceWarpCOM.IMMessage
检查 IM 联系人和发送 IM 信息功能,同时支持任何定制的 XML 标签。
PHP 中的 IM 信息
(bob@mydomain.com 必须在 John 的好友列表中)
<?
$com = new COM("IceWarpCOM.IMMessage");
$com->MessageFrom = "john@mydomain.com";
$com->MessageTo = "bob@mydomain.com";
$com->MessageSubject = "Hey pal";
$com->MessageBody = "This IM message was sent from my web site";
if (!$com->SendMessage()) echo "Error";
$com->Release();
$com = null;
?>
ASP 中的 IM 信息 (发送者和接收者必须在彼此的好友列表中)
<%
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 sendin 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
%>
PHP 中 IM 出席查询
<?
$com = new COM("IceWarpCOM.IMMessage");
$buddy = "bob@mydomain.com";
echo $buddy . ' is ';
if (!$com->IsOnline($buddy)) echo 'NOT';
echo 'online';
$com->Release();
$com = null;
?>
IceWarpCOM.IDP
从/到 IDP 档案中提取和添加文件功能。
PHP 中添加文件到 IDP 档案
(用户必须对档案所在目录具有写访问权限)
<?
$com = new COM('IceWarpCOM.IDP');
$com->AddFiles('temp.idp', 'c:\windows\temp')
$com->Release();
$com = null;
?>