…eine E-Mail über SMTP senden

Dieses Kapitel beschreibt wie man auf einfache Art und Weise eine E-Mail über SMTP verschicken kann mit dem konvertierten Dokument als Anhang.

Bemerkung

Die Programmausschnitte wurden in JavaScript geschrieben und können im PDFCreator Verzeichnis unter COMScripts/JS Scripts/How To gefunden werden. Die folgenden Programmzeilen wurden dem EmailSmtp.js Skript entnommen und können deshalb dort ausgeführt werden.

Los geht’s

  1. Zunächst holt man sich eine Referenz auf die PDFCreator Auftragswarteschlange, indem man die ActiveXObject(„ProgID“) Methode aufruft. Anschließend initialisiert man das COM-Objekt(welches im Grunde die Auftragswarteschlange ist) mit der Initialize() Methode .

var PDFCreatorQueue = new ActiveXObject("PDFCreator.JobQueue");
PDFCreatorQueue.Initialize();

//Sets up the path where the converted pdf file should be saved in
var fullPath = objFSO.GetParentFolderName(WScript.ScriptFullname) + "\\TestPage.pdf";
  1. Falls man auf das Eintreffen nur eines Druckauftrages wartet, so sollte die Methode WaitForJob(int timeOut) aufgerufen werden. Der Parameter timeOut spezifiziert wie Lange auf das Eintreffen des Druckauftrages gewartet werden soll. Diese Methode ist deshalb von höchster Wichtigkeit, weil jeder neu ausgelöste Druckjob etwas Zeit braucht bis er von der Druckerwarteschlange zur Auftragswarteschlange des PDFCreators ankommt. Sollte die Eigenschaft NextJob aufgerufen werden, ohne dass auf den Druckauftrag gewartet wurde, so kann es passieren, dass NextJob Null zurückgibt, obwohl der Druckauftrag ein paar Zeilen zuvor ausgelöst wurde.

if(!PDFCreatorQueue.WaitForJob(10))
{
    WScript.Echo("The print job did not reach the queue within 10 seconds");
}
  1. Nun kann der nächste Druckauftrag aus der Auftragswarteschlange durch die Eigenschaft NextJob entnommen werden. Dadurch hat man eine Referenz auf den vordersten Auftrag in der Auftragswarteschlange.

var job = PDFCreatorQueue.NextJob;
  1. Das Profil des Auftrages kann mit SetProfileByGuid(guid) gesetzt werden. Der guid Parameter ist ein String, der das Profil bestimmt, das gesetzt wird (siehe Auflistung unten). Es ist auch möglich ein Profil über dessen Namen zu setzen mit Hilfe der Methode SetProfileByName(„MyNameForACertainProfile“). Bei den Standardprofilen sind Name und guid identisch.

job.SetProfileByGuid("DefaultGuid");
  1. Die E-Mail SMTP Einstellungen ändern mit Hilfe der SetProfileSetting Methode des PrintJob Objektes. Alle Variablen, die im weiteren Verlauf genutzt werden, wurden zu Anfang eingeführt.

     //Since we want to send the converted file, we have to add the EmailSmtp action
     job.AddAction("EmailSmtp");

     //Setting up the address that should be displayed as sender.
     job.SetProfileSetting("EmailSmtp.Address", address);

     //Setting up the recipients
     job.SetProfileSetting("EmailSmtp.Recipients",recipients);

     //Setting up the SMTP server port
     job.SetProfileSetting("EmailSmtp.Port",port);

     //User name for authentication at server
     job.SetProfileSetting("EmailSmtp.UserName",username);

     //Password for authentication at server
     job.SetProfileSetting("EmailSmtp.Password",password);

     //Setting up host name of the e-mail server
     job.SetProfileSetting("EmailSmtp.Server",server);

     //Setting up the subject of the mail
     job.SetProfileSetting("EmailSmtp.Subject",subject);

For more information on e-mail SMTP settings see the **Reference
Manual/Settings** section.
  1. Nun ist der Druckauftrag fertig für die Konvertierung danach wird er als Anhang an der E-Mail verschickt.

//fullPath was introduced above
job.ConvertTo(fullPath);
  1. Die Eigenschaft IsFinished informiert über den Konvertierungsstatus. Falls der Prozess abgeschlossen wurde, liefert IsFinished den Wert Wahr zurück. Möchte man wissen, ob der Druckauftrag erfolgreich erledigt wurde, so sollte man die Eigenschaft IsSuccessful in Betracht ziehen.

    Es liefert Wahr, falls der Druckauftrag erfolgreich konvertiert wurde.

if(!job.IsFinished || !job.IsSuccessful)
{
     WScript.Echo("Error in process");
}
  1. Nach der Nutzung des COM Objektes darf man nicht vergessen, es wieder freizugeben, indem man die Methode ReleaseCom() aufruft, ansonsten kann keine andere PDFCreator Instanz arbeiten.

PDFCreatorQueue.ReleaseCom();