Dieses Skript zeigt, wie ein generiertes Dokument über einen SMTP-Server versendet werden kann.
Konfiguration
Es handelt sich um einen Exporter der ein Dokument generiert (Word, Excel, Text).
Das Skript wird als AfterClosingDocument ausgeführt.
Ideen
Im AfterClosingDocument-Event ist das Dokument fertig generiert und abgespeichert und geschlossen. Es kann daher einfach via SMTP versendet werden.
In diesem Beispiel wird eine feste Text-Vorlage verwendet.
Grundsätzlich kann dies durch einen Text-Exporter erweitert werden, dann müsste zuerst das Dokument generiert werden und in einem Dokumentfeld hinterlegt werden.
Im Anschluss daran könnte via Text-Exporter eine personifizierte Mail generiert werden.
Skript
// Version 5namespaceRuthardt.PrintPlus.Skripting{usingSystem;usingSystem.Net;usingSystem.Net.Mail;usingRuthardt.CobraBase.Functions.Access.Ado;usingRuthardt.PrintPlus.Model.Interfaces; /// <summary> /// Versendet das aktuelle Dokument im Anhang einer Mail via SMTP. /// "ActionType": "AfterClosingDocument" /// </summary>publicclassDokumentPerSMTP:IScriptAction {publicvoidExecute(IPrintContext printContext,ICurrentContext currentContext,IChildContext childContext) {try { // AdoView ist hier Adressevar adresse =currentContext.Data; // Empfänger aus der Adresse auslesenvar receiver =adresse.GetStringValue("TODO Emailfeld"); // Mailversandusing (var message =newMailMessage { Subject ="TODO Betreff", Body ="TODO HTML Mailtext", From =newMailAddress("TODO Absender"), IsBodyHtml =true }) {message.To.Add(receiver);message.Attachments.Add(newAttachment(currentContext.DocumentFileName.FullName));var smtpServer ="TODO SMTP Server";var smtpPort =25; //"TODO SMTP Port";var smtpUser ="TODO SMTP User";var password ="TODO SMTP Password";using (var smtpClient =newSmtpClient(smtpServer) { EnableSsl =true, Port = smtpPort, Credentials =newNetworkCredential(smtpUser, password) }) {var securityProtocol = (int)System.Net.ServicePointManager.SecurityProtocol; // 0 = SystemDefault in .NET 4.7+if (securityProtocol !=0) { // Auch in älteren .NET Versionen nur noch TLS 1.2 verwenden; ältere TLS-Versionen machen ProblemeSystem.Net.ServicePointManager.SecurityProtocol=System.Net.SecurityProtocolType.Tls12; }smtpClient.Send(message); } } }catch (Exception ex) { // Fehler anzeigenprintContext.WaitFormManager.ShowMessageBox("Es ist ein Fehler aufgetreten: "+ex.Message); } } }}