- sp_send_dbmailを使用する方法: SQL Serverには、sp_send_dbmailストアドプロシージャを使用してメールを送信する機能が組み込まれています。以下はその使用例です。
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'YourProfileName',
@recipients = '[email protected]',
@subject = 'Test Email',
@body = 'This is a test email sent from SQL Server.';
上記のコードでは、@profile_name
にはメールプロファイルの名前を指定し、@recipients
には受信者のメールアドレスを指定します。@subject
にはメールの件名、@body
にはメールの本文を指定します。
- CLR (Common Language Runtime) 関数を使用する方法: CLR関数を使用すると、SQL Server内で.NETコードを実行できます。以下は、CLR関数を使用してメールを送信する例です。
まず、CLR関数を作成するために、以下のC#コードを使用してアセンブリを作成します。
using System;
using System.Net;
using System.Net.Mail;
using Microsoft.SqlServer.Server;
public class EmailHelper
{
[SqlFunction]
public static void SendEmail(string from, string to, string subject, string body)
{
using (MailMessage message = new MailMessage(from, to, subject, body))
{
using (SmtpClient smtpClient = new SmtpClient("yourSMTPServer"))
{
smtpClient.Send(message);
}
}
}
}
上記のコードでは、SendEmail
メソッドを使用してメールを送信しています。from
には送信元のメールアドレス、to
には受信者のメールアドレス、subject
にはメールの件名、body
にはメールの本文を指定します。
次に、SQL ServerでCLRオブジェクトを作成します。
CREATE ASSEMBLY EmailHelper
FROM 'C:\Path\To\Your\Assembly.dll'
WITH PERMISSION_SET = SAFE;
CREATE FUNCTION SendEmail
(
@from NVARCHAR(100),
@to NVARCHAR(100),
@subject NVARCHAR(100),
@body NVARCHAR(MAX)
)
RETURNS INT
AS EXTERNAL NAME EmailHelper.EmailHelper.SendEmail;
上記のコードでは、CREATE ASSEMBLY
ステートメントでアセンブリを作成し、CREATE FUNCTION
ステートメントでCLR関数を作成しています。アセンブリのパスは適切に指定してください。
これで、SendEmail
関数を使用してメールを送信することができます。
以上が、SQL Serverからメールを送信するためのいくつかの方法とコード例です。ご参考までにお使いください。