Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: mit vba mail über internen webmailer versenden

mit vba mail über internen webmailer versenden
DirkR
Hallo Excelgemeinde,
ich habe ein "kniffeliges" Problem und komme nicht weiter.
Wir haben früher Outlook bei uns im Betrieb benutzt um interne und exteren Mails zu empfangen und senden.
Wir haben einen interen Mail-Server mit der IP 10.10.78.152
Mein Admin hat mir mitgeteilt, dass smtp eingerichtet ist!?! (Habe keine Ahnung davon)
Ich hatte bisher eine Datei genutzt, in der Kollegen automatisiert eine EMAIL versenden konnten. Nun nutzen aber die meisten Kollegen nicht mehr den Outlook, sondern eine Webmailoberfläche.
Da bei diesem Personenkreis der Outlook nun nicht mehr eingerichtet ist, funzt meine Datei nicht mehr. :-(
Nun würde ich gerne dies unabhängig von Outlook erledigen, habe aber überhaupt keine Ahnung wie ich das umstezen kann!?!?!
Kann mir jemand helfen?
Für Hilfe wäre ich sehr dankbar
Gruß DirkR
Anzeige
AW: mit vba mail über internen webmailer versenden
12.06.2012 13:16:10
MatthiasG
Hallo Dirk,
guck mal hier:
CDO
oder hier:
Blat
CDO finde ich besser, da kein zusätzliches Programm nötig ist.
Gruß Matthias
Anzeige
AW: mit vba mail über internen webmailer versenden
12.06.2012 14:33:05
DirkR
Hallo Matthias,
danke für den Tipp. Leider komme ich damit nicht weiter. Ich habe folgenden Code benutzt, erhalte aber die Fehlermeldung:
Laufzeitfehler '-2147220977 (8004020f)':
Der Server hat eine oder mehrere Empfängeradressen zurückgewiesen.
Die Serverantwort lautet: 530 SMTP authentication is required.

Die Server IP ist richtig angegeben und die Empfängeradresse ist auch richtig angegeben.
wir benutzen einen Webmailer (HMail-Server).
Leider habe ich keine Idee, woran es liegen könnte.
Option Explicit
'Make a list in Sheet("Sheet1") with
'In column A the names of the people
'In column B the E-mail addresses
'In column C yes or no , if the value is yes a mail will be send
'
'The Macro will loop through each row in Sheet1 and if there is a E-mail address in column B
'and "yes" in column C it will create a mail with a reminder like this for each person.
'
'
'Dear Jelle (Jelle is a name in column A for example)
'
'Please contact us to discuss bringing your account up to date
Sub CDO_Personalized_Mail_Body()
Dim iMsg As Object
Dim iConf As Object
Dim cell As Range
Dim Flds As Variant
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
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") = "10.10.78.152"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With
For Each cell In Sheets("Sheet1").Columns("B").Cells.SpecialCells(xlCellTypeConstants)
If cell.Offset(0, 1).Value  "" Then
If cell.Value Like "?*@?*.?*" And LCase(cell.Offset(0, 1).Value) = "yes" Then
MsgBox cell
Set iMsg = CreateObject("CDO.Message")
With iMsg
Set .Configuration = iConf
.To = cell.Value
.From = "Hans.Mustermann@muster.de"
.Subject = "Reminder"
.TextBody = "Dear " & cell.Offset(0, -1).Value & vbNewLine & vbNewLine & _
"Please contact us to discuss bringing your account up to date"
.Send
End With
Set iMsg = Nothing
End If
End If
Next cell
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
Bitte weiterhin um Hilfe, daher noch offen!!!
Gruß DirkR
Anzeige
AW: mit vba mail über internen webmailer versenden
12.06.2012 14:38:00
MatthiasG
Hallo Dirk,
in der With Schleife "With Flds" habe ich mehr Einträge gefunden:

Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.10.78.152"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "USERNAME"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "PASSWORD"
.Update
End With
Bei Dir fehlen die Kontoeinträge (Username / Password).
Gruß Matthias
Anzeige
AW: mit vba mail über internen webmailer versenden
12.06.2012 14:54:54
DirkR
Hallo Matthias,
danke für deine Antwort. Ich habe den Code erweitert, allerdings bokomme ich nun folgende Fehlermeldung:
Laufzeitfehler '2147220975 (80040211)':
Die Nachricht konnte nicht an den SMTP-Server gesendet werden. Der
Transportfehlercode lautet 0x80040217. Die Serverantwort lautet not available

Kannst du damit etwas anfangen?
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.10.78.152"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Hans.Mustermann"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "DRSB2012"
.Update
End With
Gruß DirkR
Anzeige
AW: mit vba mail über internen webmailer versenden
12.06.2012 15:00:46
DirkR
Hallo Matthias,
ich habe es hinbekommen.
Der Fehler war der Username. Der Username musste als komplette EMAIl-Adresse eingegeben werden.
Vielen, vielen Dank für deine Hilfe. Nun kann ich weiter machen !!!
Gruß DirkR
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

E-Mails über internen Webmailer mit VBA versenden


Schritt-für-Schritt-Anleitung

Um E-Mails mit VBA über einen internen Webmailer zu versenden, kannst du das folgende Beispiel nutzen. Stelle sicher, dass dein SMTP-Server korrekt eingerichtet ist. Hier ist ein einfacher VBA-Code, den du anpassen kannst:

Sub CDO_Personalized_Mail_Body()
    Dim iMsg As Object
    Dim iConf As Object
    Dim cell As Range
    Dim Flds As Variant

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    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") = "10.10.78.152"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "deine.email@domain.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "dein_passwort"
        .Update
    End With

    For Each cell In Sheets("Sheet1").Columns("B").Cells.SpecialCells(xlCellTypeConstants)
        If cell.Offset(0, 1).Value <> "" Then
            If cell.Value Like "?*@?*.?*" And LCase(cell.Offset(0, 1).Value) = "yes" Then
                Set iMsg = CreateObject("CDO.Message")
                With iMsg
                    Set .Configuration = iConf
                    .To = cell.Value
                    .From = "deine.email@domain.com"
                    .Subject = "Reminder"
                    .TextBody = "Dear " & cell.Offset(0, -1).Value & vbNewLine & vbNewLine & _
                    "Please contact us to discuss bringing your account up to date"
                    .Send
                End With
                Set iMsg = Nothing
            End If
        End If
    Next cell

    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub

Häufige Fehler und Lösungen

  1. Fehlermeldung: 530 SMTP authentication is required

    • Lösung: Stelle sicher, dass du in der Konfiguration Username und Passwort für den SMTP-Server angegeben hast. Siehe Beispiel oben.
  2. Fehlermeldung: Die Nachricht konnte nicht an den SMTP-Server gesendet werden.

    • Lösung: Überprüfe, ob die SMTP-Server-Adresse und der Port korrekt sind und dass der Server aktiv ist.
  3. Fehlermeldung: Der Server hat eine oder mehrere Empfängeradressen zurückgewiesen.

    • Lösung: Stelle sicher, dass die E-Mail-Adressen korrekt und im richtigen Format eingegeben sind.

Alternative Methoden

Falls du nicht mit CDO arbeiten möchtest, gibt es alternative Methoden, um E-Mails zu versenden:

  • Blat: Ein externes Tool, das ebenfalls E-Mails über SMTP versenden kann.
  • Outlook Automation: Wenn Outlook installiert ist, kannst du auch die Outlook-Objektbibliothek verwenden, um E-Mails zu versenden. Dies benötigt jedoch, dass Outlook konfiguriert ist.

Praktische Beispiele

Angenommen, du möchtest eine E-Mail an mehrere Kontakte in einer Excel-Liste senden. In der ersten Spalte stehen die Namen, in der zweiten die E-Mail-Adressen und in der dritten steht "ja", wenn eine E-Mail gesendet werden soll.

' Beispielcode siehe Schritt-für-Schritt-Anleitung

Mit dem obigen Code kannst du für jede Zeile, die "ja" in der dritten Spalte hat, eine personalisierte E-Mail versenden.


Tipps für Profis

  • Debugging: Verwende Debug.Print, um Werte von Variablen während der Ausführung anzuzeigen.
  • Sicherheit: Achte darauf, dass Passwörter in deinem Code nicht hardcodiert werden. Überlege, wie du sensible Informationen sicher verwalten kannst.
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um das Programm robuster zu machen. Nutze On Error Resume Next und überprüfe anschließend auf Fehler.

FAQ: Häufige Fragen

1. Wie setze ich den SMTP-Server richtig ein? Um den SMTP-Server einzurichten, benötigst du die IP-Adresse oder den Domainnamen des Servers sowie den korrekten Port (in der Regel 25 oder 587).

2. Kann ich E-Mails auch ohne VBA versenden? Ja, du kannst auch Tools wie Blat oder andere E-Mail-Clients nutzen, um E-Mails ohne VBA zu versenden.

3. Wie integriere ich HTML in meine E-Mails? Um HTML-Formatierungen in deine E-Mails zu verwenden, setze die Eigenschaft .HTMLBody anstelle von .TextBody im CDO.Message-Objekt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige