Email versenden mit vb.net
Hallo,
ich habe eine vb.net Konsolenanwendung geschrieben welche ein email via meinen gmail-account verschickt.
Auf meiner Entwicklungsumgebung ( windows 10 ) klappt das einwandfrei.
Führe ich die Applikation auf einem Windows Server 2012 Rechner aus wird das email nicht verschickt.
Es ensteht dabei keine Fehlermeldung. Ich nehme an auf meinen Windows Server 2012 fehlt irgend eine Rolle oder so,
hat jemand eine Ahnung was das sein könnte.
Danke für Eure Hilfe
Der Code sieht so aus:
Imports System.IO
Imports System.Net.Mail
Imports System.Net
Module Module2
Sub Main()
Try
'zip as email verschicken
Dim lsSMTPServer As String = "smtp.gmail.com"
Dim loMessage As MailMessage = Nothing
Dim loClient As SmtpClient = Nothing
loClient = New SmtpClient()
loClient.Timeout = 50000
loClient.Host = lsSMTPServer
loClient.Port = 587
loClient.EnableSsl = True
loClient.Credentials = New System.Net.NetworkCredential("user@gmail.com", "password")
loMessage = New MailMessage()
loMessage.IsBodyHtml = True
loMessage.From = New MailAddress("adresse@gmail.com")
loMessage.To.Add(New MailAddress("aaaaa@aa.com"))
loMessage.Subject = "Subject"
loMessage.Body = "Bodyn..."
loMessage.Attachments.Add(New Attachment("Date"))
loClient.Send(loMessage)
Catch ex As Exception
Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("c:\tmp\err.txt", True)
file.WriteLine(ex.ToString)
file.Close()
End Try
End Sub
End Module
ich habe eine vb.net Konsolenanwendung geschrieben welche ein email via meinen gmail-account verschickt.
Auf meiner Entwicklungsumgebung ( windows 10 ) klappt das einwandfrei.
Führe ich die Applikation auf einem Windows Server 2012 Rechner aus wird das email nicht verschickt.
Es ensteht dabei keine Fehlermeldung. Ich nehme an auf meinen Windows Server 2012 fehlt irgend eine Rolle oder so,
hat jemand eine Ahnung was das sein könnte.
Danke für Eure Hilfe
Der Code sieht so aus:
Imports System.IO
Imports System.Net.Mail
Imports System.Net
Module Module2
Sub Main()
Try
'zip as email verschicken
Dim lsSMTPServer As String = "smtp.gmail.com"
Dim loMessage As MailMessage = Nothing
Dim loClient As SmtpClient = Nothing
loClient = New SmtpClient()
loClient.Timeout = 50000
loClient.Host = lsSMTPServer
loClient.Port = 587
loClient.EnableSsl = True
loClient.Credentials = New System.Net.NetworkCredential("user@gmail.com", "password")
loMessage = New MailMessage()
loMessage.IsBodyHtml = True
loMessage.From = New MailAddress("adresse@gmail.com")
loMessage.To.Add(New MailAddress("aaaaa@aa.com"))
loMessage.Subject = "Subject"
loMessage.Body = "Bodyn..."
loMessage.Attachments.Add(New Attachment("Date"))
loClient.Send(loMessage)
Catch ex As Exception
Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("c:\tmp\err.txt", True)
file.WriteLine(ex.ToString)
file.Close()
End Try
End Sub
End Module
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 303868
Url: https://administrator.de/contentid/303868
Ausgedruckt am: 18.11.2024 um 19:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo,
Eventuell fängt auch eine vorgeschaltete Firewall Zugriffe auf SMTP-Server silent ab, mal mit Wireshark den Verkehr mitschneiden.
New Attachment("Date")
das kommt mir etwas spanisch vor, ein Attachment ohne Pfad? Das wird vermutlich eine Exception auslösen weil der Pfad oder Datei nicht gefunden wird...c:\tmp\err.txt
bist du sicher das du einen Ordner tmp auf dem Zielsytem hast ? Denn dann schlägt selbst das Schreiben einer Logdatei fehl.Eventuell fängt auch eine vorgeschaltete Firewall Zugriffe auf SMTP-Server silent ab, mal mit Wireshark den Verkehr mitschneiden.
Zitat von @drentsch:
Das mit der Firewall war auch mein erster Gedanke und ich diee zum Test mal ausgeschaltet, ohne Erfolg.
Ich dachte da eher an eine Firewall in einem Router oder UTM nicht die des Servers.Das mit der Firewall war auch mein erster Gedanke und ich diee zum Test mal ausgeschaltet, ohne Erfolg.
Was sagt Wireshark?
Und meine anderen Hinweise?
p.s. Wo lag jetzt das Problem wenn du es schon als gelöst markiert hast?
Und was sagt es?
Gegen welche .NET Framework Version hast du deine Anwendung kompiliert? Und hast du sichergestellt das dieses auf dem Zielsystem verfügbar ist? Die alten 2012er sind ja etwas hinterher was das .NET angeht.
Ein nslookup auf dem Zielsystem und mal ein manuelles Verbinden via telnet solltest du ebenfalls dort testen.
Das ganze kannst du auch mal per Powershell umschreiben um zu sehen was die an Fehler wirft. Powershell kann ja alles was mit .NET zu tun hat, auch.
Gegen welche .NET Framework Version hast du deine Anwendung kompiliert? Und hast du sichergestellt das dieses auf dem Zielsystem verfügbar ist? Die alten 2012er sind ja etwas hinterher was das .NET angeht.
Ein nslookup auf dem Zielsystem und mal ein manuelles Verbinden via telnet solltest du ebenfalls dort testen.
Das ganze kannst du auch mal per Powershell umschreiben um zu sehen was die an Fehler wirft. Powershell kann ja alles was mit .NET zu tun hat, auch.
Guck mal in die FAQ da steht wie du den Status der Frage selber zurücksetzen kannst
Wie kann ich einen Beitrag als gelöst markieren?
Denke das wurde deswegen gemacht, damit die Leute nicht vergessen Ihre Frage als gelöst zu markieren.
Nimm mal das ganze try...catch Konstrukt aus deinem Programm raus und kompiliere es nochmal.
Wenn es nun zu einem Fehler kommt sollte sich der JIT Debugger beim Ausführen melden und du kommst dem ganzen vielleicht ein Stück näher.
Außerdem wäre es eventuell interessant mit welchem Useraccount das ganze ausgeführt wird und wo (PS-Konsole/CMD /mit oder ohne Adminrechte, etc.)
Wie kann ich einen Beitrag als gelöst markieren?
Denke das wurde deswegen gemacht, damit die Leute nicht vergessen Ihre Frage als gelöst zu markieren.
Nimm mal das ganze try...catch Konstrukt aus deinem Programm raus und kompiliere es nochmal.
Wenn es nun zu einem Fehler kommt sollte sich der JIT Debugger beim Ausführen melden und du kommst dem ganzen vielleicht ein Stück näher.
Außerdem wäre es eventuell interessant mit welchem Useraccount das ganze ausgeführt wird und wo (PS-Konsole/CMD /mit oder ohne Adminrechte, etc.)
Dann stimmt definitiv etwas mit dem Server nicht, habe dein Skript hier mal testweise kompiliert und auf einer Server 2012 VM mit aktuellstem .NET Framework laufen lassen, ebenfalls mit GMAIL Account, ging problemlos.