在几个Delphi项目中,我将Eurekalog设置为通过“XE2 upload”发送错误报告,效果很好,因为我使用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脚本来上传它们的bug报告。但是,发送到此PHP脚本的错误报告的名称始终为"BugReport“。那么,在PHP脚本中,我如何获取发送错误报告的程序的名称,以便通过附加程序名称并在邮件主题中包含程序名称来保存它?或者,有没有可能通过在Delphi代码一侧实现一些东西来解决问题?还是在Eurekalog?
Eurekalog版本为7.1.0.0
发布于 2014-10-07 22:46:57
您可以使用web-field来实现此目的。EurekaLog具有OnCustomWebFieldsRequest事件处理程序,允许您为任何基于web的发送方法(如HTTP upload、使用HTTP API的bug跟踪器等)更改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.然后,您可以从脚本访问新的"Application“字段。对于PHP,它将是$_REQUEST“应用程序”或$_POST“应用程序”
发布于 2014-10-07 23:20:50
对于这个特定的任务,您还可以使用OnCustomFileName event handler来更改用于发送的文件名。您对AFileType = ftZIP (如果要发送打包的.elp报告)或AFileType = ftBugReport (如果要发送未打包的.el报告)感兴趣。
https://stackoverflow.com/questions/26110444
复制相似问题