Mailversand mit SMTP

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Mailversand mit SMTP
von: Werner
Geschrieben am: 10.07.2015 11:38:17

Hallo Zusammen,
Habe ein Makro gefunden, womit ich mails verschicken kann.
für die Zeile .TextBody = "Mailtext" möchte ich einen kopierten Bereich vom Blatt Abholung einfügen. Ich bekomme das einfach nicht hin, das der Bereich mitgeschickt wird.
Gruß Werner
https://www.herber.de/bbs/user/98756.xlsm

Sub Mail_schicken()
'Variablendeklaration für Mailversand
Dim iMsg As Object
Dim iConf As Object
Dim Flds As Variant
Dim Mailbetreff As String
Dim Mailinhalt As String
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
    
iConf.Load -1     'CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "172.25.8.104"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
    .Update
End With
On Error Resume Next
With iMsg
    Set .Configuration = iConf
    .To = "werner.bruhn@benteler.com"
    '.CC = ""
    '.BCC = ""
    .From = "werner.bruhn@benteler.com"
    .Subject = "Mailbetreff"
    .TextBody = "Mailtext"
    .Send
End With
If Err.Number <> 0 Then
        MsgBox Err.Description, _
           vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
           "Error: " & Err.Number, Err.HelpFile, Err.HelpContext
End If
End Sub

Bild

Betrifft: Was genau wird kopiert?
von: Raphael H
Geschrieben am: 10.07.2015 15:55:16
Hallo Werner,
was möchtest du denn aus dem Excelsheet kopieren?
Ein paar Zellen, Text oder Text inkl. Bildern?
Gruess
Raphael

Bild

Betrifft: AW: Was genau wird kopiert?
von: Werner
Geschrieben am: 13.07.2015 06:26:24
Hallo Raphael,
es soll eigentlich nur Text aus den Zellen kopiert werden.
Den Bereich möchte ich markieren und da aus der Zwischenablage einfügen.
In einigen Zellen ist der Text immer anders.
Gruß Werner

Bild

Betrifft: AW: Was genau wird kopiert?
von: Raphael H
Geschrieben am: 13.07.2015 08:56:33
Hallo Werner,
Versuchs mal mit der Funktion


Private Function fncRangeToHtml(strWorksheetname As String, _
    strRangeaddress As String) As String
    Dim objFilesytem As Object, objTextstream As Object
    Dim strFilename As String
    strFilename = Environ$("temp") & "/" & _
        Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
    ActiveWorkbook.PublishObjects.Add( _
        SourceType:=xlSourceRange, _
        Filename:=strFilename, _
        Sheet:=strWorksheetname, _
        Source:=strRangeaddress, _
        HtmlType:=xlHtmlStatic).Publish True
    Set objFilesytem = CreateObject("Scripting.FileSystemObject")
    Set objTextstream = objFilesytem.GetFile(strFilename). _
        OpenAsTextStream(1, -2)
    fncRangeToHtml = objTextstream.ReadAll
    objTextstream.Close
    Set objTextstream = Nothing
    Set objFilesytem = Nothing
    Kill strFilename
End Function
So einbauen bei dir

  With iMsg
      Set .Configuration = iConf
      .To = "werner.bruhn@benteler.com"
      '.CC = ""
      '.BCC = ""
      .From = "werner.bruhn@benteler.com"
      .Subject = "Mailbetreff"
      .TextBody = fncRangeToHtml("Blattname", "A1:C10")
      .Send
  End With
Gruess
Raphael

Bild

Betrifft: AW: Was genau wird kopiert?
von: Werner
Geschrieben am: 13.07.2015 09:16:30
ich habe die Funktion mit in das Modul reinkopiert und meinen Code mit dem geändert, was du geschickt hast.
Die Mail wird zwar geschickt aber ohne das Kopierte und ich bekomme eine Fehlermeldung Error_ 1004
Anwendungs- oder objektdefinierter Fehler.
Gruß Werner

Bild

Betrifft: AW: Was genau wird kopiert?
von: Raphael H
Geschrieben am: 13.07.2015 09:42:06
Hallo Werner,
Mach mal aus dem TextBody einen HtmlBody. Hast du Blattname auch durch deinen Blattnamen ersetzt?
Gruess Raphael

Bild

Betrifft: AW: Was genau wird kopiert?
von: Werner
Geschrieben am: 13.07.2015 09:52:53
Hallo Raphael,
Blattname hatte ich geändert. Habe Textbody ersetzt, die Fehlermeldung ist die gleiche.
noch mal der gesamte Code:
Sub Mail_schicken()
'Variablendeklaration für Mailversand
Dim iMsg As Object
Dim iConf As Object
Dim Flds As Variant
Dim Mailbetreff As String
Dim Mailinhalt As String
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

iConf.Load -1 'CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "172.25.8.104"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Update
End With
On Error Resume Next
With iMsg
Set .Configuration = iConf
.To = "werner.bruhn@benteler.com"
'.CC = ""
'.BCC = ""
.From = "werner.bruhn@benteler.com"
.Subject = "Mailbetreff"
.HtmlBody = fncRangeToHtml("Abholung", "A1:R24")
.Send
End With
If Err.Number <> 0 Then
MsgBox Err.Description, _
vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
"Error: " & Err.Number, Err.HelpFile, Err.HelpContext
End If
End Sub

Private Function fncRangeToHtml(strWorksheetname As String, _
    strRangeaddress As String) As String
    Dim objFilesytem As Object, objTextstream As Object
    Dim strFilename As String
    strFilename = Environ$("temp") & "/" & _
        Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
    ActiveWorkbook.PublishObjects.Add( _
        SourceType:=xlSourceRange, _
        filename:=strFilename, _
        Sheet:=strWorksheetname, _
        Source:=strRangeaddress, _
        HtmlType:=xlHtmlStatic).Publish True
    Set objFilesytem = CreateObject("Scripting.FileSystemObject")
    Set objTextstream = objFilesytem.GetFile(strFilename). _
        OpenAsTextStream(1, -2)
    fncRangeToHtml = objTextstream.ReadAll
    objTextstream.Close
    Set objTextstream = Nothing
    Set objFilesytem = Nothing
    Kill strFilename
End Function


Bild

Betrifft: AW: Was genau wird kopiert?
von: Raphael H
Geschrieben am: 13.07.2015 12:28:04
Hallo Werner,
Ich weiss an was es evtl liegen könnte. Ersetze in deinem Dateinamen alle Leerzeichen durch _, dann sollte es klappen.
Gruess Raphael

Bild

Betrifft: AW: Was genau wird kopiert?
von: Werner
Geschrieben am: 13.07.2015 12:48:47
Hallo Raphael,
ja jetzt geht es. Danke für Deine Hilfe.
Gruß Werner

Bild

Betrifft: AW: Was genau wird kopiert?
von: Werner
Geschrieben am: 13.07.2015 14:26:19
Hallo Raphael,
es gibt doch noch ein Problem.
Die Mail, die ich schicken möchte, kommt erst beim nächsten Senden an.
Wenn ich also jetzt eine Mail sende, wird erst die vom letzten senden geschickt, nicht die ,die ich eigentlich schicken will.
Gruß Werner

Bild

Betrifft: AW: Was genau wird kopiert?
von: Raphael H
Geschrieben am: 13.07.2015 17:34:45
Hallo Werner,
Ich denke das ist normal. Ich gehe davon aus, dass das Mailprogramm nicht geõffnet ist während du die Mail versendest. Somit geht die Mail in den Postaugang und wird quasi beim nächsten start des Mailprogramms versendet.
Gruß Raphael

Bild

Betrifft: AW: Was genau wird kopiert?
von: Werner
Geschrieben am: 14.07.2015 06:36:13
Hallo Raphael,
ich weiß nicht warum, aber jetzt geht es auch wenn das Mailprogramm geschlossen ist.
Danke Gruß Werner

Bild

Betrifft: In dem Fall ist ja alles i.O. :-) owt
von: Raphael H
Geschrieben am: 14.07.2015 10:12:24


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Mailversand mit SMTP"