SP_SEND_DBMAILを使用して、プレーンテキストメール(ラインブレーク付き)を送信するにはどうすればよいですか?
-
29-09-2019 - |
質問
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' ;