[Gelöst] Daten aus Tabelle in eine Email

4. November 2008 16:39

Hallo,

ich möchte den Inhalt einer Tabelle in den Body einer Email schreiben.
Hat das schon mal jemand gemacht???
Outlook wird direkt über den Automation Server angesprochen.
Zuletzt geändert von winkelsbr am 7. November 2008 08:34, insgesamt 1-mal geändert.

Re: Daten aus Tabelle in eine Email

5. November 2008 09:42

Nach dem stöbern hier im Forum, habe ich das ganze mal mit der MAPI-OCX versucht.
Bei einem Beitrag bin ich auch den Tip mit ADDBodyLine gestoßen. Nur diese Funktion habe ich nicht.

Mein Problem sieht wie folgt aus:
Ich setzte auf die Tabelle Debitor zwei Filter (Gesperrt und "Korrigiert am"). Die dann verbleibenden Debitoren sollen in den Mailbody geschrieben werden.
Ich finde jedoch keine Möglichkeit, mehrere Zeilen in den Mailbody hintereinander zuschreiben.

Re: Daten aus Tabelle in eine Email

5. November 2008 10:34

Da man über Outlook auf 1024 Zeichen im Body beschränkt ist, habe ich so etwas ähnliches seinerzeit mit einer Smtp-ocx gelöst (ich glaube, mit der hier: http://www.mibuso.com/dlinfo.asp?FileID=366).

Nachteil ist, dass man das auf jedem Client installieren muss, von dem es genutzt werden soll.

Re: Daten aus Tabelle in eine Email

5. November 2008 10:37

Mit werlcher Version Arbeitest Du? In einer 3.7er STD-DB habe ich die Codunit 'Mail' (id 397) die das Mailhandling zu können scheint.

Re: Daten aus Tabelle in eine Email

5. November 2008 10:52

@McClane
Danke für den Tip, werde ich mal testen

@Markus Merkl
Wir arbeiten mit 3.6. Ich habe ja auch die Codeunit. Problem ist nur, dass die Datensätze unterschiedlich lang sind.
Und bei der Einschrankung von 1024 Zeichen gibt es Probleme geben.

Ich habe mir eine kleine Testroutine in anlehnung an die Codeunit geschrieben. Aber wie gesagt, reicht das so nicht. Ich habe es auch mal testhalber die MSMAPI32.OCX von der 5er-Version versucht. Dort konnte ich aber die Funktion "Addbodyline" auch nicht finden.

Re: Daten aus Tabelle in eine Email

5. November 2008 11:00

winkelsbr hat geschrieben:@Markus Merkl
Wir arbeiten mit 3.6. Ich habe ja auch die Codeunit. Problem ist nur, dass die Datensätze unterschiedlich lang sind.
Und bei der Einschrankung von 1024 Zeichen gibt es Probleme geben.


Achso da ist der Hund begraben:
was spricht gegen ein $mailline(copystr(text,i,1024)) mit i=1..ende? D.H. die Zeile auf 1024er Häppchen verteilen?

Re: Daten aus Tabelle in eine Email

5. November 2008 11:23

HAllo Markus,

Markus Merkl hat geschrieben:Achso da ist der Hund begraben:
was spricht gegen ein $mailline(copystr(text,i,1024)) mit i=1..ende? D.H. die Zeile auf 1024er Häppchen verteilen?


jetzt steh ich auf dem Schlauch! Gerne würde ich ja die Zeile aufsplitten. Nur finde ich keinen Befehl, womit er mir mehrere Zeilen in die eigentliche Nachricht schreibt.

Hier mal der Code:
Code:
MAPISession.DownLoadMail := FALSE;
IF MAPISession.SessionID = 0 THEN
   MAPISession.SignOn;
MAPIMitteilungen.SessionID := MAPISession.SessionID;

MAPIMitteilungen.Compose;

MAPIMitteilungen.RecipIndex := MAPIMitteilungen.RecipCount;
MAPIMitteilungen.RecipType := 1;
MAPIMitteilungen.RecipDisplayName := 'email@empfaenger.de';

MAPIMitteilungen.MsgSubject := 'Subject';

deb.RESET;
deb.SETRANGE(Gesperrt,TRUE);
deb.SETRANGE("Korrigiert am" := TODAY);
IF deb.FIND('-') THEN
   REPEAT
      MAPIMitteilungen.MsgNoteText := COPYSTR('%1 %2 %3',debNr,debName,gedate);
   UNTIL deb.NEXT = 0;

MAPIMitteilungen.Action(3); // Sende


In der versendeten Email steht immer nur die letzte Zeile drin.

Re: Daten aus Tabelle in eine Email

5. November 2008 12:11

winkelsbr hat geschrieben:
Code:
IF deb.FIND('-') THEN
   REPEAT
      MAPIMitteilungen.MsgNoteText := COPYSTR('%1 %2 %3',debNr,debName,gedate);
   UNTIL deb.NEXT = 0;

In der versendeten Email steht immer nur die letzte Zeile drin.


So wie's aussieht überscheibst Du ja auch den Msg-Text immer wieder mit dem aktuellsten Datensatz; Ich würde mal nach einer Methode 'createnewline' suchen oder 'einfach' mal den Text wegschreiben oder ein cr/lf als Datensatztrenner am Zeilenende dazuscheiben.

Re: Daten aus Tabelle in eine Email

5. November 2008 12:37

Das mit dem CR habe ich schon probiert. Ich finde einfach keine Möglichkeit, eine "neue" Zeile in den Body zu schreiben.

Habe das mal mit einem statischen Code versucht. Hier ein Beispiel mit Outlook als AutomationServer:
Code:
vbCR := 13;  // Code für CR

CLEAR(OutlookAppl);
CREATE(OutlookAppl);


OutlookItem := OutlookAppl.CreateItem(0);    // olMailItem

OutlookReceipts := OutlookItem.Recipients();
OutlookReceipt := OutlookReceipts.Add('welcome@w-winkelstraeter.de');

OutlookReceipt.Type(1);
OutlookItem.Subject := 'gesperrte Debitoren';

OutlookItem.Body := 'Zeile 1' + FORMAT(vbCR);
OutlookItem.Body := 'Zeile 2' + FORMAT(vbCR);
OutlookItem.Send();

Re: Daten aus Tabelle in eine Email

5. November 2008 12:39

Es ginge mit
Code:
OutlookItem.Body := 'Zeile 1' + FORMAT(vbCR);
OutlookItem.Body := OutlookItem.Body+'Zeile 2' + FORMAT(vbCR);

aber bei 1024 Zeichen ist leider Schluss mit lustig; dann ist der Body voll.

Re: Daten aus Tabelle in eine Email

5. November 2008 13:13

na dann versuche ich es mal so.

Re: [Gelöst] Daten aus Tabelle in eine Email

7. November 2008 08:34

wenn auch nicht die gewünschte Lösung, habe ich mich halt mit den 1024 Zeichen begnügt.