SP_SEND_DBMAILを使用して、プレーンテキストメール(ラインブレーク付き)を送信するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3514650

質問

SP_SEND_DBMAILを介して電子メールを送信するSQL Server 2008手順があります。

次のコードを使用しています。

  set @bodyText = ( select 
                      N'Here is one line of text ' +
                      N'It would be nice to have this on a 2nd line ' +
                      N'Below is some data: ' +
                      N' ' +
                      N' ' +
                      field1 +
                      N' ' +
                      field2 +
                      N' ' +
                      N'This is the last line'
                    from myTable )

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'myProfile',
        @recipients = @to,
        @body = @bodyText,
        @body_format = 'TEXT',
        @subject = 'Testing Email' ;

MyProfileはローカルSMTPサーバーを使用するように設定されており、C: InetPub MailRoot Queueで.EMLファイルになります

それらの.emlファイルの1つを開くと(ug-それらを開くことができるのはOutlook Expressだけで、他のものを見るだけで、Base64エンコードされたBlobとして体を表示します。)だから、問題がクライアントにあるのか、それとも

私はメッセージに nを入れようとしましたが、それはうまくいきませんでした。ラインブレークでプレーンテキストを送信して、最終結果が正しく見えることを確認するにはどうすればよいですか?

ところで、私は実際に実際の電子メールクライアントでそれをテストするために電子メールを送信することはできません-Corp。ネットワークはロックダウンされています。

役に立ちましたか?

解決

実際にラインブレイクを挿入していません。以下のように、SQLサーバーの文字列に直接埋め込むことができます。

SET @bodyText = (SELECT N'Here is one line of text 
It would be nice to have this on a 2nd line 
Below is some data: 


' + field1 + N' 

' + field2 + N' 

' + N'This is the last line'
                 FROM   myTable);

または、きちんとしたアプローチはそうかもしれません

DECLARE @Template NVARCHAR(max) = 
N'Here is one line of text 
It would be nice to have this on a 2nd line 
Below is some data: 

##field1##

##field2##

This is the last line';

SET @bodyText = (SELECT REPLACE(
                    REPLACE(@Template, 
                       '##field1##', field1), 
                       '##field2##', field2)
                 FROM   myTable); 

両方ともエラーが発生します myTable 結果をスカラー変数に割り当てるときに、複数の行が含まれています。

他のヒント

私はいつも使用しています CHAR(13)+CHAR(10) TSQLでラインブレーク(Nvarchar値と混合しているように見える)を作成するには、次のようなことを試してください。

DECLARE @CRLF char(2)
       ,@bodyText nvarchar(max)
       ,@field1  nvarchar(10)
       ,@field2  nvarchar(10)
SELECT @CRLF=CHAR(13)+CHAR(10)
      ,@field1='your data'
      ,@field2='and more'

set @bodyText =
                N'Here is one line of text ' 
                +@CRLF+ N'It would be nice to have this on a 2nd line ' 
                +@CRLF+ N'Below is some data: ' + N' ' + N' ' + ISNULL(@field1,'') + N' ' + ISNULL(@field2 + N' ' ,'')
                +@CRLF+ N'This is the last line' 


PRINT @bodyText

出力:

Here is one line of text 
It would be nice to have this on a 2nd line 
Below is some data:   your data and more 
This is the last line

これ CHAR(13)+CHAR(10) 一緒に働きます msdb.dbo.sp_send_dbmail, 、私はそれを常に使用してフォーマットされた電子メールを送信します。

パーティーに遅れたが、 Fernando68 上記の言及は、HTMLメールを許可している場合、@bodyFormat = 'HTML'を設定すると、使用できます <br/> ラインブレイクのために、Line-Breaks、IMG、StrongなどのHTMLから得たすべてのタグを使用して味がしたいのと同じくらい派手になります...

  set @bodyText = ( select 
                      '<h1>My Data</h1><p>Here is one line of text<br/>
                       It would be nice to have this on a 2nd line <br/>
                       Below is some data: <br/>'
                       + field1 + '<br/>'
                       + field2 + '<br/>'
                       + 'This is the last line</p>'
                       from myTable )

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'myProfile',
        @recipients = @to,
        @body = @bodyText,
        @body_format = 'HTML',
        @subject = 'Testing Email' ;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top