SQL Serverからメールを送信する方法


  1. 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にはメールの本文を指定します。

  1. 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からメールを送信するためのいくつかの方法とコード例です。ご参考までにお使いください。