Versenden von E-Mails mit mehreren Anhängen aus der Codeunit 397

Versenden von E-Mails mit mehreren Anhängen aus der Codeunit 397

  • Comments 0

Dieser Beitrag behandelt die Codeunit 397 Mail.

Die Standard Codeunit 397 ist so konzipiert, dass nur ein Anhang versendet werden kann. Es gibt Situationen da möchte man mehr als einen Anhang über diese Codeunit versenden.

Das kann relativ einfach durch Erweiterungen des bestehenden Codes erreicht werden.

In diesem Beispiel habe ich die benötigten Funktionen aus der Codeunit 397 heraus kopiert um diese Funktion in einer neuen Codeunit zu testen.

Ich habe mir für diese Zwecke eine neue Codeunit erstellt mit den folgenden kopierten globalen Variablen aus den Codeunit 397:

OApplication    Automation    'NS Outlook Synchronization Handler'.OApplication   
OAttachment    Automation    'NS Outlook Synchronization Handler'.OAttachment   
OAttachments    Automation    'NS Outlook Synchronization Handler'.OAttachments   
OSendMail    Automation    'NS Outlook Synchronization Handler'.OSendMail    BSTRConverterBody    Automation    'Navision Attain Hash 1.0'.BSTRConverter   
BSTRConverterAttachFileName    Automation    'Navision Attain Hash 1.0'.BSTRConverter   
HideDialog    Boolean       
ErrorNo    Integer
     

Zusätzliche habe ich eine wie in Codeunit 397 eine neue Funktion Namens NewMessage hinzugefügt mit den folgenden lokalen Parametern:

Var      Name           DataType    Subtype    Length
Nein    ToName Text        80
Nein    CCName  Text        80
Nein    Subject    Text        260
Nein    Body    Text        260
Nein    AttachFileName    Text        260
Nein    OpenDialog    Boolean       
Nein    AttachFileName2    Text        260

Die Erweiterungen habe ich an dieser Stelle Rot markiert.

OnRun()
// Der Aufruf der NewMessage Funktion beinhlatet die folgenden Parameter ToName, CCName, Subject, Body, Attachment1, Open Dialog und Attachment2. Die Attachments habe ich zur verreinfachung von der Festplatte geladen.
NewMessage('Info@contoso.info','','Test-Email','Hallo Welt','d:\Attachment1.txt',FALSE,'d:\Attachment2.txt');

Trigger NewMessage:
IF ISCLEAR(OApplication) THEN
  CREATE(OApplication);

IF (NOT OApplication.Logon(TRUE,'','',FALSE,FALSE)) THEN BEGIN
  OApplication.Logoff;
  EXIT
END;

IF ISCLEAR(OSendMail) THEN
  CREATE(OSendMail);

ErrorNo := 0;

OSendMail."To" := ToName;
OSendMail.CC := CCName;
OSendMail.Subject := Subject;

IF ISCLEAR(BSTRConverterBody) THEN
  CREATE(BSTRConverterBody);

IF Body <> '' THEN BEGIN
  BSTRConverterBody.ResetBSTR;
  BSTRConverterBody.AppendNextStringPortion(Body);
END;
OSendMail.Body := BSTRConverterBody;

IF ISCLEAR(BSTRConverterAttachFileName) THEN
  CREATE(BSTRConverterAttachFileName);

IF AttachFileName <> '' THEN BEGIN
  BSTRConverterAttachFileName.ResetBSTR;
  BSTRConverterAttachFileName.AppendNextStringPortion(AttachFileName);
  OAttachments := OSendMail.Attachments;
  OAttachment := OAttachments.Add(BSTRConverterAttachFileName);
END;

//Das ist der weitere Anhang.
IF AttachFileName2 <> '' THEN BEGIN
  BSTRConverterAttachFileName.ResetBSTR;
  BSTRConverterAttachFileName.AppendNextStringPortion(AttachFileName2);
  OAttachments := OSendMail.Attachments;
  OAttachment := OAttachments.Add(BSTRConverterAttachFileName);
END;

OSendMail.OpenDialog := OpenDialog;

MailSent := OSendMail.Send;
ErrorNo := OSendMail.ErrorStatus;
OApplication.Logoff;

Die Codeunit ist nun so aufgebaut, das die Funktion NewMessage aus dem OnRun Trigger mit den angegebenen Parametern aufgerufen wird.

Sie können so viele Anhänge-Parameter dieser Funktion hinzufügen wie Sie benötigen,

These postings are provided "AS IS" with no warranties and confer no rights. You assume all risk for your use.

Mit freundlichen Grüßen

Sebastian Röttel

Microsoft Dynamics Germany

Microsoft Customer Service and Support (CSS) EMEA

Leave a Comment
  • Please add 5 and 1 and type the answer here:
  • Post