こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

sp_send_dbmailで文字化け

SQL Server2005のストアドプロシージャからsp_send_dbmailを使ってメール送信を行っているのですが、受信したメールの件名、本文が文字化して困っています。
多分、メールの文字コードがUNICODE(UTF-8)である為に文字化けがおきていると思います。

メール送信に必要なテーブルの属性をUnicode データ型のnchar、nvarchar、nvarchar(max) に変更し、ストアドプロシージャで文字列の操作の際にNのプリフィックスを付けてみましたがダメでした。

ベッキーやOutlook Expressなどでは自動的に文字コードが変換されるので、文字化が起こらないのですが、今回のシステムではノーツ又はサイボウズを使用することになっており、こちらでは文字化けおこしてしまいます。

環境ですが以下のとおりです。
・SQL Server2005
・データベースの照合順序はJapanese_CI_ASです。
・WindowsXP

どなたか文字化けをなくす方法をご存知の方、ご教授お願いします。
よろしくお願いします。

投稿日時 - 2007-07-11 19:10:53

QNo.3158976

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

SQL Serverメールがある環境が今手元にないので、
正式には確認できないのですが、
「SET ANSI_DEFAULTS ON」を使ってみるというのは如何でしょうか?

-- SJISにする
SET ANSI_DEFAULTS ON

-- メール送信実行
exec dbo.sp_send_dbmail ......

-- 元に戻す
SET ANSI_DEFAULTS OFF

間違っていたらすいません。

参考URL:http://technet.microsoft.com/ja-jp/library/ms188340.aspx

投稿日時 - 2007-07-16 15:13:31

お礼

ありがとうございます。
やってみましたが、エラーになりました。
以下がストアドになります。

USE [ReportDB]
GO
/****** オブジェクト: StoredProcedure [dbo].[ReportDb_TEST_MAIL2] スクリプト日付: 07/16/2007 17:57:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_DEFAULTS ON
go

CREATE PROCEDURE [dbo].[ReportDb_TEST_MAIL7]
as
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'TEST_PROFILE',
@recipients = 'aaa@bbb.co.jp',
@body = 'あいうえお',
@subject = 'かきくけこ' ;

を実行すると「コマンドは正常に完了しました。」とメッセージが
表示されるのですが、作成されたプロシージャがオブジェクト一覧に
見つからず、ロックエラーが発生します。

また、ストアドにせず、
SET ANSI_DEFAULTS ON
go
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'TEST_PROFILE',
@recipients = 'aaa@bbb.co.jp',
@body = 'あいうえお',
@subject = 'かきくけこ' ;
を実行したのですが、「メールがキューに登録されました。」と
表示されますが、実際にメールは送られてこない状態になります。

で、結局ですが、
http://support.microsoft.com/kb/312839/ja
を参考にしてメールを送信することが出来ました。
SQL CLRも検討したのですが、とりあえず上記のURLを参考に
できましたのでこれでいこうと思います。

投稿日時 - 2007-07-16 18:13:07

あなたにオススメの質問