windows-nt/Source/XPSP1/NT/sdktools/mtscript/scripts/sendmail.js
2020-09-26 16:20:57 +08:00

119 lines
3.8 KiB
JavaScript

var MAIL_RESEND_INTERVAL = 30 * 60 * 1000; // Send another error mail after 30 minutes
var MAX_ERRORLOG_LINES = 50; // Maximum number of lines to pull from the error log
function GetBuildInformation()
{
var strMsg = "";
strMsg += 'Build Type: ' + PrivateData.objConfig.Options.BuildType + '\n';
strMsg += 'Build Platform: ' + PrivateData.objConfig.Options.Platform + '\n';
strMsg += 'Incremental Build: ' + (PrivateData.objConfig.Options.fIncremental ? 'true' : 'false') + '\n';
strMsg += 'Build Manager: ' + PrivateData.objEnviron.BuildManager.Name + '\n';
if (PrivateData.objEnviron.BuildManager.PostBuildMachine)
strMsg += 'PostBuild Machine: ' + PrivateData.objEnviron.BuildManager.PostBuildMachine + '\n\n';
return strMsg;
}
/*
SendErrorMail()
Contruct a nicely formatted EMail message with the given
error information and send it.
No attempt to limit the frequency of email is done - this should
be done by the caller.
*/
function SendErrorMail(strTitle, strText)
{
var aTo = PrivateData.objEnviron.Options.EmailAliasTo.split(/[,; ]/);
var aCC = PrivateData.objEnviron.Options.EmailAliasCC.split(/[,; ]/);
var strMsg;
var strSubj;
strSubj = 'BC: "' + PrivateData.objConfig.LongName + ' ' + PrivateData.objEnviron.LongName + '" ' + strTitle;
strMsg = 'This is a Build Console message being sent from ' + LocalMachine + '.\n\n';
strMsg += strTitle +'\n\n';
strMsg += GetBuildInformation();
strMsg += strText;
if (aTo.length > 0 && aTo[0].length == 0)
{
return;
}
if (aCC.length > 0 && aCC[0].length == 0)
{
aCC = new Array();
}
LogMsg('Sending mail to =' + aTo.join(' ='));
var iRet = SendMail('=' + aTo.join(' ='),
(aCC.length > 0) ? '=' + aCC.join(' =') : '',
'',
strSubj,
strMsg);
LogMsg("On error EMAIL MESSAGE: " + strSubj + ", " + strMsg);
if (iRet)
{
LogMsg('an error occurred sending Email, return code was ' + iRet);
return false;
}
return true;
}
/*
Create the message subject and body for a task error message, suitable
for emailing.
*/
function CreateTaskErrorMail(strMachineName, strDepotName, strTaskName, strDetails, strLogFile)
{
var strMsg;
var strSubj;
strMsg = 'This is a Build Console message being sent from ' + strMachineName + '.\n\n';
strMsg += 'An error occurred doing the ' + strTaskName + ' task on ';
strMsg += 'the ' + strDepotName + ' depot. Some available information ';
strMsg += 'will appear below, but for complete information you will need ';
strMsg += 'to view the full error log. You can do this using the Console UI.\n\n';
strMsg += ' Thanks for using Build Console!\n\n';
strMsg += ' --------------------------------------------------\n\n';
strMsg += strDetails + '\n\n';
if (strLogFile)
{
var FSObj = new ActiveXObject("Scripting.FileSystemObject");
var file;
var cLineCnt = 0;
try
{
file = FSObj.OpenTextFile(strLogFile, 1);
while (!file.AtEndOfStream && cLineCnt <= MAX_ERRORLOG_LINES)
{
strMsg += file.ReadLine() + '\n';
cLineCnt++;
}
strMsg += '\nThe complete error log is located at ' + strLogFile;
file.Close();
}
catch(ex)
{
LogMsg('An error occurred reading the log file "' + strLogFile + '" for email: ' + ex);
strMsg += 'Could not attach error log (' + strLogFile + '): ' + ex;
}
}
strSubj = 'An error occurred during a ' + strTaskName + '!';
SimpleErrorDialog(strSubj, strMsg, true);
}