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.
