0

特定のイベント ログ メッセージを電子メールで送信するために、毎日スケジュールされたジョブとして使用する SQL の小さなルーチンがあります。

   DECLARE @CurrentDate DATETIME,
        @Body VARCHAR(MAX),
        @TableHead VARCHAR(MAX),
        @TableTail VARCHAR(MAX)
SET NOCOUNT ON;
SELECT @CurrentDate=DATEADD(dw, -5, GETDATE())      --Three weekdays back
SET @TableTail='</table></body></html>'
SET @TableHead = '<html><head>' +
                  '<style>' +
                  'td {border: solid black 1px;padding-left:5px;padding-right:5px;padding-top:1px;padding-bottom:1px;font-size:9pt;} ' +
                  '</style>' +
                  '</head>' +
                  '<body><table cellpadding=0 cellspacing=0 border=0>' +
                  '<tr bgcolor=#FFEFD8><td align=center><b>User Name</b></td>' + 
                  '<td align=center><b>Date</b></td>' + 
                  '<td align=center><b>Message</b></td></tr>';
SELECT @Body=(
        SELECT ELogUserName AS [TD],
                CONVERT(NVARCHAR(20),Elogdatetime,101) AS [TD],
                REPLACE(Elogmessage,CHAR(10)+CHAR(13),'<br />') AS [TD]
        FROM tblEventLog
        WHERE ELogDateTime > @CurrentDate AND ELogEventType = 3 AND ELogUsername <> 'jameccccccfer'
        ORDER BY ELogID DESC
        FOR XML RAW('tr'), Elements)

SELECT @Body = @TableHead + @Body + @TableTail

-- return output
INSERT INTO tblPendingMessages
    SELECT 
        'xxxxxxx@Gmail.com' AS Recipient,
        'CPAS Error Log' AS MessageSubject,
        NULL AS MessageCC,
        @Body AS MessageBody,
        @CurrentDate AS MessageGenerated,
        NULL AS MessageSent,
        NULL AS MessageUser,
        'HTML' AS MessageFormat

このコードは、次のような HTML 文字列を生成します。

<html><head><style>td {border: solid black 1px;padding-left:5px;padding-right:5px;padding-top:1px;padding-bottom:1px;font-size:9pt;} </style></head><body><table cellpadding=0 cellspacing=0 border=0><tr bgcolor=#FFEFD8><td align=center><b>User Name</b></td><td align=center><b>Date</b></td><td align=center><b>Message</b></td></tr><tr><TD>nfox</TD><TD>06/29/2012</TD><TD>Error Nbr 3075 - Syntax error (missing operator) in query expression *ProjectID=*.&#x0D;        --&gt; CPASProd.Form_frmWorkOrders.cbProjectID_AfterUpdate, #1, &#x0D; </TD></tr><tr><TD>nfox</TD><TD>06/29/2012</TD><TD>Total number of errors: 1&#x0D; 1. Cannot append.  An object with that name already exists in the collection. (#3367)&#x0D; </TD></tr><tr><TD>nfox</TD><TD>06/29/2012</TD><TD>Total number of errors: 1&#x0D; 1. Cannot append.  An object with that name already exists in the collection. (#3367)&#x0D; </TD></tr><tr><TD>nfox</TD><TD>06/29/2012</TD><TD>Total number of errors: 1&#x0D; 1. Cannot append.  An object with that name already exists in the collection. (#3367)&#x0D; </TD></tr></table></body></html>

残念ながら、改行の代わりに Outlook (またはさらに悪いことに、gmail Web クライアント) でレンダリングすると、代わりに HTML コードが表示されます。

("<br />")

私が間違っていることは何か分かりますか?

4

0 に答える 0