B-Arts DocumentationIndice generale

BSMTP - Esempi

Invio SMTP tramite .NET

using B.BMail;

BSenderMailConfig config = new BSenderMailConfig(
  "smtp.example.com",
  587,
  "notifications@example.com",
  password,
  ssl: true);

using BSMTP smtp = new BSMTP(config);
smtp.Allegati.Add(reportPath);

bool sent = smtp.InviaMail(
  destinatario: "first@example.com;second@example.com",
  oggetto: "Elaborazione completata",
  body: "Il processo è terminato." + Environment.NewLine + "Controllare il report.",
  replyTo: "support@example.com",
  aliasMittente: "B-Arts",
  cc: "supervisor@example.com");

if (!sent)
{
  foreach (Exception error in smtp.ExceptionList)
  {
    // Registrare o mostrare l'errore secondo le regole dell'applicazione.
  }
}

Gli indirizzi passati come stringa sono separati da ;. Il corpo viene racchiuso in HTML e i terminatori di riga della piattaforma vengono convertiti in <br />. Gli allegati inesistenti vengono esclusi e aggiungono un elemento a ExceptionList, senza impedire automaticamente l'invio degli altri contenuti.

Preparazione tramite proprietà

using BSMTP smtp = new BSMTP(config)
{
  AliasMittente = "B-Arts",
  ReplyTo = "support@example.com",
  Oggetto = "Avviso",
  Body = "Messaggio applicativo"
};

smtp.Destinatari.Add("operations@example.com");
smtp.Cc.Add("supervisor@example.com");

bool sent = smtp.InviaMail();

I parametri non vuoti di InviaMail sostituiscono le corrispondenti proprietà; passando stringhe vuote vengono mantenuti i valori già presenti nell'istanza.

Invio asincrono .NET

using BSMTP smtp = new BSMTP(config)
{
  AsyncCall = true
};

bool accepted = smtp.InviaMail(
  "operations@example.com",
  "Avvio elaborazione",
  "Il messaggio è stato affidato al client SMTP.");

// mailSent viene aggiornato dal callback al termine dell'operazione.
// Per richiedere l'annullamento:
smtp.AnnullaInvioEmailNET();

Con AsyncCall = true, il valore restituito indica l'avvio senza eccezioni immediate, non la consegna del messaggio. Al completamento mailSent diventa true anche in caso di annullamento o errore; consultare ExceptionList per il messaggio prodotto dal callback.

Invio tramite SQL Server Database Mail

using B.BData;
using B.BMail;

BSenderMailConfig config = new BSenderMailConfig
{
  SenderType = BSenderMailConfig.eSenderType.eSQLSERVER,
  NomeProfilo = "BArtsFramework",
  Username = "notifications@example.com"
};

using BConnection connection = new BConnection(GetDatabaseSetting());
using BSMTP smtp = new BSMTP(config)
{
  Cnn = connection,
  AliasMittente = "B-Arts"
};

bool queued = smtp.InviaMail(
  "operations@example.com",
  "Notifica database",
  "Operazione completata");

int mailItemId = smtp.MailItem_ID;

Il sender SQL richiede Cnn e le stored procedure B-Arts BSP_sysMail_Active, BSP_sysMail_INSERT, BSP_sysMail_DELETE, BSP_sysMail_SELECT e BSP_sysSendMail. InviaMail restituisce true quando BSP_sysSendMail produce un identificativo diverso da -1.

Gestione del profilo Database Mail

smtp.ActiveDBMail(enable: true);
bool active = smtp.StateDBMail();

bool created = smtp.CreaProfiloDBMail();
DataTable? profiles = smtp.GetProfiloDBMail();
bool deleted = smtp.EliminaProfiloDBMail();

Queste operazioni lavorano esclusivamente tramite Cnn. In assenza della connessione, i metodi booleani restituiscono false, GetProfiloDBMail restituisce null e ActiveDBMail non esegue operazioni.

Sender CDO