0

非常にシンプルな Outlook を使用してメールを送信する小さな C# コンソール アプリを作成しました

Outlook.Application oApp = new Outlook.Application();
            //Create the new message by using the simplest approach.
Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
            oMsg.Recipients.Add("xxx@xxx.com");  //////////////////problem line 
            oMsg.Subject = "aaaa";
            oMsg.Body = "body";
            //Send the message.
            oMsg.Save();
            oMsg.Send();

このコードは、php コードから呼び出す必要があります。

1) コンソールで問題なく動作します。

2) PHP から呼び出すと、エラーが発生します。このコンソール アプリを php から呼び出すと、システム ユーザーで実行されることに気付きました。そのため、システムとして実行するように Outlook を作成しましたが、それでもこのエラーが発生します。私はApacheサーバーを実行しています。

System.Runtime.InteropServices.COMException (0x80004004): Microsoft.Office.Interop.Outlook._MailItem.get_Recipients() で SyncEmail.Program.sendMailUsingOutlook(String recipient, String body, D:\NotEncrypted\Projects\SyncEmail\SyncEmail\Program.cs:line 121 の文字列 subject)

髪を伸ばして色々見てます。どんな助けでも大歓迎です。私の投稿を読んでくれてありがとう。

一部の人がphpを使用すると言った後、私はphpルートに行き、このコードを書いて同じエラーを取得することにしました。

if (!defined(‘olMailItem’)) define(“olMailItem”,0);
$objApp = new COM(“Outlook.Application”);
$myItem = $objApp->CreateItem(olMailItem);
$myItem->To=’xxxx@xxx.com’;
$myItem->SentOnBehalfOfName = ‘yyy@xxyyx.com’;
$myItem->Subject=”This is a test”;
$myItem->Body=”This is a Body Section now…..!”;
$myItem->Send();

このエラーが発生します

致命的なエラー: D:\NotEncrypted\xampp\htdocs\copper\system\modules\projects\index.php 行 11251 ( ! ) com_exception: エラー [0x80004004] Operation aborted in D:\ NotEncrypted\xampp\htdocs\copper\system\modules\projects\index.php 行 11251

4

2 に答える 2

0

PHPジョブを直接実行できます

$oApp  = new COM("Outlook.Application") or die('error');
$oMsg  = $oApp ->CreateItem($oApp->OlItemTyp->olMailItem);
$oMsg ->Recipients->Add("xxx@xxx.com");
$oMsg ->Subject="aaaa";
$oMsg ->Body="body";
$oMsg ->Save();
$oMsg ->Send();
于 2012-04-24T21:50:32.597 に答える
0

C# Outlook プロジェクトからサーバーを作成し、ポート (ex 3455) をリッスンし、php スクリプトで CURL を使用してサーバーに接続します (C# プログラム)

于 2012-04-24T21:53:47.363 に答える