Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0051: E-Mails via Winsock versenden

 von 

Beschreibung 

Mit Hilfe des Winsock-Controls ist es möglich E-Mails zu versenden. Kernstück bildet hier eine Funktion, an die alle nötigen Daten übergeben werden können. Die E-Mail wird anhand dieser Daten versand. Der Rückgabe Parameter gibt Auskunft über Erfolg oder Mißerfolg der Aktion.

Dieser Tipp wurde am 28. September 2002 aufgrund einiger Kommentare geändert. Vielen Dank an dieser Stelle an Jens Fuchs für den Programmcode! Die Änderung ist im Code markiert.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [4,19 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
' Die Komponente ' (MSWINSCK.OCX)' wird benötigt.
' Die Komponente 'Microsoft Windows Common Controls 5.0 (SP2) (comctl32.ocx)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Windows Socket "Winsock1"
' Steuerelement: Rahmensteuerelement "Frame3"
' Steuerelement: Textfeld "Text8" auf Frame3
' Steuerelement: Schaltfläche "Command1" auf Frame3
' Steuerelement: Fortschrittsanzeige "ProgressBar1" auf Frame3
' Steuerelement: Timersteuerelement "Timer1" auf Frame3
' Steuerelement: Textfeld "Text6" auf Frame3
' Steuerelement: Textfeld "Text7" auf Frame3
' Steuerelement: Beschriftungsfeld "Label6" auf Frame3
' Steuerelement: Rahmensteuerelement "Frame2"
' Steuerelement: Textfeld "Text5" auf Frame2
' Steuerelement: Textfeld "Text4" auf Frame2
' Steuerelement: Beschriftungsfeld "Label5" auf Frame2
' Steuerelement: Beschriftungsfeld "Label4" auf Frame2
' Steuerelement: Rahmensteuerelement "Frame1"
' Steuerelement: Textfeld "Text3" auf Frame1
' Steuerelement: Textfeld "Text2" auf Frame1
' Steuerelement: Textfeld "Text1" auf Frame1
' Steuerelement: Beschriftungsfeld "Label3" auf Frame1
' Steuerelement: Beschriftungsfeld "Label2" auf Frame1
' Steuerelement: Beschriftungsfeld "Label1" auf Frame1
' Steuerelement: Beschriftungsfeld "Label7"

Option Explicit

Private Mailing As Boolean
Private Result As String
Private Sec As Integer
Private TimeOut As Integer

Private Const Server As String = "Ihre.MailServer.Domäne"
Private Const Absender As String = "Gudrun Gichtelgrund"
Private Const Mail As String = "gundi@gichtelgrund.de"
Private Const Domain As String = "ActiveVB.de"

Private Sub Form_Load()
    TimeOut = 20
    Text1.Text = Server
    Text2.Text = Absender
    Text3.Text = Mail
    Text8.Text = TimeOut
    ProgressBar1.Min = 0
    ProgressBar1.Value = 0
    ProgressBar1.Max = TimeOut * 5
    
    Text1.SelStart = 0
    Text1.SelLength = Len(Text1.Text)
End Sub

Private Sub Command1_Click()
    If Mailing = False Then
        If SendMail(Text1.Text, Text2.Text, Text3.Text, Text4.Text, _
                    Text5.Text, Text6.Text, Text7.Text) Then
            
            MsgBox ("E-Mail erfolgreich verschickt")
        Else
            MsgBox ("Fehler beim Versenden aufgetreten")
        End If
    Else
        MsgBox ("Letzte E-Mail wird noch gesendet !")
    End If
End Sub

Private Sub Text8_Change()
    TimeOut = Val(Text8.Text)
End Sub

Private Sub Timer1_Timer()
    Sec = Sec + 1
    ProgressBar1.Value = Sec - 1
    DoEvents
End Sub

Private Function Response(RCode$) As Boolean
    Sec = 0
    Timer1.Interval = 200
    Timer1.Enabled = True
    Response = True
  
    Do While Left$(Result, 3) <> RCode
        DoEvents
        If Sec > TimeOut * 5 Then
            If Len(Result) Then
                ShowStatus ("SMTP Error! Falscher Rückgabewert")
            Else
                ShowStatus ("SMTP Error! Time out")
            End If
            
            Response = False
            Exit Do
        End If
    Loop
  
    Result = ""
    ProgressBar1.Value = 0
    Timer1.Enabled = False
End Function

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Winsock1.GetData Result
End Sub

Private Sub ShowStatus(ByVal Text$)
    Label7.Caption = Text
    Label7.Refresh
End Sub

Private Function SendMail(SMTP As String, FromName As String, _
    FromMail As String, ToName As String, ToMail As String, Subj As String, _
    Body As String) As Boolean
                          
    Dim Mail As String, outTO As String, outFR As String
    
    If Mailing = True Then Exit Function
    Mailing = True
    MousePointer = vbHourglass

    If Winsock1.State = sckClosed Then
        On Error Goto ERRORMail
        Winsock1.LocalPort = 0
        
        outFR = "mail from: " & FromMail & vbCrLf
        outTO = "rcpt to: " & ToMail & vbCrLf & "data" & vbCrLf
        
        Mail = Mail & "From: " & FromName & " <" & FromMail & ">"
        Mail = Mail & vbCrLf & "Date: " & Format(Date, "Ddd")
        Mail = Mail & ", " & Format(Date, "dd Mmm YYYY") & " "
        Mail = Mail & Format(Time, "hh:mm:ss") & " +0100" & vbCrLf
        Mail = Mail & "X-Mailer: Visual Basic Mailing Tester"
        Mail = Mail & vbCrLf & "To: " & ToName & " <" & ToMail & ">"
        Mail = Mail & vbCrLf & "Subject: " & Subj & vbCrLf
        Mail = Mail & vbCrLf & Body & vbCrLf & vbCrLf & "." & vbCrLf
        
        '### Verbindung aufbauen
        ShowStatus ("Verbinde...")
        Winsock1.Protocol = sckTCPProtocol
        Winsock1.RemoteHost = SMTP
        Winsock1.RemotePort = 25
        Winsock1.Connect
        
        If Not Response("220") Then Goto ERRORMail

        '### Verbunden
        ShowStatus ("Verbunden")
        Winsock1.SendData ("HELO " & Domain & vbCrLf)
        If Not Response("250") Then Goto ERRORMail
        
        '### Mail Senden
        ShowStatus ("Nachricht Senden")
          
        'UPDATE am 28. September 2002
        Winsock1.SendData (outFR)
        If Not Response("250") Then Goto ERRORMail

        Winsock1.SendData (outTO)
        If Not Response("250") Then Goto ERRORMail

        Winsock1.SendData ("DATA" & vbCrLf)
        If Not Response("354") Then Goto ERRORMail

        Winsock1.SendData (Mail)
        If Not Response("250") Then Goto ERRORMail
        'UPDATE ENDE

        '### Trennen
        ShowStatus ("Trennen")
        Winsock1.SendData ("quit" & vbCrLf)
        If Not Response("221") Then Goto ERRORMail
        ShowStatus ("Nachricht verschickt !")
        SendMail = True
    End If
ERRORMail:
    Mailing = False
    Winsock1.Close
    MousePointer = vbDefault
    Exit Function
End Function
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 118 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Florian am 27.01.2009 um 11:49

Der Teil

Winsock1.SendData ("DATA" & vbCrLf)
If Not Response("354") Then Goto ERRORMail


muss raus, da der "Data" Befehl schon in dem outTO-String enthalten ist:

outTO = "rcpt to: " & ToMail & vbCrLf & "data" & vbCrLf


Durch diese Änderung hat es bei mir auf Anhieb funktioniert.

Kommentar von christopher grünstäudl am 25.12.2008 um 13:28

hallo
ich bräuchte den code auch unbedingt
bei mir funktionierts ja auch denke ich

aber ich bekommen den rückgabewert
"550 5.7.0 Need to authenticate via SMTP-AUTH-Login {mp008}"

könnt ihr mir vl helfen was ich machen muss um mich zu authentifizieren??
mit winsock hab ich noch sehr wenig gemacht und kenne mach demnach auch nicht recht gut aus

brauchen würd ich das dafür dass der anwender eine bestätigunsmail an mich schickt...

ich würd mich über ein eure hilfe sehr freun
lg christoph

Kommentar von Mathias Schlieper-Scheer am 10.10.2008 um 14:36

wie immer..
Dieser Tip läuft schon seit ich ihn beobachte nicht.
Bei meinem jetzigen Test bricht er beim Senden des DATA-Blocks ab.Grund dafür ist ein falscher Rückgabewert (250 statt den abgefragten 354).

Mathias Schlieper-Scheer

Kommentar von Frank Müller am 16.08.2007 um 15:19

Habe mich mal des Problems mit den Attachments angenommen.
Teilweise ist die Konstruktion noch etwas krumm aber prinzipiell sollte es gehen. In dieser Version kann nur eine Datei angehengen werden und diese sollte auch nicht sooooo riesig sein.

Ihr benötigt dazu den Code von Rene Weiß (weiter unten) und fügt noch folgendes ein:
Im Modul im Definitionsteil:

Global AttachmentName As String
Global AttachmentFullName As String 'name inkl Pfad


und in der Funktion Sendmail fügt Ihr als erstes...

Dim DatNr As Byte
Dim Abschnitt As String
Dim X, DatLen As Long


...ein und ersetzt ab der Zeile
"If Form1.Winsock1.State = sckClosed Then"
bis "'### Verbindung aufbauen"
den Code mit dem nachfolgendem Codeschnipsel

If Form1.Winsock1.State = sckClosed Then
'keine bestehende Verbindung
Sourcetext = Sourcetext & "From: " & Sender_Name & " <" & Sender_Mail & ">"
Sourcetext = Sourcetext & vbCrLf & "Date: " & Format(Date, "Ddd")
Sourcetext = Sourcetext & ", " & Format(Date, "dd Mmm YYYY") & " "
Sourcetext = Sourcetext & Format(Time, "hh:mm:ss") & " +0100" & vbCrLf
Sourcetext = Sourcetext & "X-Mailer: Visual Basic Mailing Tester"
Sourcetext = Sourcetext & vbCrLf & "To: <" & Receiver_Mail & ">"
Sourcetext = Sourcetext & vbCrLf & "Subject: " & Subject & vbCrLf

'MIME ins Spiel bringen
Sourcetext = Sourcetext & "MIME-Version: 1.0" & vbCrLf
Sourcetext = Sourcetext & "Content-type: multipart/mixed; boundary=" & Chr$(34) & "----=_NextPart_000_0005_01C7E003.130707A0--" & Chr$(34) & vbCrLf
Sourcetext = Sourcetext & vbCrLf & "------=_NextPart_000_0005_01C7E003.130707A0--"
Sourcetext = Sourcetext & vbCrLf & "Content-type: text/plain; charset=utf-8" & vbCrLf

'hier wird der Body geschrieben
Sourcetext = Sourcetext & vbCrLf & Mailtext & vbCrLf & vbCrLf '& "." & vbCrLf

'falls Anhang...
If AttachmentFullName <> "" Then
'dateiname aus AttachmentFullName extrahieren
AttachmentName = Mid$(AttachmentFullName, InStrRev(AttachmentFullName, "\") + 1)

'attachment ankündigen
Sourcetext = Sourcetext & vbCrLf & "------=_NextPart_000_0005_01C7E003.130707A0--"
Sourcetext = Sourcetext & vbCrLf & "Content-Type: application/octet-stream;"
Sourcetext = Sourcetext & vbCrLf & " name=" & Chr$(34) & AttachmentName & Chr$(34)
Sourcetext = Sourcetext & vbCrLf & "Content-Transfer-Encoding: base64"
Sourcetext = Sourcetext & vbCrLf & "Content-Disposition: attachment;"
Sourcetext = Sourcetext & vbCrLf & " filename=" & Chr$(34) & AttachmentName & Chr$(34)
Sourcetext = Sourcetext & vbCrLf & vbCrLf

'datei über base64 umcodieren und anhängen
DatNr = FreeFile
Open AttachmentFullName For Binary Access Read As DatNr
DatLen = LOF(DatNr)
If DatLen > 57 Then Abschnitt = String(57, " ")

'immer schöne 57 Byte Päckchen... (damit die Mail recht schön aussieht)
Do While Not EOF(DatNr)
Get DatNr, , Abschnitt
Sourcetext = Sourcetext & base64_encode(B64(), Abschnitt) & vbCrLf
If DatLen - Loc(DatNr) < 57 Then
'falls ein Rest<57 byte, dann diesen lesen
Abschnitt = String(DatLen - Loc(DatNr), " ")
If Len(Abschnitt) = 0 Then Exit Do
End If
Loop
Close #DatNr

'dem MIME sagen: "Haben fertig"
Sourcetext = Sourcetext & vbCrLf & "------=_NextPart_000_0005_01C7E003.130707A0--" & vbCrLf
End If

'mail abschließen
Sourcetext = Sourcetext & "." & vbCrLf
'### Verbindung aufbauen


Die Datei, die Ihr mailen wollt, tragt Ihr im Command1_Click -Ereigniss in der Form1 ein:

AttachmentFullName = "C:\MeinOrdner\MeineDatei.txt"

Bei mir hat es so geklappt. Getestet ist der Spaß mit allen möglichen Binärdateien und mit PDFs.

Viel Spaß :-)

Kommentar von computerfreak am 28.06.2007 um 10:59

Habe das mal mit meinem web.de konto versucht.

Private Const Server As String = "smtp.web.de"
Private Const Absender As String = "computerfreak-simonenglish"
Private Const Mail As String = "computerfreak-simonenglish@web.de"
Private Const Domain As String = "web.de"

funktioniert so allerdings nicht!
bekomme immer einen fehler 'time out'!
was muss ich machen damit's funktioniert?

Kommentar von Christian Müllner am 04.03.2007 um 20:46

Habe das Problem bereits gelöst, hatte bei

Sourcetext = Sourcetext & ", " & Format(Date, "dd Mmm YYYY") & " "

das deutsche Monat gesendet, also Mär statt Mar

SG Christian

Kommentar von Christian Müllner am 02.03.2007 um 18:45

Hallo,

ich haben diesen Code zum Versenden von mails in einem meiner Programme eingebaut, funktioniert alles wunderbar, jedoch hat der Empfänger bei "Gesendet:" in der E-Mail ein falsches Datum.

Das ist angeblich seit März falsch und zwar um 2 Monate hinten.

Weiss jemand Rat??

Kommentar von Wasi am 03.08.2006 um 17:42

Hallo Marcus,

hab das auch mal bei web.de probiert und es funktioniert auch nicht immer, woran das liegt weiß ich auch nicht.

Deine Idee, das alles mal zusammen zutragen finde ich jedenfalls gut.

Ich hoffe es melden sich einige dazu.

Wasi...

Kommentar von marcus am 03.08.2006 um 16:58

Hallo zusammen,

ich weiß nicht wie iohr das so macht, aber bei mir funktioniert das nicht. Auch finde ich die ganzen Ergänzungen sind da doch sehr verwirrend.
Wie dem auch sei, bei mir scheitert es schon am Verbindungsaufbau...

Vielleicht kann ja noch einmal jemand ein funktionierendes Beispiel als Projekt verschicken.
Ich verwende smtp.web.de oder smtp.t-online.de

Wäre super wenn ich etwas von euch hören würde...

An den Admin dieses Tipps, vielleicht trägt man noch einaml alles Ergänzugen zusammen und erstellt den Tipp neu...

Danke schon einmal für eure Hilfe...

Kommentar von Wasi am 01.08.2006 um 18:04

Hallo,

ich hab folgendes Problem:
bei 1und1 funktioniert es mit der Authorisierung, aber bei
Freenet z.B. geht die Authorisierung nicht, da erhalte ich einen 503 fehler.

Ist es möglich auch ohne Authorisierung und wenn ja wie mach ich das?

Hab es im moment so:

ShowStatus ("Authorisierung...")
EbayMail.Winsock1.SendData ("AUTH LOGIN" & vbCrLf)
last_Call = "AUTH LOGIN" & vbCrLf
If Not Response1("334") Then Goto ERRORMail2
' Zurück kommt "334 VXNlcm5hbWU6" und damit Aufforderung nach Bentz.

Dieser Code funktioniert bei 1und1.

Wie bekomm ich es auch ohne Authorisierung hin?

Wasi...

Kommentar von Wasi am 01.08.2006 um 18:03

Hallo,

ich hab folgendes Problem:
bei 1und1 funktioniert es mit der Authorisierung, aber bei
Freenet z.B. geht die Authorisierung nicht, da erhalte ich einen 503 fehler.

Ist es möglich auch ohne Authorisierung und wenn ja wie mach ich das?

Hab es im moment so:

ShowStatus ("Authorisierung...")
EbayMail.Winsock1.SendData ("AUTH LOGIN" & vbCrLf)
last_Call = "AUTH LOGIN" & vbCrLf
If Not Response1("334") Then Goto ERRORMail2
' Zurück kommt "334 VXNlcm5hbWU6" und damit Aufforderung nach Bentz.

Dieser Code funktioniert bei 1und1.

Wie bekomm ich es auch ohne Authorisierung hin?

Wasi...

Kommentar von michael moellers am 15.07.2006 um 14:13

hi michael,

ohne zuwissen was in meinem code fehlt hast Du mich auf den richtigen weg gebracht. das mit dem sckClosed war der richitge Hinweis. nun funktioniert es wunderbar.
---------------------------------------------
Me.Winsock1.Close

Do

DoEvents

Loop Until Me.Winsock1.State = sckClosed
---------------------------------------------
so schließt sich das Programm wieder sauber:-)
Vielen Dank für die Hilfestellung!!!!!!!
Schöne Grüße
Michael

Kommentar von Stephan Triesch am 15.07.2006 um 00:51

Hallo Michael,

ohne genau zu wissen wie Du die Form ansprichst und welche Abhängigkeiten weiterhin existieren wird das schwierig.

In jedem Fall solltest Du den Aufruf der Routine von Form_Load nach Form_Activate verschieben, da dann zumindest alle Elemente vollständig geladen und ansprechbar sind (vielleicht wars das dann schon).

... tja ... und dann hängt alles davon ab wie Du die Form ansprichst und eingebunden hast ...
Bevor Du die Form (vermutlich automatisiert) wieder schliesst stelle sicher, dass im Empfangspuffer des Winsock-Steuerelementes keine Daten mehr liegen (und auf keine Daten mehr gewartet wird ... z.B. nach "quit") und dass die State-Eigenschaft auf sckClosed steht.
... kann alles sein ... muss aber nicht ;-)
... hängt wie gesagt davon ab, wie Du die Form ansprichst und eingebunden hast.

Anmerkung:
Falls Du die weiteren Elemente in der Form (Textfelder, Buttons, etc. ...) für Dein Projekt nicht benötigst, sondern lediglich die Routinen zum empfangen und senden, dann empfiehlt sich die Verwendung einer Klasse anstatt der Form.

Kommentar von michael moellers am 14.07.2006 um 21:28

hallo,

der code von rene funktionier wunderbar. jedoch habe ich doch noch ein problem. Kein Problem mit dme code an sich jedoch mit der verwendung in einer umfangreicheren Prozedur.

stellt euch vor in einer umfangreichen prozedur nutze ich nun diesen code (einfach nur ein Mail verschicken).

das e-mail wird auch verschickt nur leider hängt dann der Prozess im taskmanager.

die rutine vorher ist fehlerfrei gelaufen. Dermessenger Code ist auch vorher astrein gelaufen. habe nur das form und das modul in das andere Projekt gezogen und es an einem bestimmten punkt angesprochen.

Ok die funktionen des command1 habe ich in form_load ausführen müssen. Da die prozedur autark ohne bedienung laufen muß.

So nun meine Frage: Muß ich bei der Verwendung des Codes von Rene bei einer automatisierten Prozedur auf ereignisse warten oder müssen komponenten geschlossen oder beendet werden bevor ich zur eigendlichen Rutine zurückkehre?

Beim Fortschritt mit F8 und auch F5 gibts keinerlei Probleme. Erst in der fertigen exe-Datei.

Hat hier schon jemand ähnliches Problem gehabt?
schöne Grüße
michael

Kommentar von Stephan Triesch am 08.07.2006 um 14:10

Hier gibt es eine sehr gute Beschreibung zu SMTP / POP3 Befehlen, welche die meisten Fragen beantworten sollten (nicht von der Telnet-Verwendung irritieren lassen ... Befehle per Winsock sind die gleichen):

SMTP: http://www.it-academy.cc/content/article_browse.php?ID=915

POP3: http://www.it-academy.cc/content/article_browse.php?ID=0000000997

==============================================
Beratung für Datenlogistik und -verarbeitungen
Stephan Triesch

www.triesch.de
==============================================

Kommentar von Kevin am 10.04.2006 um 14:35

Ich ein Problem! :
Zeigt beim Vesenden ständig Fehler an z.b. Falscher Rückgabe Wert oder Timeout usw.

Und was muss ich bei SMTP Eintragen

Kommentar von Markus St. am 24.02.2006 um 17:05

Hy!

Dieser Quellcode hat mir sehr geholfen!


Aber, ich steh trotzdem noch vor einem Problem!


Weiß zufällig jemand, wie der Quellcode aussehen muss, wenn man zur E-Mail auch Attachments anhängen kann!

Danke, im vorhinein!


mfg
Markus St.

Kommentar von Rene am 20.01.2006 um 18:24

Grrrrrr......

Und dabei habe ich mich schon über die Fehler der anderen geärgert...

Bitte nehmt die Zeilen

Text7.MultiLine = True
Text7.ScrollBars = 2 'vertikal


aus dem Form1.Load - Ereignis!!
Diese Eigenschaften sind schreibgeschützt, tragt sie daher von Hand in die Eigenschaften des "Text7" - Feldes ein!

Ich wollte es halt` noch einfacher machen ...

Wer Anregungen für das Layout braucht - Bitte schön:
http://putfile.com/pic.php?pic=1/1911230664.jpg&s=x12

Jetzt aber.

Kommentar von Rene Weiss am 20.01.2006 um 18:12

Hallo zusammen,

nachdem ich dank dieses Beispiels und viel (!) Suchen im Netz dieses Thema realisieren konnte, möchte ich hier ein wenig helfen. Ich sehe immer wieder dieselben Fragen, aber nur wenig Hilfe.

Einige Tipps sind hilfreich, aber unvollständig hier dargestellt (z.B. der Code für "Authorisation"). Hier fehlt die komplette Function dazu... Da nützt einem der dargestellte Code garnichts.

Ich habe das Ganze laufen unter XP und VB6.
Ich habe alle meine vorhandenen Mailaccounts damit erfolgreich nutzen können. Darunter sind GMX, Web.de und andere. Durch den Einbau der "Authorisation" (User/Passwort) klappt das wunderbar.

Um es etwas einfacher darzustellen, habe ich möglichst viel Code in ein Modul verschoben, also weg vom Form!
Damit wird`s überschaubarer.

Folgendes wird benötigt (bitte die Namensgebung STRENGSTENS einhalten!):

"Form1" mit folgenden Inhalten:

Textfeld "Text7" (macht es schön gross)
"ProgressBar1"
"Label7" (macht es schön breit)
"WinSock1"
"Timer1"
"Command1"

Geht nun in den Quelltext des neuen Formulars, löscht alles, was dort ggf. schon steht und fügt folgenden Code stattdessen ein:

Option Explicit

Private Sub Form_Load()
TimeOut = 20
ProgressBar1.Min = 0
ProgressBar1.Value = 0
ProgressBar1.Max = TimeOut * 5

Text7.MultiLine = True
Text7.ScrollBars = 2 'vertikal

End Sub

Private Sub Command1_Click()
Label7.Caption = "" 'Statusfeld
Label7.BackColor = Form1.BackColor

Server = "mail.gmx.net" '<= eigenen Mailserver eingeben!
Sender_Name = "ABSENDERNAME" '<= angezeigter Absendername
Sender_Mail = "ABSENDERMAIL" '<= Absender Mailadresse
Benutzer = "MEIN BENUTZERNAME" '<= Benutzername des Mailaccounts
Password = "MEIN PASSWORT" '<= Passwort des Mailaccounts
Domain = "Test.org" '<= Inhalt scheint egal, muss aber sein

Receiver_Mail = "EMPFÄNGER MAILADRESSE" '<= Empfänger Mailadresse

Subject = "Mailtest" '<= Betreffzeile
Mailtext = "Das ist nur ein Test!" & vbCrLf & "Mit zweiter Zeile" '<= Inhalt der Mail

sendmail_start

End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'im Form stehen lassen, da es sich um eine Eigenschaft des Winsock-Elements handelt!
Form1.Winsock1.GetData Result
'Protokoll:
Form1.Text7.text = Form1.Text7.text & last_Call & Result
last_Call = ""

End Sub
Private Sub Timer1_Timer()
Sec = Sec + 1
Form1.ProgressBar1.Value = Sec - 1
DoEvents
End Sub


Das ist doch mal übersichtlich oder? :-))

Achtung:
Aller Werte (Empfänger, Absender, Mailtext usw. werden im Quelltext des "Command1"-Buttons eingestellt!!
Das ist nicht praktisch, hilft aber beim Verständnis und der Übersichtlichkeit ungemein!
Später könnt ihr euch eigene Textfelder für diese Werte machen und sie einfach übergeben. Aber hier soll es um die einfache Praxis gehen.

Dann braucht ihr noch ein "Modul", dessen Name egal ist.
Fügt dort folgenden Code ein:

Option Explicit
Global Mailing As Boolean
Global Result As String
Global Sec As Integer
Global TimeOut As Integer
Global last_Call As String

Global Server As String
Global Sender_Name As String
Global Sender_Mail As String
Global Domain As String
Global Benutzer As String
Global Password As String
Global Benutzer64 As String 'Benutzername base64-codiert
Global Password64 As String 'Password base64 codiert

Global Receiver_Mail As String

Global Subject As String 'Betreff
Global Mailtext As String 'Mailbody
Global Sourcetext As String

Global var_base64
Global B64() As Byte

Function sendmail_start()
var_base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
'ReDim B64(63)
' Die Austauschtabelle wird in ein Bytearray uebertragen.
B64() = StrConv(var_base64, vbFromUnicode)
Benutzer64 = base64_encode(B64(), Benutzer)
Password64 = base64_encode(B64(), Password)

If Mailing = False Then
If Sendmail Then
ShowStatus ("E-Mail erfolgreich verschickt")
Form1.Label7.BackColor = vbGreen
Else
ShowStatus ("Fehler beim Versenden aufgetreten")
Form1.Label7.BackColor = vbRed
Exit Function
End If
Else
ShowStatus ("Letzte E-Mail wird noch gesendet !")
Form1.Label7.BackColor = vbRed
End If
End Function

Function Sendmail() As Boolean
On Error Goto ERRORMail


If Mailing = True Then Exit Function
Mailing = True
Form1.MousePointer = vbHourglass
Sourcetext = "" 'wichtig bei mehreren Mails nacheinander

If Form1.Winsock1.State = sckClosed Then 'keine bestehende Verbindung

Sourcetext = Sourcetext & "From: " & Sender_Name & " <" & Sender_Mail & ">"
Sourcetext = Sourcetext & vbCrLf & "Date: " & Format(Date, "Ddd")
Sourcetext = Sourcetext & ", " & Format(Date, "dd Mmm YYYY") & " "
Sourcetext = Sourcetext & Format(Time, "hh:mm:ss") & " +0100" & vbCrLf
Sourcetext = Sourcetext & "X-Mailer: Visual Basic Mailing Tester"
Sourcetext = Sourcetext & vbCrLf & "To: <" & Receiver_Mail & ">"
Sourcetext = Sourcetext & vbCrLf & "Subject: " & Subject & vbCrLf
Sourcetext = Sourcetext & vbCrLf & Mailtext & vbCrLf & vbCrLf & "." & vbCrLf

'### Verbindung aufbauen
ShowStatus ("Verbinde...")
'Form1.Winsock1.Protocol = sckTCPProtocol 'TCP ist Standardwert
'Form1.Winsock1.RemoteHost = Server 'wird direkt übergeben
Form1.Winsock1.LocalPort = 0
Form1.Winsock1.RemotePort = 25
Form1.Winsock1.Connect (Server)
last_Call = "Connect" & vbCrLf
If Not Response("220") Then Goto ERRORMail
'### Verbunden

ShowStatus ("Verbunden")


'wenn Auth gewünscht, muss wohl mit
Form1.Winsock1.SendData ("EHLO " & Domain & vbCrLf)
last_Call = "EHLO " & Domain & vbCrLf
'gearbeitet werden

'Form1.Winsock1.SendData ("HELO " & Domain & vbCrLf)
'last_Call = "HELO " & Domain & vbCrLf
'If Not Response("250") Then GoTo ERRORMail

'GoTo var_1: 'einfache Möglichkeit, um ohne Auth. zu arbeiten
'********* Authorisierung Anfang ******************
ShowStatus ("Authorisierung...")
Form1.Winsock1.SendData ("AUTH LOGIN" & vbCrLf)
last_Call = "AUTH LOGIN" & vbCrLf
If Not Response("334") Then Goto ERRORMail
' Zurück kommt "334 VXNlcm5hbWU6" und damit Aufforderung nach Bentz.

'Benutzername wird base64 codiert übergeben. (s.u.)
Form1.Winsock1.SendData (Benutzer64 & vbCrLf)
last_Call = "<Username wird gesendet>" & Benutzer64 & vbCrLf
If Not Response("334") Then Goto ERRORMail

'jetzt fordert Server mittels "334 UGFzc3dvcmQ6" das Passwort an
'Passwort wird base64 codiert und übergeben
' Zurück kommt die Antwort "235 ok" als erfolgreich
Form1.Winsock1.SendData (Password64 & vbCrLf)
last_Call = "<Passwort wird gesendet>" & Password64 & vbCrLf
If Not Response("235") Then Goto ERRORMail

' Anzahl & Größe der E-Mails abfragen
'Bei einigen Mailservern müssen vor Versenden vorliegende Mails abgefragt werden
'Hier reicht es im Allg. den Status abzurufen, ohne die Mails herunterzuladen:
'Bei vorheriger Authorisation scheint dies überflüssig zu sein!!
' Form1.Winsock1.SendData "stat" & vbCrLf
' last_Call = "Abfrage Posteingang"
'If Response Then GoTo ERRORMail

'********* Authorisierung Ende ******************

var_1:

'### Mail Senden

Form1.Winsock1.SendData ("MAIL FROM:<" & Sender_Mail & ">" & vbCrLf)
last_Call = "MAIL FROM:<" & Sender_Mail & ">" & vbCrLf
If Not Response("250") Then Goto ERRORMail

Form1.Winsock1.SendData ("RCPT TO:<" & Receiver_Mail & ">" & vbCrLf)
last_Call = "RCPT TO:<" & Receiver_Mail & ">" & vbCrLf
If Not Response("250") Then Goto ERRORMail

Form1.Winsock1.SendData ("DATA" & vbCrLf)
last_Call = "DATA" & vbCrLf
If Not Response("354") Then Goto ERRORMail
' Antwort ' 354 Enter mail, end with CRLF.CRLF

Form1.Winsock1.SendData (Sourcetext)
last_Call = "<Sourcetext wird gesendet>" & vbCrLf
If Not Response("250") Then Goto ERRORMail

'### Trennen
ShowStatus ("Trennen")
Form1.Winsock1.SendData ("quit" & vbCrLf)
Form1.Text7.text = Form1.Text7.text & "quit" & vbCrLf
'If Not Response("221") Then GoTo ERRORMail
'wenn hier ein Fehler kommt, ist die Nachricht erfahrungsgemäss trotzdem gesendet
ShowStatus ("Nachricht verschickt !")
Sendmail = True

Else

End If

ERRORMail:
Form1.Winsock1.Close
Form1.MousePointer = vbDefault
Mailing = False

End Function

Function Response(RCode$) As Boolean
Sec = 0
Form1.Timer1.Interval = 200
Form1.Timer1.Enabled = True
Response = True

'Do While Left$(Result, 3) <> RCode '<= Prob: einger Server senden mehrere Replys
Do While InStr(1, Result, RCode) = 0 '<= hier nehmen wir aber nur den letzten Reply
DoEvents
If Sec > TimeOut * 5 Then
If Len(Result) Then
ShowStatus ("SMTP Error! Falscher Rückgabewert")
Else
ShowStatus ("SMTP Error! Time out")
End If

Response = False
Exit Do
End If
Loop

Result = ""
Form1.ProgressBar1.Value = 0
Form1.Timer1.Enabled = False
End Function
Function base64_encode(Code2() As Byte, Source As String) As String
On Error Goto base64_encode_Err

Dim n As Long
Dim i As Long
Dim c1 As Integer
Dim c2 As Integer
Dim c3 As Integer
Dim w(4) As Integer
Dim sourceB() As Byte
Dim Result() As Byte
Dim l As Long
Dim k As Long
Dim rest As Long
Dim cnt

l = Len(Source)
If l = 0 Then
Exit Function
End If
sourceB() = StrConv(Source, vbFromUnicode)

rest = l Mod 3
If rest > 0 Then
n = ((l \ 3) + 1) * 3
ReDim Preserve sourceB(n - 1)
Else
n = l
End If

ReDim Result(4 * n / 3 - 1) ' Das Ergebnis ist 4/3 mal so lang
cnt = 0
For i = 0 To n / 3 - 1
k = 3 * i 'Damit k nur ein- statt dreimal berechnet werden muss.
c1 = sourceB(k) ' Je drei Byte werden gelesen
c2 = sourceB(k + 1)
c3 = sourceB(k + 2)

w(1) = Int(c1 / 4) ' Je 6 Bit werden extrahiert
w(2) = (c1 And 3) * 16 + Int(c2 / 16)
w(3) = (c2 And 15) * 4 + Int(c3 / 64)
w(4) = c3 And 63

k = 4 * i 'Dami k nur ein- statt viermal berechnet werden muss
Result(k) = B64(w(1)) ' Die 6-Bit-Werte werden nach Tabelle
Result(k + 1) = B64(w(2)) ' durch Zeichen ersetzt.
Result(k + 2) = B64(w(3))
Result(k + 3) = B64(w(4))

Next i
' Je nach ueberzaehligen Bytes im Ergebnis wird dieses
' Fuellbytes aufgefuellt. Das Fuellbyte ist ein "="

Select Case rest

Case 0
' nix tun
Case 1

Result(UBound(Result)) = 61
Result(UBound(Result) - 1) = 61
Case 2
'
Result(UBound(Result)) = 61
End Select

base64_encode = StrConv(Result, vbUnicode)

base64_encode_End:
Exit Function

base64_encode_Err:
ShowStatus ("Fehler: " & Err & " / " & Error$ & " / Function: base64_encode in Modul base64")
Form1.Label7.BackColor = vbRed
Resume base64_encode_End
End Function
Function ShowStatus(ByVal text$)
Form1.Label7.Caption = text
Form1.Label7.Refresh
End Function


Das war`s schon, aber das Speichern nicht vergessen!

Wichtig ist, dass ihr die Steuerelemente so benennt, wie oben geschrieben!! Ich hatte einfach die ursprünglichen Felder so übernommen und keine Lust, sie umzubenennen.

Eines noch:
Insbesondere nach Fehlern einige Sekunden warten, bis ihr die Ausführung stoppt!!!!!!!!!!!
Bei mir stürzte das Prog. oft ab (Fehler in der Fehlerbehandlung??). Wenn es abstürzt, braucht ihr nicht darauf zu warten, dass es sich wieder einkriegt, sondern könnt es gleich "abschiessen" (meine Erfahrung). Ich habe mal eine Viertelstunde erfolglos gewartet...
Also wartet mind. 10 Sekunden, bevor ihr nach einem Fehler den Ablauf stoppt.

So, nun sollte es gehen.
Bei Fragen, wie ihr "Winsock" oder "ProgressBar1" in die Komponenten bekommt, einfach unten mal lesen. Das wurde -glaube ich- schon beantwortet.

Vielen Dank an den Urheber dieses Threads, ohne den ich das nie (!) geschafft hätte!

Gruss
René

Kommentar von Sebastian am 11.10.2005 um 19:24

Mit GMX hab ich's auch nicht auf die Reihe bekommen, aber Freemail von yahoo.de funktioniert damit einwandfrei. :) (Nur so als Tipp)

Kommentar von Simon Grimm am 11.10.2005 um 09:43

Hallo,

kann mir vll jemand das diesen Tipp zumailen, so das er mit einem GMX Account funktioniert. Blicke hier irgendwie nicht durch die ganzen ergänzungen durch.

Danke jetzt schon mal

Gruß Simon

Kommentar von DarkRaven am 17.06.2005 um 17:19

Ja, wie geht es das ganze mit AUTH LOGIN zu machen?

Kommentar von Schizophrenie am 08.04.2005 um 17:28

Hallo Leute!
Das Programm scheint ganz nett zu sein, jedoch benötigt man nur noch smtp server wo keine auth nötig ist....mgate.chello.at...vor 1jahr konnte ich hier anonyme mails versenden doch irgendwie ist das jetzt nicht mehr möglich...Entweder liegts am Programm oder sie haben wirklich die Authorisierungsmaßnahmen eingeführt. Hat jemand nen nonauth server? damit ich das testen kann?

Kommentar von Dirk am 05.04.2005 um 17:10

Am besten wärs wenn mir jemand gleich eine Version schickt mit der ich mails an web.de senden kann und mir sagt was ich bei dem smtp eintragen muss. danke

Kommentar von Bergmann, Dirk am 05.04.2005 um 16:53

ich hab nich so viel ahnung von den sachen und weiß nich was ich bei SMTP-Server oder so eingeben muss erfindet das nicht und hat deswegen einen Timeout-Error. kann mir jemand weiterhelfen? mfg d

Kommentar von Eyidilli am 17.03.2005 um 15:27

Warscheinlich müssen Sie im Menu "Projekt" dann "Komponenten" den Control "Microsoft Winsock" erst aktiveren. Dann haben Sie unter den Werkezugen den Winsock-Control, den sie In Ihre Form reinziehen müssen.

Den alten der als "Bild angezeigt wird, bitte erst löschen

viel Spaß damit.

Grüße

VBLERNER

Kommentar von Lukas am 17.03.2005 um 13:18

Hallo,
ich hab mal 'ne Frage...:
Wenn ich bei mir den Tipp starte, weiß mein PC nichts mit der Komponente 'Winsock1' anzufangen, er zeigt sie als PictureBox an.

Was kann ich da jetzt machen, damit das funktioniert?

wäre froh wenn ich 'ne Antwort kriege.

Kommentar von 99thalin99 am 26.02.2005 um 16:47

Der Code ist eigentlich OK,
wenn man folgendes ändert:
Bei outFR und outTO MÜSSEN die Befehle in GROßBUCHSTABEN sein. Also "MAIL FROM" und "RCPT TO".

Desweiteren sollte man beachten, das man mit diesen Proggi nur Mails verschicken kann, wenn kein SMTP AUTH verlangt wird (keine Anmeldung bzw. kein POP3 vor SMTP).

Tschau 99thalin99

Kommentar von Kevin am 20.02.2005 um 10:14

Hi leute habe ein kleines problem bei mir kommt immer falscher rückgabewert

habe dem mail server mail.gmx.de !


bitte antwortet schnell

Kommentar von jma am 23.01.2005 um 12:33

Hab die Kommentare durchgearbeitet, trotzdem bekomme ich keine Mail versendet.

Kann mir jemand eine Version mailen, die unter gmx getestet wurde und funktioniert.

besten dank schon mal
jma

Kommentar von Ergün Polat am 17.12.2004 um 14:38

Kann man mit dieser Methode auch E-Mails mit Dateianhang
schreiben?

Wenn ja, wie ? :-)

Danke schonmal im vorraus.

Kommentar von Sebastian Steiner am 11.06.2004 um 19:56

Hallo.

Ich fände es ganz toll, wenn ein ActiveVB Mitarbeiter den Tip nochmal unter Einbeziehung der ganzen Kommentare überarbeitet.
Und ne Frage: Was soll Domain für einen Wert haben?
Bei GMX wäre Server "mail.gmx.net", aber was soll ich bei Domain eintragen???

Viele Grüße!
Sebastian (www.sebastian-steiner.de)

Kommentar von lostsoul am 04.05.2004 um 10:40

Ist da nicht ein Fehler im Code?

outTO = "rcpt to: " & ToMail & vbCrLf & "data" & vbCrLf
If Not Response("250") Then Goto ERRORMail
' Antwort
' 250 2.1.5 Recipient <test@foo.bar> ok
' 354 Enter mail, end with CRLF.CRLF

Winsock1.SendData ("DATA" & vbCrLf)
If Not Response("354") Then Goto ERRORMail
' geht nicht, da jetzt die Mail erwartet wid...


Richtig wäre:
outTO = "rcpt to: " & ToMail & vbCrLf '& "data" & vbCrLf
If Not Response("250") Then Goto ERRORMail
' Antwort
' 250 2.1.5 Recipient <test@foo.bar> ok

Winsock1.SendData ("DATA" & vbCrLf)
If Not Response("354") Then Goto ERRORMail
' Antwort
' 354 Enter mail, end with CRLF.CRLF

Kommentar von dimitiger am 10.04.2004 um 20:45

Hallo,

also, SMTP-Zugang mit Authorisierung geht so:

' Verbindung aufbauen
ShowStatus ("Verbinde...")
Winsock1.Protocol = sckTCPProtocol
Winsock1.RemoteHost = SMTP
Winsock1.RemotePort = 25
Winsock1.Connect
If Not Response("220") Then Goto ERRORMail

' Verbunden
ShowStatus ("Verbunden...")
Winsock1.SendData ("HELO " & Domain & vbCrLf)
If Not Response("250") Then Goto ERRORMail

' Anfrage nach Auth. schicken
' Zurück kommt 334 und damit Aufforderung nach Bentz.
' und Passwort
ShowStatus ("Authorisierung...")
Winsock1.SendData ("AUTH LOGIN" & vbCrLf)
If Not Response("334") Then Goto ERRORMail

'Benutzername wird base64 codiert übergeben. (s.u.)
Winsock1.SendData (base64_encode(B64(),Benutzer) & vbCrLf)
If Not Response("334") Then Goto ERRORMail

'Passwort wird base64 codiert und übergeben
' Zurück kommt die Antwort 235 als erfolgreich
Winsock1.SendData (base64_encode(B64(),Password) & vbCrLf)
If Not Response("235") Then Goto ERRORMail


Und bei dem "Flaschen Rückgabewert" empfehle ich hier noch MsgBox Result einzufügen und so die Antworten vom Server zu verfolgen.
If Len(Result) Then
ShowStatus ("SMTP Error! Falscher Rückgabewert"):MsgBox Result'Rückgabewert vom Server
Else
ShowStatus ("SMTP Error! Time out")
End If
Response = False
Exit Do
End If
Loop
MsgBox Result'Auch wenn es klappt
Result = ""

Kommentar von dimitiger am 10.04.2004 um 19:20

Hallo,

also, SMTP-Zugang mit Authorisierung geht so:

' Verbindung aufbauen
ShowStatus ("Verbinde...")
Winsock1.Protocol = sckTCPProtocol
Winsock1.RemoteHost = SMTP
Winsock1.RemotePort = 25
Winsock1.Connect
If Not Response("220") Then Goto ERRORMail

' Verbunden
ShowStatus ("Verbunden...")
Winsock1.SendData ("HELO " & Domain & vbCrLf)
If Not Response("250") Then Goto ERRORMail

' Anfrage nach Auth. schicken
' Zurück kommt 334 und damit Aufforderung nach Bentz.
' und Passwort
ShowStatus ("Authorisierung...")
Winsock1.SendData ("AUTH LOGIN" & vbCrLf)
If Not Response("334") Then Goto ERRORMail

'Benutzername wird base64 codiert übergeben. (s.u.)
Winsock1.SendData (base64_encode(B64(),Benutzer) & vbCrLf)
If Not Response("334") Then Goto ERRORMail

'Passwort wird base64 codiert und übergeben
' Zurück kommt die Antwort 235 als erfolgreich
Winsock1.SendData (base64_encode(B64(),Password) & vbCrLf)
If Not Response("235") Then Goto ERRORMail


Und bei dem "Flaschen Rückgabewert" empfehle ich hier noch MsgBox Result einzufügen und so die Antworten vom Server zu verfolgen.
If Len(Result) Then
ShowStatus ("SMTP Error! Falscher Rückgabewert"):MsgBox Result'Rückgabewert vom Server
Else
ShowStatus ("SMTP Error! Time out")
End If
Response = False
Exit Do
End If
Loop
MsgBox Result'Auch wenn es klappt
Result = ""

Kommentar von mgraffe am 27.03.2004 um 17:06

Hallo ihr fleißigen VBler,
wie macht man das denn jetzt mit dem "Falscher Rückgabewert" ich hab mir alle Kommentare durchgelesen und das Programm (mit dem Update) runtergeladen und hab schon mind. 10 smtp Server durchprobiert, bekomme es aber nicht hin ... könnt Ihr mir bitte helfen? Ich kenn mich noch nicht so aus ...

Kommentar von Urs Meyer am 25.03.2004 um 08:49

Oliver, wenn zusätzlich die Authorisierung beim POP3-Server verlangt wird, geht das auch auf diese Art?

Kommentar von Oliver Cramer am 17.12.2003 um 11:43

An alle "Anfänger" (Programm geht nicht...)

Habe Anfangs auch Probleme gehabt, bis ich mir einfach die Rückgabetexte-/werte angesehen habe. Wie schon einige sagten, werden teilweise mehrzeile Antworten geliefert. Ich habe den Code so angepasst, dass nur der Wert der letzten Zeile verwendet wird. Wenn man das Prinzip verstanden hat ist das eigentlich ganz einfach...

Autentication am SMTP-Server geht so:

Winsock1.SendData ("AUTH LOGIN " & vbCrLf)

Dann müssen der Username und das Passwort des Mail-Servers als Base64 codiert übergeben werden.

Winsock1.SendData (Base64EncodeAscii("USERNAME") & vbCrLf)
Winsock1.SendData (Base64EncodeAscii("PASSWORT") & vbCrLf)

Dazu verwende ich die Function Base64EncodeAscii() von ActiveVB: http://www.activevb.de/tipps/vb6tipps/tipp0504.html
Ich hoffe damit habe ich einigen geholfen.

Dateianhänge:

Habe da auch noch keine Lösung, aber ich glaube, dass das ähnlich funktioniert. Vermutlich wird dazu ein entsprechender Befehl (ähnlich 'DATA' + 'MAIL'), ein Attachment-Header(?) und dann wohl die Datei, vermutlich wohl auch Base64 codiert. Wer da schon ein weinig weiter ist als ich: Bitte melden...

Kommentar von nightmare am 10.12.2003 um 15:47

hallo leute
hab den code mal getestet und für gut empfunden.
hab da nur noch eine frage, wie kann ich eine mail an mehrere empfänger schicken?
versuch ein programm zu erstellen, das gewisse informationen intern im betrieb rumschickt

im moment hab ich mir so geholfen:
ich arbeite in einer schleife alle empfänger ab. da das aber nicht das wahre ist, möchte ich das ändern. nur weiss ich im moment noch nicht, wo genau ich den hebel ansetzen muss, damit das script mit einem rutsch alle mails verschickt (auf einem normalen client projeziert, sollte das script alle empfänger in die 'an'-zeile schreiben und dann das mail verschicken).

ich hoffe, ihr könnt mir den einen oder endern tipp geben.

mfg
nightmare

ps: entwickelt wird das ganze mit vb6 und soll dann auf nt4-clients laufen.

Kommentar von Helmut am 21.10.2003 um 10:05

Hallo wer kann mir helfen? Das Programm funkt unter XP mit Zusatz von Rudi (19.10.02).
Mail wird verschickt und kommt an. Leider fehlt Empfänger (Empfänger wird als "undisclosed-recipients" angezeigt) und der Betreff (Subject) und der Text (Body).
Was muß ich unter Domain$ eintragen?
Meldungen:
220 mail-in-02.arcor-online.net ESMTP arcor.de Mailservices usermail
250 mail-in-02.arcor-online.net
250 Ok
250 Ok
354 Please start mail input.
250 Mail queued for delivery.
221 Closing connection. Good bye.
Wäre sehr gut, wenn einer ein Lösung anzubieten hätte!

Kommentar von Peter Gyse am 17.10.2003 um 11:00

Weiss nicht ob Authentifizierung über winsock möglich ist,

aber hier ist eine andere Lösung

<code>
' Reference to Microsoft ActiveX Data Objects 2.5 Library
' Reference to Microsoft CDO for Windows 2000 Library
Dim iConf as new CDO.Configuration
Dim Flds as ADODB.Fields

Set Flds = iConf.Fields
Flds(cdoSendUsingMethod) = cdoSendUsingPort ' 2
Flds(cdoSMTPServer) = "mail.microsoft.com"
Flds(cdoSMTPServerPort) = 67
Flds(cdoSMTPAccountName) = "My Name"
Flds(cdoSMTPAuthenticate) = cdoBasic ' 1
Flds(cdoSendUserName) = "domain\username"
Flds(CdoSendPassword) = "password"
Flds(cdoSendEmailAddress) = """MySelf"" <myself@microsoft.com>"
Flds(cdoSMTPUseSSL) = True
Flds.Update

' oder

Flds("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "fakesmtp.microsoft.com"
Flds("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
Flds("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort ' CdoSendUsing enum value = 2
Flds("http://schemas.microsoft.com/cdo/configuration/smtpaccountname") = "My Name"
Flds("http://schemas.microsoft.com/cdo/configuration/sendemailaddress") = """MySelf"" <myself@microsoft.com>"
Flds("http://schemas.microsoft.com/cdo/configuration/smtpuserreplyemailaddress")= """Another"" <another@microsoft.com>"
Flds("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
Flds("http://schemas.microsoft.com/cdo/configuration/sendusername") = "domain\username"
Flds("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
Flds.Update


Dim iMsg as New CDO.Message
Set iMsg.Configuration = iConf
' .. Rest hier rein
iMsg.To = strTo
iMsg.from = strFrom
iMsg.subject = strSubject
iMsg.TextBody = strBody

iMsg.Send

' Aufräumen nicht vergessen
Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing

</code>

SMTP-Dienst wie gehabt muss auf Server(IIS) laufen.

Kommentar von Stefan Scheidegger am 18.09.2003 um 16:03

Hallo, was muss ich ändern um das mailpasswort "mitzugeben"

Kommentar von Mehmet am 30.08.2003 um 18:02

Wie soll das Programm versenden können, wenn es keine
Felder gibt wo man sein eigenen Benutzernamen und Kennwort eingeben kann. Oder ist es nur für Spam gut ?

pop.gmx.de
smptp.gmx.de

Kommentar von VBFreak am 26.08.2003 um 11:18

Danke für das Beispiel!!!

Mit den Korrekturen von Rudi am 19.10.2002 (s.u.) funktioniert das uinter XP einwandfrei!

Gruss,
VBFreak

Kommentar von Jochen Wierum am 14.08.2003 um 18:25

@Marcus:

Hallo,
soweit ich informiert bin, leitet die "DATA"-Zeile den Inhalt der Mail ein (d.h., es trennt den Text vom Header) und ist für eine Ordnungsgemäße Funktion unerlässlich!

Außerdem dürfte die Version des Betriebssystems egal sein, da ja keine Windowsfunktionen (abgesehen vom TCP Protokol) genutzt werden. Versuche einfach einmal, den Timeout auf 30 oder 40 heraufzusetzen...

MfG,
Jochen

Kommentar von Marcus Höting am 14.08.2003 um 18:03

Bei WindowsXP Professional (build 2600.xpsp2.030422-1633) müssen folgende Zeilen entfernt werden, da sonst ein Timeout die Folge ist:

Winsock1.SendData ("DATA" & vbCrLf)
If Not Response("354") Then Goto ERRORMail

Kommentar von Heavens Spy am 04.06.2003 um 00:30

Der Winsock-Control (MSWINSCK.OCX) ... wo gibt es diese Komponenten offiziell?
Leider kommt mir bisher keiner diese zur Verfuegung stellen.

Danke fuer dir Auskunft vorab.

Kommentar von Espana am 16.05.2003 um 14:04

Also, dieses Programm funzt nicht !!!
Da das Paswort niergendwo eingetragen werden kann, kommt kein Senden von Emails zustande !!!

Grüß an alle.

M.Espana

Kommentar von Christoph Schwarz am 11.04.2003 um 15:38

Also anhänge an ner email hängen mime codiert dran. man muss das ganze in den text (body) der email reinschreiben. nur ist mime nicht grade unkompliziert. hab ne dll gefunden die das kann. nur kostet die 58 dollar. :(

Kommentar von Christoph Schwarz am 09.04.2003 um 11:50

"451 Need to authenticate via SMTP-AUTH-Login" das krieg ich jedes mal als rückgabe. Ich melde mich auch vorher beim pop an und wieder ab. Welchen befehl muss ich denn für diesen smtp login senden ?!?

Kommentar von Dornii am 08.04.2003 um 14:17

Bei mir hackts ab Zeile

Winsock1.SendData (outTO)

aus.

Kommentar von Stephan am 31.01.2003 um 15:29

Funktioniert komischerweise nur mit einem smtp-server von vielen, die ich gelistet habe. Ich habe viele smtp-server ohne Passwort gesammelt.

jetzt habe ich einen anderen source gefunden, da gehts wenigstens mit zwei servern aus der liste.
gibts da eigentlich keinen kompletten Code mit Attachments versenden und Links versenden und HTML-Body usw. der auch wirklich richtig funktioniert?

Kommentar von Bernd am 27.01.2003 um 15:03

Unter ME muß allerdings der folgende Code-Bereich entfernt werden:

Winsock1.SendData ("DATA" & vbCrLf)
If Not Response("354") Then Goto
ERRORMail

Kommentar von Taurus am 09.01.2003 um 21:29

An alle GMX-User:

GMX erfordert ja eine Anmeldung per POP, bevor man per SMTP Mails verschicken kann.
Wie das geht, könnt Ihr aus Tip 0071 erfahren.
Es reicht schon aus, wenn Ihr die Anzahl der Mails in der Mailbox abruft und Euch dann wieder abmeldet.
Danach sollte dieser Tip (0051) auch bei GMX-Usern funktionieren.

Gruß
Taurus

Kommentar von phelan am 25.12.2002 um 17:51

Hat jemand eine Ahnung, wie man eine SMTP Authentisierung bei diesem Teil einfügt... die Frage seh ich zwar oefters hier ... nur keine Lösung ;))) Wäre dringend.

Kommentar von Sven am 23.12.2002 um 18:11

Leider habe ich ein kleines Problem. Beim Start des Projektes kommen zwei Fehlermeldungen:
1. Datei COMctl32.ovx kann nicht geladen werden.
2. Datei Form1.log kann nicht gelande werden.
Dadurch entsteht warscheinlich im Programm ein Fehler bei der Zeile:
Progressbar.min = 0
Kann mir jemand helfen ??
Einfach eine Mail an mich senden

Kommentar von Markus am 30.11.2002 um 16:26

Hallo,

für alle mit dem Winsock-Lic-Problem:
Irgendwo im Downloadbereich von MS gibt es Servicepacks für VB (oder ds VS). Darüber hinaus gibt es ein spezielles(!) Patch, das angewendet werden kann, sollte man Lic-Probleme mit den ActiveX-Controls haben (betrifft nämlich nicht nur das WinSock..)

Gruß

Markus

Kommentar von Rudi am 19.10.2002 um 09:06

Habe übersehen, daß Text hier nur unformatiert übernommen wird. Mein Beitrag deshalb nochmals mit Platzhalter #. Wenn ihr den Text kopiert und in einem Editor anstelle des #-Zeichens ein Zeilenende einfügt, wird das Ganze wieder leserlich. ++++++++++++++++++++++++++++++
Das Programm hat einige Bugs, auf die manche SMTPs mit Fehlfunktionen reagieren, d.h. Fehlerrückmeldungen liefern, die schließlich zur Anzeige: "SMTP Error ! Falscher Rückgabewert" führen und/oder die Darstellung beim Empfänger verfälschen. Ich habe das Programm mit WIN98, Outlook Express und den Providern T-Online und Tiscali-dsl getestet. Während T-Online die meisten Bugs schluckt, konnte ich erst nach folgenden Korrekturen mit Tiscali-dsl eine E-Mail versenden:#
1) Syntaxkorrekturen#
outFr = "MAIL FROM:<" & FromMail & ">" & vbCrLf #
outto = "RCPT TO:<" & ToMail & ">" & vbCrLf ' die Datenstart-Anweisung "data" ist doppelt und entfällt hier#
2) Die MAIL-Variable muß geteilt werden, damit mehrere SendData (MAIL)-Anweisungen erzeugt werden können. Dann ergibt sich beim Empfänger auch die richtige Datenzuordnung.#
DIM MAIL, MAIL1, MAIL2, MAIL3, MAIL4, MAIL5, outTo............#
MAIL1 = MAIL1 & "From.........#
MAIL4 = MAIL4 & "Date.........#
MAIL4 = MAIL4 & ", "........#
MAIL4 = MAIL4 & Format.........#
MAIL4 = MAIL4 & "beliebig.........#
MAIL2 = MAIL2 & "To:.........#
MAIL3 = MAIL3 & "Subject.........#
MAIL5 = MAIL5 & Body & vbCrLf & vbCrLf 'die Datenende-Anweisung "." & vbCrLf wird weiter unten gesetzt.#
3)Änderung der SendData-Aufrufe#
Anstelle: "Winsock1.SendData (MAIL)" folgende Zeilen eintragen#
Winsock1.SendData (MAIL1)#
Winsock1.SendData (MAIL2)#
Winsock1.SendData (MAIL3 & MAIL4 & MAIL5)#
Winsock1.SendData ("." & vbCrLf)#
4) Option - damit werden im Text-Fenster alle Serverrückmeldungen für Analysezwecke aufgelistet. Bitte die nachstehende Sub entsprechend ergänzen.#
Private Sub Winsock1_DataArrival.......#
Winsock1.GetData Result#
Text7.Text = Text7.Text & Result#
End Sub#

Kommentar von Rudi am 19.10.2002 um 00:34

Das Programm hat einige Bugs, auf die manche SMTPs mit Fehlfunktionen reagieren, d.h. Fehlerrückmeldungen liefern, die schließlich zur Anzeige: "SMTP Error ! Falscher Rückgabewert" führen und/oder die Darstellung beim Empfänger verfälschen.
Ich habe das Programm mit WIN98, Outlook Express und den Providern T-Online und Tiscali-dsl getestet.
Während T-Online die meisten Bugs schluckt, konnte ich erst nach folgenden Korrekturen mit Tiscali-dsl eine E-Mail versenden:
1) Syntaxkorrekturen

outFr = "MAIL FROM:<" & FromMail & ">" & vbCrLf
outto = "RCPT TO:<" & ToMail & ">" & vbCrLf ' die START-Anweisung "data" ist doppelt und entfällt hier

2) Die MAIL-Variable muß geteilt werden, damit mehrere SendData (MAIL)-Anweisungen erzeugt werden können. Dann ergibt sich beim Empfänger auch die richtige Datenzuordnung.

DIM MAIL, MAIL1, MAIL2, MAIL3, MAIL4, MAIL5, outTo............

MAIL1 = MAIL1 & "From.........
MAIL4 = MAIL4 & "Date.........
MAIL4 = MAIL4 & ", ".........
MAIL4 = MAIL4 & Format.........
MAIL4 = MAIL4 & "beliebig.........
MAIL2 = MAIL2 & "To:.........
MAIL3 = MAIL3 & "Subject.........
MAIL5 = MAIL5 & Body & vbCrLf & vbCrLf 'die ENDE-Anweisung "." & vbCrLf wird weiter unten gesetzt.

3)Änderung der SendData-Aufrufe

Anstelle: "Winsock1.SendData (MAIL)" folgende Zeilen eintragen

Winsock1.SendData (MAIL1)
Winsock1.SendData (MAIL2)
Winsock1.SendData (MAIL3 & MAIL4 & MAIL5)
Winsock1.SendData ("." & vbCrLf)

4) Option - damit werden im Text-Fenster alle Serverrückmeldungen für Analysezwecke aufgelistet

Private Sub Winsock1_DataArrival.......
Winsock1.GetData Result
Text7.Text = Text7.Text & Result
End Sub


Kommentar von michael am 17.10.2002 um 14:51

hi leute
bei mir funktioniert dieses programm einfach nicht selbst wenn ich es kommplett downloade kommt immer die fehlermelung " Fehler beim versenden aufgetreten " kann mir da jemand nen tipp geben wie ich dieses programm an unseren mail server anpassen kann da ich ihn im programm schon eigetragen habe weiß ich im moment echt nicht weiter

Kommentar von Jürgen am 15.10.2002 um 21:10

Ich suche eine Lösung für die SMTP-Authentifikation bei "1und1(Puretec)". Ich weiß nur, dass deren Methode LOGIN ist.
Wer kann helfen?

Kommentar von am 15.10.2002 um 19:22

Kommentar von Denny Becker am 29.09.2002 um 14:11

Hi! Super Programm ... jedoch kann ich keine eMail versenden. Habe keine Ahnung woran das liegen könnte. Er gibt immer wieder die Meldung von wegen nicht gesendet, egal was ich für einen SMTP Server angebe. Selbst Server wo man sich nicht anmelden muss akzeptiert er nicht ... Woran kann das liegen?

Kommentar von christian.l am 23.09.2002 um 19:19

Hallo!
Wer kann mir helfen.
Ich bekomme immer eine Fehlermeldung
"Fehler beim Versenden aufgetreten".
Die Verbindung zum SMTP-Server dürfte aber passen.
Danke im vorraus

Kommentar von Riccy am 16.08.2002 um 03:31

Hallo Leute
1. Spitzen Programm !
2. Läuft bei mir nicht immer kommt der Fehler "Beim versenden ERROR !..."
ich versuche mich über "hotmail.com" (als smtp) einzuwählen, liegt das vielleicht daran ??
danke schon mal im vorraus !!
-Riccy.. another VB user

Kommentar von Christian Karl am 30.07.2002 um 13:52

Hallo! Bei mir funktionierts so weit, würde jedoch wie einige andere in diesem Forum auch, die Mails gerne über den Exchange Server verschicken!LG Christian

Kommentar von Franz am 24.07.2002 um 20:46

Hallo,
bei mir funktioniert das Skript!
Ich würde aber gerne Mails über den Microsoft Exchance Server versenden,
geht das, und wenn ja wie?
Grüße
Franz

Kommentar von Markus Zeller am 11.06.2002 um 12:02

Wie kann mit diesem netten Programm
a)einen Link auf den Anhang
b)einen Anhang versenden ?
alles unter VB6
MfG Markus

Kommentar von Martin am 09.06.2002 um 14:03

Hy Leute,
Wenn ich das Programm starten will markiert er mir diesen bereich (ProgressBar1.Min = 08beim abschnit Form_Load())) was sollte da falsch?

Kommentar von verleihnix am 02.06.2002 um 16:22

ich versuche das beispiel mit vb6 und xp home ins laufen zu bekommen. immer wenn ich das winsock-control verwenden möchte meint die ide 'lizenzierungsinformation nicht gefunden...'
da das schon mal geklappt hat und ich seither auf xp gewechselt habe fürchte ich mal es liegt am xp??? weiss jemand abhilfe???
danke
verleihnix

Kommentar von David E. am 30.04.2002 um 07:40

Hallo Liebes AtiveVB Team,
ich versuche die Mails über meinen Purtec Account zu versenden, die erwarten aber zusätzlich eine Authorisierung also vermutlich mein Passwort, der Rückgabewert lautet wie folgt: 530 Authentication required.
Wie muss der Command lauten um diese zu senden ?
Mfg
David

Kommentar von PowerWapiti am 04.04.2002 um 02:41

@Pap:
das ist der Programmname vom E-Mailprogram.
Kannst auch z.B. "Paps Mailer 1.0" oder so nennen ;)

Kommentar von Pap am 03.04.2002 um 13:28

Hallo,
wer kann mir sagen was diese Zeile zu sagen hat:
MAIL = MAIL & "X-Mailer: Visual Basic Mailing Tester"
Mfg
Pap

Kommentar von lala am 25.03.2002 um 00:16

wenn ich die exe ausfuehre kommt einer fehler bei If Winsock1.State = sckClosed Then Variable definiert nicht

Kommentar von newbie am 25.03.2002 um 00:09

oooooooops das kann man ja downloaden... man bin ich bloed ;)))

Kommentar von newbie am 25.03.2002 um 00:07

kann mir einer das ganze projekt also die .vbp, .frm etc schicken? danke

Kommentar von Hamir am 19.01.2002 um 10:17

Hi, wie kann ich Anlagen mit dem Beispiel versenden?
Übergens funktioniert ganz gut.
Danke!!

Kommentar von Jens Rilling am 01.12.2001 um 01:03

Hallo, das funktioniert sehr gut, ich hab noch ein paar Erweiterungen für CC: bzw. BCC: eingebaut, aber stehe nun vor dem Problem ein Attachment hinzufügen zu wollen - BASE64-encoded. Hat da jemand eine nette Source, die sowas generiert aus einem File? Würde mich freuen, wenn mir da jemand weiterhelfen könnte bzw. mir sowas Mailen könnte.

Kommentar von STwombat am 25.11.2001 um 16:17

für Daniel.Lensing:
if progressbar1.value then timer1.enabled=false
end if
mfg STwombat

Kommentar von Thomas am 18.11.2001 um 01:29

Ich versuche das schon die ganze Zeit, bekomme aber immer: SMTP falscher Rückgabewert. Wahrscheinlich liegt es daran, das der Yahoo Smtp Server über den ich gehen will, vorher eine POP Authentifizierung verlangt. Wie muß ich das Skript ändern?

Kommentar von christarth am 04.11.2001 um 09:48

Bei mir kommt immer eine Fehlermeldung:
smtp ERROR!! Falscher Rückgabewert!
Wieso?

Kommentar von sven am 31.10.2001 um 16:46

Hallo, mit Erfahrung kann ich leider kaum dienen, doch ne Frage hätte ich. Wie hänge ich ein Attachment an die E-Mail? Für Rat wäre ich sehr verbunden!

Kommentar von Michael am 28.10.2001 um 11:00

Hallo ein kleines Problem
Bei mir kommt immer wieder die gleiche sache herraus SMTP FALSCHER RÜCKGABE WERT ! Hab schon vieles versucht z.B. erst den localport abgefragt den dann anstatt der null eingetragen lassen. Aber immer wieder die gleiche meldung
Kann mir jemand Helfen
mfg
michael

Kommentar von Daniel.Lensing am 14.10.2001 um 09:04

Leider habe ich ein kleines Problem. Beim Start des Projektes kommen zwei Fehlermeldungen:
1. Datei COMctl32.ovx kann nicht geladen werden.
2. Datei Form1.log kann nicht gelande werden.
Dadurch entsteht warscheinlich im Programm ein Fehler bei der Zeile:
Progressbar.min = 0
Kann mir jemand helfen ??
Einfach eine Mail an mich senden.

Kommentar von MaxMarx am 22.07.2001 um 23:51

In dem Code steckt ein Bug...
In der Response funktion sollte man nicht die ersten 3 zeichen überprüfen, sonder einfach
Do While Instr(1,result,rcode) = 0
überprüfen...
GMX sendet nähmlich an einer stelle 2 Codes auf einmal...
udn zwar den erwarteten als zweiten...

Kommentar von Roland Kraft am 05.07.2001 um 13:43

Was muss ich eintragen, damit ich zusätzlich eine Kopie an einen anderen Empfänger senden kann (Cc bzw. Bcc) ?
Gruß Roland

Kommentar von sebastian am 05.07.2001 um 07:09

Hallo, bei mir kommt kurz bevor die Progressbar 100% erreicht eine Fehlermeldung mit Ungültiger Eigenschaftswert in der Progressbar

Kommentar von Franz am 02.07.2001 um 14:21

HI!
Hab zwei Fragen:
.)gibt es eine Möglichkeit dieses Scribt auch mit einen Microsoft Exchance Server zu verwenden.
.)die häufigste Frage ..wie kann ich einen Anhang z.B. Word anhängen ?
Ich hoff das irgendein VB -Spezi mir helfen kann und bedanke mich jetzt schon für jede Hilfe
LG
Franz

Kommentar von T.R. am 15.05.2001 um 15:14

Hi, was bringts wenn alle Fragen "wie versendet man Anhänge", bei mir funzt das nicht, wel noch keiner hier 1 mal ein Server gesagt hat, bei dem des Funzt! Also....

Kommentar von JJK am 05.05.2001 um 19:02

würde ja gerne mails versenden, habe mich auch angemeldet, aber versandt funktioniert trotzdem nicht, liegt daran das vom mailserrver keine rückmeldung kommt "GMX" from und to wird bestätigt wenn aber body gesendet wird kommt nichts zurück, wird durch timeout beendet

Kommentar von MaxMarx am 28.04.2001 um 11:11

Für alle GMX-User:
man muss sich anmelden indem man erst die Mails abruft und dann kan man senden...

Kommentar von Axel Keller am 22.04.2001 um 11:30

Um E-Mails an GMX-Adressen zu schicken uss man als MailServer den mx von gmx (mx0.gmx.net) eintragen, der sendet aber als Antwort auf den rcpt zuerst 250 und dann erst 354 (muss mal dann halt im code ändern...)
mfg Axel

Kommentar von Ferdi am 22.04.2001 um 00:03

Wie kann ich zusaetzlich ein Attachment mit versenden? Hat da jemand was?

Kommentar von Stefan K. am 17.04.2001 um 12:13

Das Prog. funktioniert aber nicht 100%. Hab das mal selbst in die Hand genommen, wer´s sehen will -- kampfer@gmx.at

Kommentar von Max am 05.04.2001 um 19:36

Stefan bei Web.de gibt es da einen genialen Service. Den hab cih auch. Bei mir klappts nur nicht, weil ich Winsock net hab :-(

Kommentar von Max am 05.04.2001 um 19:32

Hi.
Kann es sein, dass das bei dem Working Model nicht geht? Kann ich mir das Steuerelement Winsock irgendwie besorgen, auch wenn ich nicht die Volle Version hab?

Kommentar von Stefan K. am 03.04.2001 um 18:31

Danke Micha.... aber wo geht´s dann? ... Kann mir das wer verraten?

Kommentar von Micha am 03.04.2001 um 12:35

Erst mal für alle GMX-User: Hier funktioniert das ganze nicht, da man sich erst anmelden muss um eine Nachricht zu verschicken.
Was mich Interessiert, wie hänge ich eine Datei dort an ?
Es wurde hier schon oft danach gefragt, jedoch finde ich nirgends eine Antwort darauf.

Kommentar von Stefan KAmpfer am 02.04.2001 um 18:26

Ich habe es mit mail.gmx.net versucht, aber das funktioniert nicht... liegt es an GMX. Bei welchem Anbieter funktioniert es? MFG Stefan P.S.: Spitzen Site

Kommentar von Stefan Ahlers am 21.03.2001 um 08:50

Das ganz funktioniert super, aber ich habe es nicht hinbekommen einen Anhang zu versenden. Kann mir da jemand helfen?

Kommentar von Joachim Schipper am 20.03.2001 um 08:55

Super sache das...
Wie kann ich mit dem Teilchen Textdateien als anhang versenden?

Kommentar von Jürgen Ahlers am 19.03.2001 um 10:34

Der Script funktioniert sehr gut. Kann mir jemand sagen wie man einen Anhang schicken kann ?
Danke !

Kommentar von [-Necron-] am 15.03.2001 um 20:06

Schöne Grüße an alle VB-ler!
Ich hab da ein Problem:
Ich hab die VB6-Einsteiger-Edition (kein Working-Model; exe können erzeugt werden). Wenn ich das Winsock-Control zu einem Projekt hinzufügen will, kommt eine Fehlermeldung:
'Lizenzierungsinformationen für diese Komponente nicht gefunden. Sie verfügen nicht über die erforderliche lizens, um dieses Funktionsmerkmal in der Entwicklungsumgebung nutzen zu können.'
So, jetzt weiss ich nicht weiter. Die Hilfe sagt mir nur noch, dass villeicht informationen in der regestry gelöscht wurden. Toll... und jetzt???
Bitte helft mir!!!!! Was muss ich jetzt tun???
Danke an alle Hilfsbereiten!
:)

Kommentar von masterjojo am 10.03.2001 um 15:07

Wo bekomme ich einen anonymen Mailserver her? oder was soll ich sonst dort eingeben, wenn ich die Email NICHT über T-online verschicken will?

Kommentar von Biendl Michael am 08.03.2001 um 17:54

Hallo!
Wie kann ich mich mit einem Benutzernamen und Passwort an einem Mailserver anmelden??
das Programm funktioniert bei mir nur mit dem T-Online Surver und ansonsten nicht und ich möchte es über eine andere E-mail adresse laufen lassen

Kommentar von Alex am 08.03.2001 um 08:16

Ist es möglich auch Dateien (Attachments) an das Mail anzuhängen??

Kommentar von Nico Bau am 07.03.2001 um 12:42

*lach* hat sich erledigt.. klappt alles prima..

Kommentar von Nico Bau am 06.03.2001 um 17:50

Das Programm läuft bei mir gut. Ich habe nur eine Frage: wenn ich den zu sendenden text als String-Konstante senden will, kann ich keine Zeilenumbrüche machen (chr(10) klappt nicht). Woran liegt das und wie kann man das trotzdem hinbekommen?

Kommentar von chris am 25.02.2001 um 13:37

Also. ich habs jetzt 5 mal versucht. aber das programm bringt immer nur fehler. kann mir mal wer helfen, das dieser fehler nicht mehr auftritt? immer am schluss kommt "Fehler beim senden"
gruss chris

Kommentar von chris am 25.02.2001 um 13:35

an dani
gib mal nur mail.t-online.de ein. vergiss das mit mailto. das ist ein html begriff. bei hotmail funktioniert es. aber nur mit euthan.

Kommentar von John Lanners am 09.01.2001 um 08:16

Programm lief nicht auf Anhieb bei mir. Musste das Senden der Zeile "data vbcrlf" einzeln durchführen und nicht im outto String versenden. Jetzt klappt es! Danke John

Kommentar von Rambo2004 am 07.01.2001 um 11:16

Hallo, dieses ferfahren kenne ich schon seit längerer Zeit(mit telnet). Ich finde jedoch keinen remailer der das senden von emails zuläßt. Bei gmx wird die verbindung auf port 25 sofort wieder getrennt. Kennt jemand email-dienste die das senden mit diesem verfahren zulassen?

Kommentar von Simon Ennulat am 30.12.2000 um 23:35

Welche Domain muss ich denn in der Konstante "Domain" speichern? Muss ich das überhaupt ändern?

Kommentar von Daniel am 28.12.2000 um 13:01

Ich habe meine E-Mail adresse bei T-Online. Wenn ich nun bei SMTP mailto.t-online.de eintrage (so steht es im Handbuch) kommt eine Fehlermeldung.
Wie mach ich falsch?

Kommentar von Christian Holler am 04.12.2000 um 13:57

Bei mir funktioniert das senden nur, wenn der angegebene Absender meines SMTP-Accounts auch wirklich existiert!

Kommentar von Balance am 28.10.2000 um 23:19

Hallo leute,
Bin ein VB Anfänger,möchte gerne dieses Skrip verwenden, aber bei mir funktioniert das senden nicht, obwol eine Verbindung da ist
Gruß balance

Kommentar von Götz Reinecke am 19.10.2000 um 18:12

Hallo Alexander,
eigentlich ist das nicht so gedacht (mit der DFÜ) kann es sein daß Du Deine Internetoptionen auf "Verbindung über Modem herstellen" stehen hast?
Wenn Du es auf LAN umlegst dürfte das Problem behoben sein
Grüße
Götz

Kommentar von Alexander Tschense am 18.10.2000 um 13:41

Hallo, ich bin total beeindruckt von diesem Skript, habe allerdings eine Frage. In diesem Skript wird automatisch eine DFÜ-Verbindung aufgebaut (Winsock1.LocalPort = 0). Wie kann ich diese nach dem Versenden wieder beenden?