0

いくつかの Delphi XE2 プロジェクトで、「HTTP アップロード」経由でバグ レポートを送信するように Eurekalog を設定しました。これは、PHP スクリプトを使用してバグ レポートをキャッチし、ディレクトリに保存してメールで送信するため、うまく機能します。

<?php

require 'PHPMailerAutoload.php';

foreach ($_FILES as $key => $value)
{
    $uploaded_file = $_FILES[$key]['tmp_name'];
    $server_dir = 'upload/';
    $server_file = $server_dir . date("Y-m-d H-i-s ") . basename($_FILES[$key]['name']);
    $ext = strtoupper(pathinfo($server_file, PATHINFO_EXTENSION));
    if ($ext != 'EL')
    {
        continue;
    }
    if (move_uploaded_file($uploaded_file, $server_file))
    {
        echo '<html>';
        echo '<head>';
        echo '<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=UTF-8">';
        echo '<title>Bug submission</title>';
        echo '</head>';
        echo '<body>';
        echo 'Thank you!<br />';
        echo "<!--\n";
        echo "<EurekaLogReply>Thank you for your feedback!</EurekaLogReply>\n";        
        echo "-->";
        echo '</body>';
        echo '</html>';

        SendBugReportMessage('auserofmyprogram@usersofmyprogram.com',
                             'A User of my program',
                             'Eurekalog Bug Report',
                             'This is a bug report from Eurekalog.',
                             'eurekalog.bugreport@mysite.com',
                             $server_file,
                             basename($server_file)
                             );
    }    
}

function SendBugReportMessage($AFrom, $AFromName, $ASubject, $ABodyText, $ARecipient, $AFileToAttach, $ANameOfFile)
{
    $email = new PHPMailer();
    $email->From      = $AFrom;
    $email->FromName  = $AFromName;
    $email->Subject   = $ASubject;
    $email->Body      = $ABodyText;
    $email->AddAddress($ARecipient);
    $file_to_attach = $AFileToAttach;
    $email->AddAttachment($file_to_attach, $ANameOfFile);
    return $email->Send();
}

?>

現在、このまったく同じ PHP スクリプトを使用してバグ レポートをアップロードするプログラムがいくつかあります。ただし、この PHP スクリプトに送信されるバグ レポートには、常に「BugReport」という名前が付けられます。では、PHP スクリプトで、バグ レポートを送信したプログラムの名前を取得するにはどうすればよいのでしょうか。プログラム名を添付して保存し、メールの件名にプログラム名を含めることができますか? または、Delphi コードの側に何かを実装することで解決できるでしょうか? それともエウレカログで?

Eurekalog のバージョンは 7.1.0.0 です

4

2 に答える 2

1

そのために web-fields を使用できます。EurekaLog にはOnCustomWebFieldsRequestイベント ハンドラーがあり、Web ベースの送信方法 (HTTP アップロード、HTTP API を使用したバグ トラッカーなど) の Web フィールドを変更できます。

そのようなイベント ハンドラを割り当てます。

uses
  EEvents;

procedure AddApplicationName(const ACustom: Pointer; ASender: TObject { TELWebSender }; AWebFields: TStrings; var ACallNextHandler: Boolean);
begin
  AWebFields.Values['Application'] := AnsiLowerCase(ExtractFileName(ParamStr(0)));
end;

initialization
  RegisterEventCustomWebFieldsRequest(nil, AddApplicationName);
end.

次に、スクリプトから新しい「アプリケーション」フィールドにアクセスできます。PHP の場合、$_REQUEST["Application"] または $_POST["Application"] になります。

于 2014-10-07T14:46:57.150 に答える
0

この特定のタスクでは、OnCustomFileName イベント ハンドラを使用して、送信に使用するファイル名を変更することもできます。AFileType = ftZIP (パックされた .elp レポートを送信する場合) または AFileType = ftBugReport (アンパックされた .el レポートを送信する場合) に関心があります。

于 2014-10-07T15:20:49.697 に答える