2015-01-06 48 views
0

2010電郵已添加:發送Outlook中使用PHP

[COM_DOT_NET]

延長= php_com_dotnet.dll

在php.ini文件的末尾

這是我的代碼「M使用:

if (!defined("olMailItem")) define("olMailItem",0); 

    $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 = $email; 
    $myItem->SentOnBehalfOfName = "[email protected]"; 
    $myItem->Subject = "Notification: application form submitted successfully."; 
    $myItem->Body ="Hi " . $realname .", 
    You have successfully submitted the applicant form for (".$firstname." , ".$lastname.") 
The application has been sent to the respective managers for approval. 


    Thank you, 
    Applicant Portal"; 
    $myItem->Send(); 

完整的錯誤消息:

致命錯誤:未捕獲的異常「發出com_exception」有消息「無法建立COM對象`Outlook.Application」:訪問被拒絕。 '在C:\的Inetpub \ wwwroot的\ doForm.php:268堆棧跟蹤:#0 C:\的Inetpub \ wwwroot的\ doForm.php(268):COM的> COM(' Outlook.Applica ...')#1 {主}拋在C:\ inetpub \ wwwroot \ doForm.php在線268

回答

0

從PHP自動化Outlook不是一個好主意。該Considerations for server-side Automation of Office文章指出以下幾點:

微軟目前並不提倡,不支持,Microsoft Office應用程序自動化從任何無人蔘與的非交互式客戶端應用程序或組件(包括ASP,ASP.NET,DCOM,和NT服務),因爲Office在此環境中運行時可能會出現不穩定的行爲和/或死鎖。

如您所見,不支持這種自動化Outlook的方式。

0

我找了連續兩個天解決方法。我的應用程序工作完美,突然間我偶然發現了同樣的例外情況。

問題是Outlook和我的Apache服務器在不同的權限下運行(一個是用戶,另一個是管理員)。我以用戶身份運行,一切都恢復正常。

+0

不要在服務使用Outlook。不要。它保證遲早會失敗。 –