복붙노트

[SQL] 어떻게 SQL 서버에서 이메일을 보내?

SQL

어떻게 SQL 서버에서 이메일을 보내?

어떻게 T-SQL을 사용하여 이메일을 보낼 수 있지만 이메일 주소는 테이블에 저장됩니다? 나는 테이블을 통해 루프를 원하는 이메일을 보낼 수 있습니다. 지금까지이 일의 좋은 예를 찾을 수 없습니다 ..

당신의 도움을 주셔서 감사합니다

해결법

  1. ==============================

    1.1 단계) 프로필 및 계정 만들기

    1 단계) 프로필 및 계정 만들기

    당신은 프로파일을 작성해야하고 관리 노드에서 데이터베이스 메일 노드의 구성 데이터베이스 메일 컨텍스트 메뉴에서 액세스 할 수있는 데이터베이스 구성 메일 마법사를 사용하여 계정. 이 마법사는 계정, 프로필 및 데이터베이스 메일 전역 설정을 관리하는 데 사용됩니다.

    2 단계)

    운영:

    sp_CONFIGURE 'show advanced', 1
    GO
    RECONFIGURE
    GO
    sp_CONFIGURE 'Database Mail XPs', 1
    GO
    RECONFIGURE
    GO
    

    단계 3)

    USE msdb
    GO
    EXEC sp_send_dbmail @profile_name='yourprofilename',
    @recipients='test@Example.com',
    @subject='Test message',
    @body='This is the body of the test message.
    Congrates Database Mail Received By you Successfully.'
    

    테이블을 통해 반복하려면

    DECLARE @email_id NVARCHAR(450), @id BIGINT, @max_id BIGINT, @query NVARCHAR(1000)
    
    SELECT @id=MIN(id), @max_id=MAX(id) FROM [email_adresses]
    
    WHILE @id<=@max_id
    BEGIN
        SELECT @email_id=email_id 
        FROM [email_adresses]
    
        set @query='sp_send_dbmail @profile_name=''yourprofilename'',
                            @recipients='''+@email_id+''',
                            @subject=''Test message'',
                            @body=''This is the body of the test message.
                            Congrates Database Mail Received By you Successfully.'''
    
        EXEC @query
        SELECT @id=MIN(id) FROM [email_adresses] where id>@id
    
    END
    

    다음 링크를 http://ms-sql-queries.blogspot.in/2012/12/how-to-send-email-from-sql-server.html에 게시 됨

  2. ==============================

    2.당신은 데이터베이스 메일을 사용하여 SQL Server 내에서 기본적으로 이메일을 보낼 수 있습니다. 이 오류 또는 다른 데이터베이스 이벤트에 대한 시스템 관리자에 통지 훌륭한 도구입니다. 또한 최종 사용자에게 보고서 또는 이메일 메시지를 전송하는 데 사용할 수 있습니다. 이 기본 구문은 다음과 같습니다

    당신은 데이터베이스 메일을 사용하여 SQL Server 내에서 기본적으로 이메일을 보낼 수 있습니다. 이 오류 또는 다른 데이터베이스 이벤트에 대한 시스템 관리자에 통지 훌륭한 도구입니다. 또한 최종 사용자에게 보고서 또는 이메일 메시지를 전송하는 데 사용할 수 있습니다. 이 기본 구문은 다음과 같습니다

    EXEC msdb.dbo.sp_send_dbmail  
    @recipients='user@yourdomain.com',
    @subject='Testing Email from SQL Server',
    @body='<p>It Worked!</p><p>Email sent successfully</p>',
    @body_format='HTML',
    @from_address='Sender Name <sender@yourdomain.com>',
    @reply_to='sender@yourdomain.com'
    

    사용하기 전에 데이터베이스 메일은 데이터베이스 메일 구성 마법사 또는 sp_configure를을 사용하여 활성화해야합니다. 데이터베이스 또는 Exchange 관리자는이를 구성하는 데 도움이해야 할 수도 있습니다. 보다 http://msdn.microsoft.com/en-us/library/ms190307.aspx 과 http://www.codeproject.com/Articles/485124/Configuring-Database-Mail-in-SQL-Server 더 많은 정보를 얻을 수 있습니다.

  3. ==============================

    3.또한 커서 그것을 할 수 있습니다. 당신은 계정 및 프로필 예를 만들었다 고 가정하면 "프로필"및 계정 당신은 이메일, 예를 들어 준비가 보유하고있는 테이블이 "EmailMessageTable는"다음을 수행 할 수 있습니다 :

    또한 커서 그것을 할 수 있습니다. 당신은 계정 및 프로필 예를 만들었다 고 가정하면 "프로필"및 계정 당신은 이메일, 예를 들어 준비가 보유하고있는 테이블이 "EmailMessageTable는"다음을 수행 할 수 있습니다 :

    USE database_name
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE PROCEDURE mass_email AS
    declare @email nvarchar (50) 
    declare @body nvarchar (255)  
    
    declare test_cur cursor for             
    SELECT email from [dbo].[EmailMessageTable]
    
    open test_cur                                        
    
    fetch next from test_cur into   
    @email     
    while @@fetch_status = 0       
    begin                                    
    
    set @body = (SELECT body from [dbo].[EmailMessageTable] where email = @email)
    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'profile',
        @recipients = @email,
        @body = @body,
        @subject = 'Credentials for Web';
    fetch next from test_cur into  
    @email 
    end    
    close test_cur   
    deallocate test_cur
    

    후 당신이해야 할 저장 프로 시저를 실행된다

    EXECUTE mass_email
    GO
    
  4. ==============================

    4.다음은 하나의 @recipients 매개 변수로 테이블에서 전자 메일 주소을 연결하는 방법의 예입니다 :

    다음은 하나의 @recipients 매개 변수로 테이블에서 전자 메일 주소을 연결하는 방법의 예입니다 :

    CREATE TABLE #emailAddresses (email VARCHAR(25))
    
    INSERT #emailAddresses (email) VALUES ('foo@foobar.com')
    INSERT #emailAddresses (email) VALUES ('bar@foobar.com')
    INSERT #emailAddresses (email) VALUES ('buzzlightyear@foobar.com')
    
    DECLARE @recipients VARCHAR(MAX)
    SELECT @recipients = COALESCE(@recipients + ';', '') + email 
    FROM #emailAddresses
    
    SELECT @recipients
    
    DROP TABLE #emailAddresses
    

    그 결과 @recipients은 다음과 같습니다

    foo@foobar.com, bar@foobar.com, buzzlightyear@foobar.com

  5. ==============================

    5.에서 주문 SQL 서버 전송 이메일 알림을 만들기 위해 당신은 관리, 데이터베이스 메일에서 메일 프로필을 작성해야합니다.

    에서 주문 SQL 서버 전송 이메일 알림을 만들기 위해 당신은 관리, 데이터베이스 메일에서 메일 프로필을 작성해야합니다.

    1) 사용자는 마우스 오른쪽 메일 프로필 메뉴를 얻고 구성 데이터베이스 메일을 클릭하여 선택합니다

    2) 다음의 첫 번째 설정 (오픈 데이터베이스 다음 작업을 수행하여 메일)를 눌러 선택 참고 : SMTP가 구성되어 있지 않은 경우 아래의 URL을 참조하시기 바랍니다

    http://www.symantec.com/business/support/index?page=content&id=TECH86263

    3) 번째 화면에서 프로파일 이름을 기입 SMTP 계정을 추가하고 다음 눌러

    4) 메일 계정의 유형을 선택 () 공공 또는 민간 다음 다음을 누릅니다

    5) 옆에 보내는 메일 옵션에 관한 것을 매개 변수 및를 눌러 변경 6) 보도 마무리

    이제 액션 X 당신이 (이것은 일반적인 방법이 아닌 유일한 사람입니다) 트리거 또는 작업을 통해 그렇게 할 수 있었 경우 SQL 서버가 이메일을 보내 확인합니다.

    1) 당신은 그 권리를 마우스 오른쪽 버튼으로 클릭 채용 후 귀하의 예를 들어 이메일)하고 확인을 누릅니다 채우기 (사업자 및 확인 메일을 클릭하고 새 작업을 선택, SQL 서버 에이전트에서 작업을 만들 수 있습니다 당신이 만든 프로파일을 선택에 필요한 정보뿐만 아니라 같은에서 단계, 이름, ... 등 및 알림 탭을 입력합니다.

    2) 트리거는 아래의 예를 참조하십시오에서.

    AS
    declare @results varchar(max)
    declare @subjectText varchar(max)
    declare @databaseName VARCHAR(255)
    SET @subjectText = 'your subject'
    SET @results = 'your results'
    -- write the Trigger JOB
    EXEC msdb.dbo.sp_send_dbmail
     @profile_name = 'SQLAlerts',
     @recipients = 'xxxx@xxxx.com',
     @body = @results,
     @subject = @subjectText,
     @exclude_query_output = 1 --Suppress 'Mail Queued' message
    GO
    
  6. ==============================

    6.때로는 동안 직접 sp_send_dbmail을 찾을 수 없습니다. 당신이 시도하는 'msdb.dbo.sp_send_dbmail'를 사용할 수있다 (작업 윈도우 서버 2008 R2에 대한 벌금과 테스트)

    때로는 동안 직접 sp_send_dbmail을 찾을 수 없습니다. 당신이 시도하는 'msdb.dbo.sp_send_dbmail'를 사용할 수있다 (작업 윈도우 서버 2008 R2에 대한 벌금과 테스트)

  7. ==============================

    7.SQL 서버를 통해 메일을 보내려면 우리는 우리가 하나 프로파일을 작성하는 데 SQL 서버에서 T-SQL 또는 SQL 데이터베이스 메일 옵션을 사용할 수 있습니다 DB 메일 프로필을 설정해야합니다. 코드 아래에 후 쿼리 또는 저장 프로 시저를 통해 메일을 보내는 데 사용됩니다.

    SQL 서버를 통해 메일을 보내려면 우리는 우리가 하나 프로파일을 작성하는 데 SQL 서버에서 T-SQL 또는 SQL 데이터베이스 메일 옵션을 사용할 수 있습니다 DB 메일 프로필을 설정해야합니다. 코드 아래에 후 쿼리 또는 저장 프로 시저를 통해 메일을 보내는 데 사용됩니다.

    아래 링크를 사용 DB 메일 프로필을 만들 수 있습니다

    http://www.freshcodehub.com/Article/42/configure-database-mail-in-sql-server-database

    http://www.freshcodehub.com/Article/43/create-a-database-mail-configuration-using-t-sql-script

    --Sending 테스트 메일 EXEC의 msdb.dbo.sp_send_dbmail @profile_name = '은 testprofile' @recipients은 = '여기에 이메일을 보내려면' @copy_recipients = '여기에 CC 이메일', --For CC 이메일이있는 경우 @ blind_copy_recipients = '여기 BCC 이메일은'--For BCC 이메일이 존재하는 경우 @subject = '다음 메일 제목' @body = '다음 메일 바디' @ body_format = 'HTML', @importance = 'HIGH', @ file_attachments = 'C : \있는 test.pdf'; --For 첨부 파일이있는 경우

  8. from https://stackoverflow.com/questions/13300881/how-to-send-email-from-sql-server by cc-by-sa and MIT license