Conosciamo l’importanza dell’invio di e-mail e il fatto che si tratta di un’attività comune nelle applicazioni odierne. Molte persone che lavorano con Office 365 ci hanno chiesto un’API per inviare e-mail tramite l’API Microsoft Graph. La funzione OAuth 2.0 era un prerequisito per la connessione al server Microsoft e per l’introduzione di comandi per il recupero delle informazioni sugli utenti. Siamo lieti di procedere con la gestione delle e-mail, a partire dal comando invia e-mail.
Connessione all’account
Prima di creare l’e-mail, creeremo l’oggetto di connessione OAuth2 e l’oggetto Office 365.
var $oAuth2: cs.NetKit.OAuth2Provider
var $office365 : cs.NetKit.Office365
$oAuth2:=cs.NetKit.OAuth2Provider.new($param)
$office365:=cs.NetKit.Office365.new($oAuth2;\
New object("mailType"; "Microsoft"))
PREPARARE un’e-mail
Per prima cosa è necessario creare l’oggetto email. 4D supporta ora il tipo di risorsa messaggio di Microsoft Graph. Gli esempi di codice in questo post e l’HDI sono realizzati con questo nuovo oggetto. Ma naturalmente, se si preferisce, si può usare un oggetto mail con un formato JMAP.
Iniziamo specificando l’autore dell’e-mail. L’autore deve essere l’indirizzo e-mail dell’utente collegato, quindi usiamo $office365.user.getCurrent() per riempire automaticamente questo attributo:
$email:=New object
$email.from:=New object
$email.from.emailAddress:=New object
$email.from.emailAddress.address:=$office365.user.getCurrent().userPrincipalName
Se si vuole specificare un indirizzo di risposta diverso dall’indirizzo
Poi i destinatari (usando sintassi diverse):
$addressTo:=New object
$addressTo.emailAddress:=New object
$addressTo.emailAddress.email:="address1@mail.com"
$addressCC:=New object
$addressCC.emailAddress:=New object
$addressCC.emailAddress.email:="address2@mail.com"
$addressCC.emailAddress.name:="Stephen"
// Originating addresses
$email.toRecipients:=new collection($addressTo)
// Carbon Copy
$email.ccRecipients:=new collection($addressCC)
Aggiungiamo quindi un oggetto:
$email.subject:="Hello world"
E il corpo… Si possono specificare due tipi, un testo:
$email.body:=New object
$email.body.content:="Test content mail"
$email.body.contentType:="text"
o HTML:
$email.body:=New object
$email.body.content:="<html><body><h1>Test content mail </h1></body></html>"
$email.body.contentType:="html"
È possibile aggiungere ulteriori informazioni all’e-mail, come ad esempio:
- una richiesta di ricevuta di consegna:
$email.isDeliveryReceiptRequested:=True
- una richiesta di ricevuta di lettura:
$email.isReadReceiptRequested:=True
- un’importanza “bassa”, “normale” o “importante”:
$email.importance:="high"
e altre che troverete nella documentazione!
Creare un allegato
Per aggiungere un allegato, è necessario creare un oggetto allegato:
var $attachmentText : Text
$attachmentText:="Simple text attachement content"
var $attachment : Object
BASE64 ENCODE($attachmentText)
$attachment:=New object
$attachment["@odata.type"]:="#microsoft.graph.fileAttachment"
$attachment.contentId:=Generate UUID
$attachment.isInline:=False
$attachment.name:="attachment.txt"
$attachment.contentType:="text/plain"
$attachment.contentBytes:=$attachmentText
$attachment.size:=Length($attachmentText)
E aggiungerlo all’e-mail in questo modo:
$email.attachments:=New collection($attachment)
Invia e-mail
Ora che l’email è pronta, possiamo inviarla usando la funzione mail.send() dell’oggetto $office365 che abbiamo creato prima:
$status:=$office365.mail.send($email)
E così, l’e-mail è stata inviata!
Guardate questa funzione in azione con l’HDI qui sopra e la documentazione per maggiori dettagli!