Für die Erstellung einer neuen E-Mail auf der Grundlage einer angegebenen E-Mail-Vorlage steht die DOCUframe-Funktion „DBEMailCreateFromTemplate“ zur Verfügung. Allerdings werden dabei die Druck-Makros in der E-Mail-Vorlage nicht ausgeführt.
Das folgende Makro erstellt eine neue E-Mail auf der Grundlage der angegebenen E-Mail-Vorlage und führt dabei alle vorhanden Platzhalter/Druck-Makros aus. Es können sogar Platzhalter in der Betreff-Zeile verwendet werden.
BOOL createEMailFromTemplateName( STRING TmplName, AdresseNr Adr, DBOBJECT &Eml ) BOOL ok = FALSE; // Makro-Rückgabewert STRING EMailBetreff, EMailText, EMailHtml; Druckdaten PrintData; EMailVorlageAllSet EmlVorlAS; EMailVorlageSet EmlVorlS; EMailVorlage EmlVorl; IF( !StrIsEmpty( TmplName ) ) // nur, wenn ein Template-Name übergeben wurde DBASSortByIndex( EmlVorlAS, "_Name" ); // E-Mail-Vorlagen sortieren IF( DBASFindKeyStr( EmlVorlAS, TmplName ) ) // E-Mail-Vorlage suchen IF( DBASGet( EmlVorlAS, EmlVorl ) ) DBOCreate( PrintData, "Druckdaten", TRUE ); // temporäre Druckdaten anlegen DBPrintDataSetAddress( PrintData, Adr ); // Adresse für Druckdaten setzen IF( DBEMailGetText( EmlVorl, EMailText ) ) DBExecPrintMacros( EMailText, PrintData ); // Druck-Makros für Plain-Text ausführen ENDIF IF( DBEMailGetHtml( EmlVorl, EMailHtml ) ) DBExecPrintMacros( EMailHtml, PrintData ); // Druck-Makros für HTML-Text ausführen ENDIF EMailBetreff = EmlVorl.Betreff; // Betreff aus E-Mail-Vorlage in Variable übernehmen DBExecPrintMacros( EMailBetreff, PrintData ); // evtl. Platzhalter in Betreffzeile ausführen ok = DBEMailCreate( EmlVorl.Absender, Adr.EMailAdresse, EMailBetreff, EMailText, EMailHtml, "", Eml ); IF( ok ) // nur, wenn die E-Mail erstellt wurde DBDocAssign( Eml, Adr ); // E-Mail der Adresse zuordnen ENDIF ENDIF // E-Mail-Vorlage aus Liste gezogen ENDIF // Email-Vorlage gefunden ENDIF // Template-Name übergeben RETURN( ok )