Seite 1 von 1

Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Sa, 22. Nov 2014 17:43
von MichaMB
Hallo zusammen,

nachdem nun aus xbase++ mittels dem PRG emoSendMail eine Email in Outlook 2013 mit
E-Mail Adresse, (Emilwer)
Betreff, (Betrmail)
Text, (infmess0) bis (infmess12)
und Anhang (verzword)+(Anlage1) (Verzeichnis und Datei)
aus eigenen Variablen richtig erstellt wird,

Code: Alles auswählen

PROCEDURE DemoSendMail()
   Local cAdresses    := (Emilwer)
  local cSubject     := (Betrmail)
  local cMessage     := (infmess0)+(Chr(13))+(Chr(13))+(infmess1)+(Chr(13))+(Chr(13))+(infmess2)+(Chr(13))+(Chr(13))+(infmess3)+(Chr(13))+(Chr(13))+(infmess4)+(Chr(13))+(infmess5)+(Chr(13))+(infmess6)+(Chr(13))+(Chr(13))+(infmess7)+(Chr(13))+(infmess8)+(Chr(13))+(infmess9)+(Chr(13))+(infmess10)+(Chr(13))+(infmess11)+(Chr(13))+(infmess12)+(VERZBMP2)
  local cAttachments := (verzword)+(Anlage1)
  local nFlag        :=  NOFLAG
  local nErr
habe ich noch 2 Fragen:

1. wie lautet die Syntax wenn ich 2 oder 3 Anhänge verschicken möchte? oder geht das so gar nicht?

2. meine *.BMP mit Verzeichnis erscheint nur als Verzeichnislink, nicht als Bild

das Verzeichnis wird im main.PRG gespeichert

Code: Alles auswählen

 public VERZBMP2
  store substr(FESTWO,1,1) + ":\MXXXXZ\MXXX\bmp\VXXA_1.BMP" to verzbmp2
*.BMP ausdrucken auf meinem Drucker in Xbase++ geht, aber versenden?
z.B.

Code: Alles auswählen

#define GRAPHICS_PRINTER
#include "migrate.ch"
set device to print
      @ 0, 67, 5, 77 IMAGE (VERZBMP2)
vielen Dank schon mal im voraus
lG Micha

Re: Outlook 2007 display()-Fehler

Verfasst: Sa, 22. Nov 2014 19:21
von brandelh
Hallo,

wenn du für Programmcode die Schaltfläche CODE oben verwendest, kann man es leichter lesen ;-)
Ich mach das mal in deinem Beispiel nachträglich ...

Zur Frage, ich meine dass man eMailadressen mit ";" verketten kann, vielleicht geht das auch bei Attachements.

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Sa, 22. Nov 2014 21:17
von MichaMB
Hallo Hubert,

leider geht ";" nicht

Code: Alles auswählen

local cAttachments := (verzword)+ '\BUEPOB.PDF' 
funktioniert
sobald man etwas mit ";" anhängt findet das Programm die Datei nicht mehr
z.B.

Code: Alles auswählen

local cAttachments := (verzword)+ '\BUEPOB.PDF' ;(verzword)+ '\BUEPLogo.PDF' 
kommt Fehlermeldung:

Code: Alles auswählen

EMAILOUT.PRG(448:0): warning XBT0106: Procedure DemoSendMail does not end with RETURN
EMAILOUT.PRG(449:0): error XBT0232: LOCAL declaration follows executable statement
so geht es doch !!!!!

Code: Alles auswählen

  Local cAttachments :=  "C:\MBNETZ\MAB\DRUWORD\\BUEPOB.PDF;C:\MBNETZ\MAB\DRUWORD\\BUEPLogo.PDF"
jetzt muss ich nur noch ausprobieren wie das mit unterschiedlich vielen Variablen funktioniert

Danke vielmals
durch das richtige Anzeigen des Codes in meiner Frage bin ich drauf gekommen :banghead:
LG Micha

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Sa, 22. Nov 2014 21:57
von DelUser01
Hallo Michael

was ist "emoSendMail" ?

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Sa, 22. Nov 2014 21:59
von MichaMB
Jetzt habe ich die Lösung gefunden!

Code: Alles auswählen

// waehlt die Anzahl der Anhaenge aus, je nach Email-Art mit z.B. 1, 2 oder 3 Anhaengen
Public AnzAnhaenge
  store 2 to AnzAnhaenge
// ist die Variable die die Anh„nge fr
Public Anhangx
  do case
    case anzAnhaenge = 1
      store '"'+substr(FESTWO,1,1) + ':\MBNETZ\MAB\DRUWORD\BUEPOB.PDF' + '"' to Anhangx
    case anzAnhaenge = 2
      store '"'+substr(FESTWO,1,1) + ':\MBNETZ\MAB\DRUWORD\BUEPOB.PDF;'+substr(FESTWO,1,1) + ':\MBNETZ\MAB\DRUWORD\BUEPLogo.PDF'+'"' to Anhangx
    case anzAnhaenge = 3
      store '"'+substr(FESTWO,1,1) + ':\MBNETZ\MAB\DRUWORD\BUEPOB.PDF;'+substr(FESTWO,1,1) + ':\MBNETZ\MAB\DRUWORD\BUEPOB.PDF;'+substr(FESTWO,1,1) + ':\MBNETZ\MAB\DRUWORD\KUEPLogo.PDF'+'"' to Anhangx
  otherwise


      store '"'+substr(FESTWO,1,1) + ':\MBNETZ\MAB\DRUWORD\BUEPOB.PDF'+ '"' to Anhangx
  endcase
dann in der Anwendung
PROCEDURE DemoSendMail()

Code: Alles auswählen

 Local cAttachments :=  &Anhangx
LG Micha

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Sa, 22. Nov 2014 22:20
von MichaMB
Hallo Roland,

das war der Tipp von Jimmy
http://www.alaska-software.com/download ... section=12

hier findest du beim Download auch die "PROCEDURE DemoSendMail() "

Diese habe ich nun so lange modifiziert, bis ich Sie in mein Xbase++ Programm Kundenverwaltung einbauen kann
Ich wähle einen Kunden aus...
wähle den gewünschten Druck-Vorgang aus,
dann öffne ich mittels

Code: Alles auswählen

                ? RunShell( "KUEPLogo.bat", "C:\MBNETZ\MAB\DRUWORD\KUEPLogo.bat" )                
eine Batch-Datei die die Word-Datei mit Serienbrieffunktion und einem Makro öffnet

Code: Alles auswählen

@echo off
cls
@echo off
echo.    Aufruf Word.doc
echo.
start c:\mbnetz\MAB\druword\BUEPLogo.docx / update_und_wo_dbf (Makro)
:ende

eine Word-Datei auf, diese ist mit einer *.DBF als Serienbrief (auch mehrseitig) verknüpft
diese speichert sich mittels eine Makros als *.Pdf (mit dem Namen des Kunden und dem Vorgang)
durch Hilfe des Xbase-Programmes gleich im richtigen Kundenverzeichnis bei diesem Kunden im entsprechenden Vorgangsverzeichnis
und nun öffnet sich die Email und ich habe alle Daten zum senden an den Kunden fertig in der Mail :D
das erspart mir künftig viele umständliche einzelne Arbeitsschritte
Lg
Micha

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Sa, 22. Nov 2014 22:43
von DelUser01
Hallo Michael

habe inzwischen auch bemerkt dass das nur ein Schreibfehler war und "DemoSendMail" heißen sollte...

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: So, 23. Nov 2014 1:52
von MichaMB
hat mir noch jemand eine Tipp?

Thema Procedure DemoSendmail
meine *.BMP mit Verzeichnis erscheint nur als Verzeichnislink, nicht als Bild
wie kann man eine *.BMP in den Emailtext integrieren?

Code: Alles auswählen

  // Verzbmp2 := substr(FESTWO,1,1) + ':\MBNETZ\MAB\bmp\VEMA_1.BMP'
local cMessage     := (infmess0)+(Chr(13))+(Chr(13))+(infmess1)+(VERZBMP2)       
LG Micha

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: So, 23. Nov 2014 2:48
von AUGE_OHR
MichaMB hat geschrieben:wie kann man eine *.BMP in den Emailtext integrieren?
es muss RTF oder Html sein damit du ein Image "einbetten" kannst.

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: So, 23. Nov 2014 10:51
von MichaMB
Hallo Jimmy,

Mein Outlook verfasst die Nachrichten in Html
Dort kann man in der Signatur ein Bild mit integrieren, wenn allerdings E-Mail Outlook von Xbase++ aufgerufen wird, dann erscheint das Fenster ohne Signatur.
Da wir von verschiedenen Absendern die Impressum anpassen müssen, ist es auch gut, wenn ich das mit Datensätzen, so wie bereits programmiert, befüllen kann.
Ich wähle dazu variable Sätze aus einer Datenbank die man dann für die einzelnen User vorbelegen kann. Der Inhalt der Anrede und der jeweilige E-Mail-Haupttext wird aus dem Programm gesteuert. Leider fehlt nun nur noch die Optik wegen dem fehlenden Bild
Das Bild müsste doch auch mit in den Anhang übergeben werden, oder?

hast du mir bitte ein kurzes Beispiel?
lG Micha

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Mo, 24. Nov 2014 19:58
von MichaMB
Hallo liebe Spezialisten,

brauche dringend Eure Hilfe! Muss leider dazusagen, bin ein absoluter Laie und brauche immer ein Beispiel um es zumindest anwenden zu können

Wie kann ich verhindern, das mein Programm weiterläuft während das aufgerufene Batch-Programm mit der verknüpften Word-Datei Serienbrief und abspeichern als XY.DBF noch nicht fertig ist

Code: Alles auswählen

    
    case upper(KOM) = 'MV'
          store .f. to DF3
          if upper(lobrief) = "L"
            ? RunShell( "MVP1Logo.bat", "C:\MBNETZ\MAB\DRUWORD\MVP1Logo.bat" )
            KOMO := "MV"
            set default to (verzdat)
            SET PATH to (verzdat)
             do emailout
          else
            ? RunShell( "MVP1OB.bat", "C:\MBNETZ\MAB\DRUWORD\MVP1OB.bat" )
            KOMO := "MV"
            set default to (verzdat)
            SET PATH to (verzdat)
             do vzerstna
          endif
!
ausgeführt wird? Das Programm verzweigt dann in das Email - Programm (emailout) und die Anlage ist noch nicht fertig
Das Programm benötigt für die Weiterverarbeitung Daten die durch ! runshell..... erzeugt werden
Muss ich das als Function aufrufen und wenn ja wie?
ganz lieben Dank im voraus
Micha

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Mo, 24. Nov 2014 23:10
von Werner_Bayern
Servus Micha,

schau Dir mal die Parameter zu runshell an!

<lAsync> und <lBackGround> sind Deine Kandidaten!

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Do, 27. Nov 2014 12:25
von MichaMB
Hallo Werner,
das Programm funktioniert ohne die Parameter, solange ich das Info-Fenster für das versenden der mail nicht unterdrücke.
Allerdings muss ich darauf achten, dass die zuvor mittels batchfile geöffnete Word-Datei nicht "unsichtbar" hinter das Anwendungsfenster gerät, sonst passiert natürlich nichts und bei drücken von "Return" würde das Exefile weiter laufen

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Do, 27. Nov 2014 22:40
von Werner_Bayern
Meine Antwort bezog sich auf Deine Frage:
Wie kann ich verhindern, das mein Programm weiterläuft während das aufgerufene Batch-Programm mit der verknüpften Word-Datei Serienbrief und abspeichern als XY.DBF noch nicht fertig ist

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Do, 27. Nov 2014 22:59
von AUGE_OHR
MichaMB hat geschrieben:Allerdings muss ich darauf achten, dass die zuvor mittels batchfile geöffnete Word-Datei nicht "unsichtbar" hinter das Anwendungsfenster gerät, sonst passiert natürlich nichts und bei drücken von "Return" würde das Exefile weiter laufen
wie Werner schon sagte siehe dir mal den 3th Parameter von RunShell() an

Code: Alles auswählen

RunShell( <cCmdLine> , ; 
         [<cProgram>], ; 
         [<lAsync>]  , ; 
         [<lBackground>] )
<lAsync>

<lAsync> ist ein logischer Wert, der bestimmt, ob der neu gestartete Befehlsprozessor synchron oder asynchron mit der Xbase++ Anwendung ablaufen soll. Der Standardwert ist .F. (falsch), d.h. ohne Angabe von <lAsync> wird eine Xbase++ Anwendung angehalten bis der neue Befehlsprozessor oder das gestartete Programm abgebrochen bzw. beendet wird.
wenn du "mehr Kontrolle" benötigst dann siehe dir die Class TRunProcess von Pablo an.
TRunProcess.zip
benötigt ot4xb
(3.95 KiB) 473-mal heruntergeladen

Re: Outlook-Mail mit mehreren Anhängen erstellen

Verfasst: Fr, 28. Nov 2014 18:47
von MichaMB
Hallo Jimmy,

vielen Dank, aber das ist mir noch zu hoch... (habe mir erst die fehlenden Dateien besorgen müssen und teste mal bei Gelegenheit)

ich habe bei runshell keine Parameter, also müsste mein Quellcode stoppen, sobald ich aber eine Return-Taste drücke, läuft das Programm weiter und verwendet bereits jetzt eine Datei*.PDF die erst parallel jetzt mit Word speichern als PDF neu überschrieben wird.
Also ist in der Email der Richtig Anhang-Name aber mit dem Inhalt, den ich davor gespeichert hatte :-(
jetzt lösche ich in der Batch-Datei zum Aufruf des Wordfiles die *.pdf und starte dann erst die Word.DOC
Dann versuche ich mal ein Fenster (wait) im Hauptprogramm (exe file) zu öffnen, und dieses erst zu schließen bis die Ursprungs-Datei.PDF neu angelegt und überschrieben wurde
dann müsste nach schließen des Fensters das Email Programm gestartet werden...

so wie es aussieht, klappt die Vorgehensweise, in dem neu geöffneten Fenster könnte man nun z.B. auch gleich mit abfragen, ob die Datei die als Email gesendet wird auch gleich ausgedruckt werden soll, gespeichert wird sie ja automatisch

lg
Micha