Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在客户端计算机上使用php打开outlook_Php_Outlook_Com - Fatal编程技术网

在客户端计算机上使用php打开outlook

在客户端计算机上使用php打开outlook,php,outlook,com,Php,Outlook,Com,我想在客户端机器上使用php打开outlook。 我已经有PHP代码来打开outlook窗口 当前场景: 我可以在本地服务器(本地计算机)上使用PHP打开outlook。 说本地主机url: 它将打开outlook,在该系统/服务器上可以使用代码。 这意味着我的本地系统中有代码。通过运行这些代码,我可以完美地打开outlook 我正在使用XAMPP。PHP7.1。视窗10。办公室,2013年。(在我的本地系统中) XAMPP,PHP7.1,Server2008R2(在服务器上) 默认邮件客户端:

我想在客户端机器上使用php打开outlook。 我已经有PHP代码来打开outlook窗口

当前场景: 我可以在本地服务器(本地计算机)上使用PHP打开outlook。 说本地主机url: 它将打开outlook,在该系统/服务器上可以使用代码。 这意味着我的本地系统中有代码。通过运行这些代码,我可以完美地打开outlook

我正在使用XAMPP。PHP7.1。视窗10。办公室,2013年。(在我的本地系统中) XAMPP,PHP7.1,Server2008R2(在服务器上) 默认邮件客户端:outlook

但是,当我在Windows server 2008 R2上上载相同的代码时,会在该服务器上打开outlook。 这意味着,URL:。如果我从任何系统访问此链接,Ii将仅在服务器上打开outlook。
理想情况下,它应该在客户端系统中打开outlook。

我检查过了:这不是服务器上的权限问题

我想要什么: 我想在访问该链接的客户机上使用PHP打开outlook。 (http:serverName/openOutlook/index.php)

注: 我已启用:extension=php\u com\u dotnet.dll

我已经提到了许多链接和问题的解决方案。但不幸的是,什么都帮不了我

这是我的简单代码:

<?php
    com_load_typelib('Outlook.Application');
    $objApp = new COM("Outlook.Application") or die ( "Cannot Load Outlook.Application" ); 

    $namespace = $objApp->GetNamespace("MAPI");  // or MAPI.Session
    $namespace->Logon(); 
    $myItem = $objApp->CreateItem ( olMailItem );   
    $myItem->To = $div_wise_value['emails'];
    $myItem->Subject = "Mail subject"; 
    $myItem->HTMLBody = "mail body";
    $myItem->Display();
?>

是否可以在访问链接的任何系统上打开outlook?
如果这是不可能的,我可以使用什么其他方法

感谢您的帮助

谢谢。

这是不可能的(至少,不是以你喜欢的方式)。在服务器上运行的PHP代码可以访问服务器上的COM对象。您正在尝试访问客户端上的COM对象

理论上,您可以通过使用远程COM调用连接机器上的函数来获取有关连接机器的IP地址的信息,但几乎所有防火墙都会试图阻止这一点(有充分的理由——您正试图远程控制机器)

您最好尝试通过HTML或javascript执行此操作-这里有一个适用于某些电子邮件客户端的示例:


如果您真的想使用它(在客户端打开Outlook),ActiveX就是为实现这类功能而设计的。但是,老实说,这不是一个好主意。即使您可以这样做,例如,如果此人没有安装outlook,会发生什么情况?如果它们不在Windows上怎么办?HTML和JavaScript解决方案将适用于更多的系统

PHP在服务器上运行。要在客户机上运行代码,IE中的JS非常有限,并且只有当您在受信任列表中,因此被允许创建COM对象时

在服务器上创建一个EML文件(包含HTML和all),并让用户下载它。客户端的Outlook将乐于打开并显示它。别忘了设置
X-Unsent:1
MIME标题,以确保Outlook将其显示为Unsent。

我也使用了此选项:。但它不提供将HTML标记或内容作为电子邮件正文传递的工具。电子邮件正文中只允许使用简单文本。我还必须应用许多setTimeout来打开多个outlook窗口。