sql >> Databáze >  >> RDS >> Sqlserver

Odesílání e-mailů s přílohami v SQL Server (T-SQL)

SQL Server nám poskytuje možnost odesílat e-maily prostřednictvím řešení Database Mail. To zahrnuje spoustu uložených procedur, které usnadňují konfiguraci a odesílání e-mailů.

Chcete-li odeslat e-mail, použijte sp_send_dbmail uložené procedury. Tento postup přijímá spoustu volitelných argumentů, z nichž jeden vám umožňuje odesílat přílohy.

Ve skutečnosti existují dva argumenty, které vám umožňují odesílat přílohy. Ten, který použijete, bude záviset na kontextu.

Jsou to:

  • @file_attachments – Umožňuje určit soubor, který se má připojit k e-mailu.
  • @attach_query_result_as_file – To platí pouze v případě, že používáte také @query poslat výsledky dotazu e-mailem.

Příklady níže.

Připojit soubor

@file_attachments argument umožňuje zadat soubor, který se má připojit k e-mailu.

Zde je příklad:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'The attached file contains all required data.',
    @file_attachments = '/var/opt/mssql/bak/Nature.bak',
    @subject = 'File attached as discussed';

Hodnota musí zahrnovat absolutní cestu k souboru.

Ve výchozím nastavení je maximální velikost souboru 1 MB na soubor, ale můžete to změnit pomocí sysmail_configure_sp uložená procedura.

Připojit více souborů

Můžete připojit více souborů tak, že každý název souboru oddělíte středníkem:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'The attached files contain all required data.',
    @file_attachments = '/var/opt/mssql/bak/Nature.bak;/var/opt/mssql/bak/World.bak',
    @subject = 'Files attached as discussed';

Jak již bylo zmíněno, limit velikosti souboru platí pro každý soubor. Pokud je tedy limit velikosti souboru 1 MB, každý soubor v tomto příkladu může mít až 1 MB (výsledkem je celková velikost 2 MB pro obě přílohy dohromady).

Připojit výsledky dotazu

Můžete také použít Database Mail k odeslání výsledku dotazu e-mailem. To se provádí pomocí @query argument. Ve výchozím nastavení jsou výsledky uvedeny v těle e-mailu, ale pokud chcete, můžete je přidat jako přílohu.

Chcete-li je přidat jako přílohu, nastavte @attach_query_result_as_file argument s hodnotou 1 .

Zde je příklad odeslání výsledků dotazu jako přílohy:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'Potential candidates for an Admin job, perhaps?',
    @query = 'SELECT TOP(5) * FROM Artists;',
    @execute_query_database = 'Music',
    @attach_query_result_as_file = 1,
    @subject = 'Query results as discussed';

Při odesílání výsledků dotazu e-mailem máte k dispozici několik možností.

Můžete například použít @query_attachment_filename zadejte název souboru (pokud není zadán, Database Mail jej vytvoří). Můžete také použít @query_result_header argument k určení, zda jsou v dotazu zahrnuta záhlaví, a můžete použít @query_result_no_padding argument k odstranění všech výplní, které jsou automaticky použity na výsledky.


  1. Formátování čísel pomocí odsazení úvodními nulami v SQL Server

  2. Příkaz SQL CASE

  3. Jak spojíte dvě tabulky v poli cizího klíče pomocí django ORM?

  4. Oracle sql:pořadí podle a odlišné klauzule