PDF als Mail versenden?

Moderator: Moderatoren

PDF als Mail versenden?

Beitragvon satmax » Do, 12. Mär 2015 14:13

Hallo,

ich möchte gernen einen PDF Ausdruck als Mail versenden. Den Ausdruck habe ich bereits und ein PDF Dokument wird korrekt erstellt. Nun wollte ich die Datei per Mail versenden:

Code: Alles auswählen
// c:\users\public\export.pdf existiert zu diesem Zeitpunkt.
   IF cPrnOptMailen
      hMailJob = LsMailJobOpen(0)
      DebugPrint("hMailJob:", hMailJob) // Liefert  NIL
      LsMailSetOptionString(hMailJob, "Export.Mail.Body", "Test")
      LsMailSetOptionString(hMailJob, "Export.Mail.To", "demo@meinedomaine.com")
      LsMailSetOptionString(hMailJob, "Export.Mail.Subject", "Test!")
      LsMailSetOptionString(hMailJob, "Export.Mail.AttachmentList","c:\\users\\public\\export.pdf")
      DebugPrint(LsMailSendFile(hMailJob, 0))   // Liefert NIL
      LsMailJobClose(hMailJob)
   endif


Es wird keine Mail versandt. Müssen da vorab noch Optionen gesetzt werden?
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon Tom » Do, 12. Mär 2015 14:19

Export.Mail.Provider ("MSMAPI" usw.) fehlt. Ansonsten sieht das auf den ersten Blick gut aus.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 6679
Registriert: Do, 22. Sep 2005 22:11
Wohnort: Berlin

Re: PDF als Mail versenden?

Beitragvon satmax » Do, 12. Mär 2015 15:30

Danke Tom,

das hat nichts gebracht:
Code: Alles auswählen
LsMailSetOptionString(hMailJob, "Export.Mail.Provider", "MSMAPI")


Ich denke das eigentliche Problem ist, "LsMailJobOpen" liefert nil
Code: Alles auswählen
hMailJob = LsMailJobOpen(0) // liefert NIL


Laut Doku sollte LsMailJobOpen(0) liefern:
ein Handle, das bei den meisten Funktionen als Parameter benötigt wird, um auf
die applikationsspezifischen Daten zugreifen zu können, 0 für Fehler.

aber niemals nil!
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon Tom » Do, 12. Mär 2015 15:40

Gibt es eine eingestellte Standard-Mailanwendung?
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 6679
Registriert: Do, 22. Sep 2005 22:11
Wohnort: Berlin

Re: PDF als Mail versenden?

Beitragvon satmax » Do, 12. Mär 2015 15:43

Ja. Aus der Vorschau geht das auch.
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon satmax » Do, 12. Mär 2015 16:29

Wenn ich die PDF wie folgt direkt mit dem Druckjob versende funktioniert es:

LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "PDF", "Export.File", "auftrag.pdf")
LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "PDF", "Export.Path", cTemporaryPath)
LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "PDF", "Export.Quiet","1")

// Mailversand ok:
LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "PDF", "Export.SendAsMail", "1")
LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "PDF", "Export.Mail.Provider", "SMAPI")
LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "PDF", "Export.Mail.To", "demo@mydomain.com")
LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "PDF", "Export.Mail.Subject", "Auftrag Nr.:"+ ALLTRIM(str(oDlgAuftrag:oCursor:FieldGet("AuftragNr"),14,4)))
LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "PDF", "Export.Mail.Body", cMailbody)
LlXSetParameter(hJob, LL_LLX_EXTENSIONTYPE_EXPORT, "PDF", "Export.Mail.ShowDialog", "0")


Laut Beispielcode (Online FAQ) sollte das funktionieren:
Code: Alles auswählen
hMailJob := LsMailJobOpen(0)
If (hMailJob < 0); LLErrorMessage(hJob); Return NIL; Endif


Geht aber nicht da hMailJob eben NIL ist!

Zusatzfrage: welche Alternativen gibt es zum Mailversand? Eigentlich hätte mir das via Outlook gefallen, simple implementiert, einfach zu konfigurieren, alle Mails im Outlook beisammen (gesendete Mails).
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon Martin Altmann » Do, 12. Mär 2015 16:39

Markus,
mal kurz eine Frage zu dem Thema (nicht zu Deinem Problem): Wenn Du die Mail so versendest, geht die dann (im Prinzip) ohne manuellen Eingriff raus oder musst Du bei jeder Mail auf "Senden" klicken?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12738
Registriert: Fr, 23. Sep 2005 3:58
Wohnort: Berlin

Re: PDF als Mail versenden?

Beitragvon satmax » Do, 12. Mär 2015 16:41

Es kommt die Sicherheitsabfrage von Outlook (Windows 8.1 + Outlook), dann wird aber sofort versendet.
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon Martin Altmann » Do, 12. Mär 2015 17:00

Die kommt aber nur einmalig - oder?
Oder kommt die vor jedem Job?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12738
Registriert: Fr, 23. Sep 2005 3:58
Wohnort: Berlin

Re: PDF als Mail versenden?

Beitragvon satmax » Do, 12. Mär 2015 17:03

vor jedem JOB.

Darum experimentiere ich gerade mit LsMailSendFile() beziehungsweise suche nach einer einfachen Möglichkeit Mails mit Anhang zu versenden.
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon Martin Altmann » Do, 12. Mär 2015 17:09

Ich danke DIr - kannst mich ja mal auf dem Laufenden halten ;-)
Bezüglich Senden von Mails mit Anhang (so werde ich das wahrscheinlich mit L&L und PDFs machen): Nimm see4xb von Marshallsoft - damit kannst Du das tun. Brauchst natürlich einen SMTP-Server und entsprechende Zugangsdaten - aber die hat ja jeder Kunde in seinem Mailclient stehen (und kann diese Angaben dann in Deinem Programm einmalig zur Konfiguration angeben - wobei ich das Passwort nie speichern würde, sondern einmalig bei Bedarf abfragen und mir für die Laufzeit der Anwendung merken würde).
Aktuell senden wir mit See4xb Mails automatisiert von unserem Webserver (mit und ohne Anhänge, sowohl HTML als auch NurText - je nach Mailclientkonfiguration wird dann entweder die eine oder die andere Vriante angezeigt).
Nachteil dabei: Es läuft an Deinem Mailclient vorbei - könnte man aber umgehen, indem man die Absendeadresse auch als BCC-Adresse mit angibt.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12738
Registriert: Fr, 23. Sep 2005 3:58
Wohnort: Berlin

Re: PDF als Mail versenden?

Beitragvon Herbert » Do, 12. Mär 2015 17:13

Outlook fragt immer.
Passiert bei mir mit dem Drag&Drop auch.

Es gibt Abhilfe
http://www.mailhilfe.de/ein-programm-versucht-eine-e-mail-nachricht-in-ihrem-namen-zu-senden

Das darin erwähnte Programm speichert die Frage ab. Macht den Vorgeng aber ein klein wenig langsamer. Wirkt aber.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1764
Registriert: Mi, 13. Aug 2008 23:22
Wohnort: Gmunden am Traunsee, Österreich

Re: PDF als Mail versenden?

Beitragvon satmax » Do, 12. Mär 2015 17:16

Mach ich, kannst Du einfach mal folgende Zeile versuchen:

Code: Alles auswählen
hMailJob := LsMailJobOpen(CMBTLANG_DEFAULT)
DebugPrint("hMailJob;", Valtype(hMailJob))


Mich interessiert ob hMailJob bei Dir auch NIl ist
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon Martin Altmann » Do, 12. Mär 2015 17:23

Markus,
ich habe vor, die Demo von L&L Ende nächster Woche zu installieren und dann damit ein paar erste Schritte zu unternehmen und mich allgemein damit vertraut zu machen.
So schnell wird das leider nichts werden (von meienr Seite aus) - hauptberuflich mache ich ja nichts mit Xbase++ und kann mich damit um solche Dinge nur ab und an zu Hause kümmern.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 12738
Registriert: Fr, 23. Sep 2005 3:58
Wohnort: Berlin

Re: PDF als Mail versenden?

Beitragvon satmax » Do, 12. Mär 2015 18:02

Herbert hat geschrieben:Outlook fragt immer.
Passiert bei mir mit dem Drag&Drop auch.

Es gibt Abhilfe
http://www.mailhilfe.de/ein-programm-versucht-eine-e-mail-nachricht-in-ihrem-namen-zu-senden

Das darin erwähnte Programm speichert die Frage ab. Macht den Vorgeng aber ein klein wenig langsamer. Wirkt aber.


Danke für den Tipp. Ägerlich ist halt immer wenn was nicht so geht wie es soll. Da habe ich heute wieder so einen Tag erwischt. :evil:

Warum funktioniert die Outlook Einstellung nicht, bei mir sind alle Einstellmöglichkeiten ausgegraut (Als Admin ausgeführt): Datei/Optionen/Trust Center/Einstellungen für das Trust Center/Programmgesteuerter Zugriff:
Dateianhänge
outlook.JPG
outlook.JPG (53.44 KiB) 1433-mal betrachtet
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon satmax » Fr, 13. Mär 2015 7:23

Zurück zum Ausgangsproblem, unter VC++ funktioniert der folgende Code einwandfrei und wie erwartet. Könnte bitte ein LL20 (19) Anwender aus dem Forum den folgenden Code testen:

Code: Alles auswählen
hMailJob := LsMailJobOpen(CMBTLANG_DEFAULT)
If (hMailJob < 0); LLErrorMessage(hJob); Return NIL; Endif   // Unter Xbase Absturz da NIL
LsMailSetOptionString(hMailJob, "Export.Mail.Provider", "MSMAPI")
LsMailSetOptionString(hMailJob, "Export.Mail.Body", "Auftrag erstellt mit")
LsMailSetOptionString(hMailJob, "Export.Mail.To", "demo@meinedomaine.com
LsMailSetOptionString(hMailJob, "Export.Mail.Subject", "Test!")
LsMailSetOptionString(hMailJob, "Export.Mail.AttachmentList","c:\users\public\export.pdf")
LsMailSendFile(hMailJob, 0)
LsMailJobClose(hMailJob)


In erster Linie interessiert mich der Rückgabewert von LsMailJobOpen. Danke.
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon brandelh » Fr, 13. Mär 2015 10:26

Ich bin zwar kein LL Anwender, aber das kann ich beantworten:
Code: Alles auswählen
hMailJob := LsMailJobOpen(CMBTLANG_DEFAULT)

liefert entweder einen Fehlercode (< 0), oder ein Handle auf das Objekt zurück (32Bit LONG), 0 oder NIL sollte da nicht möglich sein, daher wundert mich der nächste Kommentar:
// Unter Xbase Absturz da NIL

Was aber auf jeden Fall ein Problem darstellt, ist der Name des zweiten Parameters:
Code: Alles auswählen
If (hMailJob < 0); LLErrorMessage(hJob); Return NIL; Endif   

Wenn man das besser formatiert hätte, würde der Fehler im Debugger besser sichtbar sein:
Code: Alles auswählen
If (hMailJob < 0)
   LLErrorMessage(hJob)  // müsste das nicht hMailJob heißen !
   Return NIL
Endif 

Ich denke du hast hJob statt hMailJob geschrieben ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13267
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: PDF als Mail versenden?

Beitragvon satmax » Fr, 13. Mär 2015 10:31

Danke Hubert, das mit hjob ist ein Tippfehler (copy & paste, würde einen Code so nie schreiben :) ), aber so weit komme ich nicht das hMailJob immer nil ist:

Code: Alles auswählen
hMailJob := LsMailJobOpen(CMBTLANG_DEFAULT)
DebugPrint("hMailJob;", Valtype(hMailJob))


ergibt im Debugprint Fenster: 10:29:20 <hMailJob;><U>
(Ich habe mir Dein Debugprint um einen 2 Parameter und um <> erweitert)
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon Bertram Hansen » Fr, 13. Mär 2015 11:08

Hallo Markus,

alternativ gibt es noch die Möglichkeit über CDO.MESSAGE.

http://www.xbaseforum.de/viewtopic.php?f=28&t=7726&hilit=cdo.message
:wave:
Gruß Bertram
http://www.tobax.de

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Bertram Hansen
1000 working lines a day
1000 working lines a day
 
Beiträge: 608
Registriert: Di, 27. Sep 2005 7:55
Wohnort: 53902 Bad Münstereifel

Re: PDF als Mail versenden?

Beitragvon satmax » Fr, 13. Mär 2015 11:39

Jetzt wird es spannend, wenn man die undokumentierte Funktion "LS20ModuleInit()" vorher (beim Programmstart) aufruft dann klappt es.

Wie komme ich darauf? LL Funktionen werden via #command aufgerufen:
Code: Alles auswählen
#command  LL_FUNCTION <FUNC>([<x,...>]) ORDINAL <nOrdinal> =>      ;
FUNCTION <FUNC>([<x>])                                             ;;
  STATIC cTemplate := NIL                                          ;;
  LOCAL xRet                                                       ;;
  IF hDll == 0                                        ;;
      DebugPrint("RETURN(NIL)")                                                    ;;  // Hier kommt NIL!
    RETURN(NIL)                                                    ;;
  ENDIF                                                            ;;
  IF cTemplate==NIL                                                ;;
    cTemplate := DllPrepareCall( hDll, DLL_STDCALL, <nOrdinal> ) ;;
  ENDIF                                                            ;;
  xRet := DllExecuteCall(cTemplate[,<x>])                          ;;
RETURN xRet



Warum das nun so ist dem muss ich noch nachgehen.
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon brandelh » Fr, 13. Mär 2015 12:17

die Funktion ist "undokumentiert" und muss aufgerufen werden ... das führt mich zur Frage ob du eventuell eine INCLUDE Anweisung vergessen hast ?

Viele solche Hersteller verstecken in *.CH Dateien init Aufrufe etc.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13267
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: PDF als Mail versenden?

Beitragvon satmax » Fr, 13. Mär 2015 14:10

Es gibt ein Source File cmbtll20.prg + Header und ein Source File cmbtls20.prg + Header. Darin sind jeweils die LL Funktionen für XBase++ definiert. Die meisten Funktionen sind im ersten File definiert, darum geht auch alles andere bei mir.

Um die Funktionen aus cmbtls20.prg verwenden zu können, muss man LS20ModuleInit() aufrufen (nich auf LS20ModuleExit() vergessen). In der Combit Dokumentation finde ich darüber aber keine Zeile. Das hängt wohl mit der XBase++ Implementation zusammen.

Warum es hier 2 getrennte Files mit 2 getrennten ...ini() gibt ist mir eigentlich völlig unklar. IMHO sollte das alles in eine Datei.

Vielleicht hilft dieser Hinweis mal einem anderen. Sollte das alles ganz anders sein lasse ich mich gerne aufklären.
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon satmax » Fr, 13. Mär 2015 16:17

Die richtige Initialisierung vorausgesetzt geht dass mailen nun sehr einfach mit LL. Hier ein Beispiel wo auch 2 Anhänge verwendet werden. Ein Anhang wird unmittelbar zuvor via LL erstellt, der 2. Anhang (unterfertigte Lieferschein) wurde durch den User hinzugefügt :
Code: Alles auswählen
hMailJob := LsMailJobOpen(CMBTLANG_DEFAULT)
LsMailSetOptionString(hMailJob, "Export.Mail.Provider", "XMAPI")
LsMailSetOptionString(hMailJob, "Export.Mail.Body", cMailbody )
LsMailSetOptionString(hMailJob, "Export.Mail.To", cEMail)
LsMailSetOptionString(hMailJob, "Export.Mail.Subject", cSubject)
LsMailSetOptionString(hMailJob, "Export.Mail.AttachmentList",cTemporaryPath+"Auftrag.pdf" +CHR(9)+ cPathAnhang" )
LsMailSendFile(hMailJob, 0)                                   
LsMailJobClose(hMailJob)
DebugPrint("hMailJob:", hMailJob)


Wenn man als Mail Provider XMAPI verwendet kommt auch keine weitere Abfrage von Outlook. Die Mail wird sofort versendet und ist im Outlook Mailausgang zu sehen. Vorteil, ich brauche keinerlei Passwörter und Mailaccounts verwalten.
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Re: PDF als Mail versenden?

Beitragvon Tom » Sa, 14. Mär 2015 12:24

"Ls20ModuleInit" ist - wie "Ll20ModuleInit" - keine "undokumentierte Funktion", sondern ein Beispiel dafür, wie L&L in Xbase++ eingebunden wird. Darin werden die DLLs geladen, die Wrapper für die Funktionen initialisiert usw. Du wirst auch keinen Report mit L&L herausbekommen, wenn Du nicht etwas in dieser Art machst, gelle? :wink:
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 6679
Registriert: Do, 22. Sep 2005 22:11
Wohnort: Berlin

Re: PDF als Mail versenden?

Beitragvon satmax » Sa, 14. Mär 2015 13:01

Hast natürlich recht. Ich hatte die Files einfach eingebunden und nie darüber nachgedacht. Außer ganz zu Beginn mal, da habe ich LLCommon.prg leicht angepasst. Für mich war also bisher Ls20ModuleInit() eine normale LL Funktion...
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
 
Beiträge: 775
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich

Nächste

Zurück zu List & Label

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast