E-Mail Anhang mit versenden

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Defender19
**
Beiträge: 20
Registriert: Do, 28.06.2018 14:07

E-Mail Anhang mit versenden

Beitrag von Defender19 »

Hallo Zusammen,

ich weiß, dass es schon genügend zu dem Thema gibt. Allerdings
komme ich nicht weiter.
In der beigefügten Datei, wird erst die Tabelle abgepeichert, dann kann man das Blatt
ausdrucken und schließlich soll es mit Anhang gesendet werden.
Es funktioniert alles, nur das der Anhang nicht in der Mail angehängt wird. Das
Makros muß den Zusatz attachment haben, ist das Richtig? Nur weiß ich nicht
wie ich das wo und wie eintragen muß.

Kann mir jemand helfen?

Gruß Defe
Dateianhänge
Kalenderbestellung 2018.ods
(15.93 KiB) 128-mal heruntergeladen
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: E-Mail Anhang mit versenden

Beitrag von F3K Total »

Hi,
dieses Makro verschickt die Datei "C:\Users\USERNAME\Desktop\TEST.png" als Anhang:

Code: Alles auswählen

sub SendMail_Test
'Zugriff auf SystemMail
    oMailer = createUnoService( "com.sun.star.system.SystemMailProvider" ) 
    oMailProg = oMailer.queryMailClient()
    oNewMsg = oMailProg.createMailMessage()
    With oNewMsg
        .Subject = "Kalenderbestellung 2018"
        .Body = "Hallo Herr Reincke, " & Chr(10) & _
                "" & Chr(10) & _
                "anbei erhalten Sie meine Kalenderjahresbestellung 2018." & Chr(10) & _
                "" & Chr(10) & _
                "" & Chr(10) & _
                 "Viele Grüße " & Chr(10) & _
                ""
        .Recipient = "reincke@test.de"
        Dim ATT(0) as string
        ATT(0) = "C:\Users\USERNAME\Desktop\TEST.png"
        .Attachement = ATT
    End With
'an Mailprogramm übergeben
    oMailprog.sendMailMessage(oNewMsg,0)'0 mit User Interface,1 ohne User Interface
end sub
Hat mir lange gefehlt ...darum habe ich lange gesucht ...

Kleiner Tipp am Rande, ich hatte eine Fehlermeldung, als ich versuchte die Kalenderdatei, aus der heraus das Makro ja gestartet werden soll, zu verschicken. Kein Zugriff, da die Datei geöffnet ist. Abhilfe bringt das Abspeichern unter anderem Namen, oder z.B. als .pdf.

Gruß R
Pretender1970
**
Beiträge: 28
Registriert: Fr, 05.01.2018 08:38

Re: E-Mail Anhang mit versenden

Beitrag von Pretender1970 »

Hallo F3K Total,

er bringt mir ein Fehler bei der unten eingefügten Zeile. Ich habe
es nach meinen Bedürfnissen angepasst, allerdings bringt er den Fehler
bei .Attachement = ATT.

Irgendeine Idee?

gruß Defe

Code: Alles auswählen

ATT(0) = "C:\Users\USERNAME\Desktop\TEST.png"
        .Attachement = ATT
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: E-Mail Anhang mit versenden

Beitrag von balu »

Hall defe,

auch wenn Du den Code nach deinen Bedingungen angepasst hast, so heißt das ja nicht das Du es richtig gemacht hast. Das soll heißen, das Du etwas unwissentlich übersehen hast.

Die Fehlermeldung wäre schon sehr interessant zu wissen. Aber dennoch bemühe ich meine extrem Heiße Glaskugel (gibt es noch irgendwo auser nem Kühlschrank [wo ich nicht reinpasse] ein kühles Plätzchen. Bei mir nicht *heul*).

Also Glaskugel meint: "In deinem Laufwerkspfad befinden sich Sonderzeichen die das Makro nicht mag."

Schuss ins Blaue: Versuchs mal mit LoadComponentFromUrl, anstelle einfach nur die direkte Pfadangabe. Weitere Infos dazu kannst Du z.B. hier im Forum finden.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Defender19
**
Beiträge: 20
Registriert: Do, 28.06.2018 14:07

Re: E-Mail Anhang mit versenden

Beitrag von Defender19 »

Hallo Balu,

in dem unten aufgeführtem Makro, wird jetzt folgendes erreicht das Tabellenblatt
wird als pdf exportiert und abgespeichert. Bitte nicht auf die Programmierung schauen.
Danach öffnet das Makro "MS Outlook" und trägt alles ein. Jetzt fehlt nur noch, dass er
die abgespeicherte pdf einfügt. Ich weiß leider nicht, wo und wie ich den Befehl mit
attachment eintragen muß.
Kann mir jemand helfen?

Gruß Defe

Code: Alles auswählen

Sub BestellungSpeichernUndVersenden

REM Definition der Variablen
Dim document as Object
Dim dispatcher as Object
Dim stringname as String
Dim PDFempfText as String
Dim ODScalc as Object
Dim strAttPfad As String

Calc = ThisComponent
Sheet = Calc.Sheets(0)



REM Empfängername finden
CCCell = Sheet.GetCellRangeByName("B11")
PDFempfString = CCCell.String

REM Dokumentenzugriff
document   = ThisComponent.CurrentController.Frame
dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")

REM Wenn Bestellung 1-seitig
If ZStringName = "0" then

REM Druckbereich für 1 Seite
dim args10(1) as new com.sun.star.beans.PropertyValue
args10(0).Name = "ToPoint"
args10(0).Value = "$A$1:$J$61"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args10())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())

REM PDF-Export
dim args11(1) as new com.sun.star.beans.PropertyValue
args11(0).Name = "URL"
args11(0).Value = "file:///O:/Dokumente/Kalenderbestellung." & stringname & ".pdf"
args11(1).Name = "FilterName"
args11(1).Value = "calc_pdf_Export"

dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args11())

REM Druckbereich entfernen
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args10())
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array()


Else

REM Druckbereich für 2 Seiten
dim args20(1) as new com.sun.star.beans.PropertyValue
args20(0).Name = "ToPoint"
args20(0).Value = "$A$1:$J$61"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args20())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())

dim args21(1) as new com.sun.star.beans.PropertyValue
args21(0).Name = "Nr"
args21(0).Value = 2

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args21())

dim args22(1) as new com.sun.star.beans.PropertyValue
args22(0).Name = "ToPoint"
args22(0).Value = "$A$1:$J$61"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args22())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())

REM PDF-Export
Datei =  "file:///O:/Dokumente/" & stringname & ".pdf"
dim pdfproperties(1) as new com.sun.star.beans.PropertyValue
pdfproperties(1).Name = "FilterName"
pdfproperties(1).Value = "calc_pdf_Export"

ThisComponent.StoreToUrl( Datei, pdfproperties())
StrAttPfad = ThisComponent.GetUrl ("file:///O:/Dokumente" & stringname & ".pdf")

REM Druckbereiche entfernen
dim args23(1) as new com.sun.star.beans.PropertyValue
args23(0).Name = "ToPoint"
args23(0).Value = "$A$1:$J$61"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args23())
dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())

dim args24(1) as new com.sun.star.beans.PropertyValue
args24(0).Name = "Nr"
args24(0).Value = 2

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args24())

dim args25(1) as new com.sun.star.beans.PropertyValue
args25(0).Name = "ToPoint"
args25(0).Value = "$A$1:$J$61"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args25())

dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())

End If

REM ODS-Datei speichern
ODScalc = ThisComponent
ODScalc.Store()

REM Messagebox
PDFempfText = "Die " & stringname & "" & PDFempfString
msgbox PDFempftext & " wurde erfolgreich gespeichert und steht zum versenden bereit!", 64, "Herzlichen Glückwunsch!"

REM gespeicherte PDF senden
Dim strAn As String
Dim strBetr As String
Dim strBody As String


Dim strShell As String

Set outObj = CreateObject("Outlook.Application")
 Set Mail = outObj.CreateItem(0)
 With Mail
 .Subject = "Kalenderbestellung 2018"
 .Body = "Hallo Herr Reinke, " & Chr(13) & _
 "" & Chr(13) & _
  "anbei erhalten Sie meine Kalenderjahresbestellung 2018." & Chr(13) & _
    "" & Chr(13) & _
     "" & Chr(13) & _
 "Viele Grüße " & Chr(13) & _
 ""
.To = "reinke@test.de"
  End With
 With Application.ActivePrinter 
 End With
 Mail.Display
 Set Mail = Nothing
 Set outObj = Nothing

End Sub
Antworten