HTTPWebRequest - E-Mail Script betätigen

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Radinator.

    HTTPWebRequest - E-Mail Script betätigen

    Hey :)
    Ich habe ein PHP-Script um Emails zu versenden via Button möchte ich dieses Script "betätigen" bzw. abrufen.

    $fehlermeldung = $_GET['fehlermeldung'];

    wäre ja script.php?fehlermeldung=IRGENDETWAS+FUNKTIONIERT+NICHT, wenn ich es im Browser aufrufe klappt es so natürlich.

    Ich habe jetzt vieles probiert und es nur mit dem Webbrowser geschafft, doch halte ich den für veraltet und langsam, hoffe mir kann jemand helfen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SysOp1“ ()

    SysOp1 schrieb:

    Ich habe ein PHP-Script um Emails zu versenden via Button möchte ich dieses Script "betätigen" bzw. abrufen.
    Du redest ja ohne Punkt und Komma ;D

    SysOp1 schrieb:

    script.php?fehlermeldung=IRGENDETWAS+FUNKTIONIERT+NICHT
    Mit was verschickst du deine Emails?

    SysOp1 schrieb:

    Ich habe jetzt vieles probiert
    Könntest du uns an deinm Code teilhaben lassen? Also uns mal zeigen, was du bisher versucht hast. Eventuell können wir dir dann zeigen, was du besser machen kannst

    SysOp1 schrieb:

    veraltet und langsam
    Wieso sollste das langsam und veraltet sein? Gut ich mein abgesehen davon, dass es schon aus Protokoll-Sicht langsamer ist, da du ja erst die Webseite aufrufen musst um dann die Daten zu übertragen.

    Noch viel grundsätzlicher: WARUM genau willst du diesen Weg gehen und holst dir nicht einfach gleich eine .NET Lib, mit der du Emails versenden kannst?

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Das Verschicken der Emails funktioniert, das tut ein ganz simples PHP-Skript: php-einfach.de/php-tutorial/php-email/ - dieses würde ich halt nur gerne durch VB.NET abrufen.
    Wieso ich mich für diese Methode entschieden habe ist ganz einfach, vorher habe ich die Emails in Visual Basic .NET via SMTP Server verschickt nur konnte man mit Tools wie z.B .NET Reflector meine Zugangsdaten auslesen, dies umgehe ich halt mit der "neuen" Methode, bei der ich sehr gerne bleiben würde.

    Mein derzeitiger Code in VB sieht so aus:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim Request As HttpWebRequest = CType(WebRequest.Create("http://***************/senderror.php?text="), HttpWebRequest)
    3. Request.Method = "POST"
    4. Request.ContentType = "application/x-www-form-urlencoded"
    5. Dim Post As String = "text=" & txtFehlerMeldung.Text
    6. Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
    7. Request.ContentLength = byteArray.Length
    8. Dim DataStream As Stream = Request.GetRequestStream()
    9. DataStream.Write(byteArray, 0, byteArray.Length)
    10. DataStream.Close()
    11. Dim Response As HttpWebResponse = Request.GetResponse()
    12. DataStream = Response.GetResponseStream()
    13. Dim reader As New StreamReader(DataStream)
    14. Dim ServerResponse As String = reader.ReadToEnd()
    15. reader.Close()
    16. DataStream.Close()
    17. Response.Close()
    18. End Sub

    SysOp1 schrieb:

    meine Zugangsdaten auslesen
    Die kann man auch lesen, wenn Du sie auf einen Zettel schreibst und diesen neben Deine Klingel hängst. :thumbsup:
    Solche Daten haben im Quelltext eines .NET-Programms nix zu suchen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @SysOp1 Sorry, aber ich wundere mich gerade, wo im PHP-Skript die Autentifizierung steckt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    @SysOp1 Sorry, aber ich wundere mich gerade, wo im PHP-Skript die Autentifizierung steckt.


    Nicht vorhanden was natürlich dazu führen kann das man mein Postfach vollspammen kann, ist natürlich ausbaufähig. Learning by Doing ist mein Motto :D

    Edit:
    Meine Fehlermeldung lautet:
    Zusätzliche Informationen: Von der Übertragungsverbindung können keine Daten gelesen werden: Die Verbindung wurde geschlossen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SysOp1“ ()

    SysOp1 schrieb:

    Request.Method = "POST"
    und

    SysOp1 schrieb:

    senderror.php?text="
    können doch nicht funktionieren? Du erwartest im PHP eine GET-Variable und in deinem VB.NET Code machst du ein POST Aufruf.

    SysOp1 schrieb:

    Visual Basic-Quellcode

    1. Dim Post As String = "text=" & txtFehlerMeldung.Text
    2. Dim byteArray() As Byte = Encoding.UTF8.GetBytes(Post)
    3. Request.ContentLength = byteArray.Length
    4. Dim DataStream As Stream = Request.GetRequestStream()
    5. DataStream.Write(byteArray, 0, byteArray.Length)
    probier doch einfach mal eine Ausgabe des empfangenen Textes.

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Zusätzliche Informationen: Von der Übertragungsverbindung können keine Daten gelesen werden: Die Verbindung wurde geschlossen

    Da passiert nichts auch wenn ich's nochmal angepasst habe.

    Edit:
    Der Fehler wird in dieser Zeile ausgegeben:

    VB.NET-Quellcode

    1. Dim ServerResponse As String = reader.ReadToEnd()

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SysOp1“ ()

    Ich weiß nicht ob das "Bumpen" hier nach 24 Stunden erlaubt ist, ich tue dies jetzt mal, falls es nicht erlaubt sein sollte bitte mich darauf aufmerksam machen :)
    Benötige echt Hilfe, die Fehlernachricht sagt mir ja nur, das die Verbindung geschlossen wird bevor irgendwelche Daten überhaupt gelesen werden können.
    VS12 markiert die oben genannte Zeile als Auslöser dafür.

    Ich dachte es könnte am PHP-Script liegen, das tut es aber nicht.

    SysOp1 schrieb:

    Da passiert nichts auch wenn ich's nochmal angepasst habe.
    Was ist deine Anpassung?

    SysOp1 schrieb:

    Der Fehler wird in dieser Zeile ausgegeben:
    Schau mal nach, ob in reader überhaupt was drinnen steht oder nicht

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    VB.NET-Quellcode

    1. Dim Request As HttpWebRequest = CType(WebRequest.Create("http://***************/senderror.php?text="), HttpWebRequest)


    zu

    VB.NET-Quellcode

    1. Dim Request As HttpWebRequest = CType(WebRequest.Create("http://***************/senderror.php"), HttpWebRequest)



    Mein neuer Code besteht aus diesem HttpWebRequest Tutorial (Für anfänger) Tutorial hier.
    Ich benutze das .NET Framework 3.5 - ein User hatte das selbe Problem, doch eine Antwort hatte er nicht erhalten.

    reader = NULL

    SysOp1 schrieb:

    reader = NULL
    Und was soll das?

    Edit:

    SysOp1 schrieb:

    PHP-Script um Emails zu versenden
    und

    SysOp1 schrieb:

    dieses Script "betätigen" bzw. abrufen.
    kann ich ja noch nachvollziehen. Wenn du aber in deinem Code lediglich den Inhalt der POST Variable in einer eigenen speicherst

    SysOp1 schrieb:

    $fehlermeldung = $_GET['fehlermeldung'];
    und den Inhalt dann per Mail versendest, OHNE irgendetwas auf die Seite zu schreiben, dann kann die

    Radinator schrieb:

    Ausgabe des empfangenen Textes.
    nicht klappen, da wie gesagt Du überhaupt nix zurück gibst.
    Was du versuchen willst ist, die PHP Seite aufzurufen (mit deinem Message-Text), das Script nimmt den Text entgegen und versendet die Mail. Anschließend versuchst du von der leeren Response-Page zu lesen, was aber nicht hin haut, da sie leer ist. Also entweder lässt du das mit dem Response lesen oder du gibst per header("Content-type:application/text"); oder header("Content-type:application/json"); und echo "dein text"; etwas aus, was du lesen kannst (stackoverflow.com/questions/40…ng-json-from-a-php-script)

    Lg Radinator

    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Radinator“ ()

    SysOp1 schrieb:

    übliches echo
    Heißt was? Bzw was hast du bisher ausgegeben? Zeig mal deine Php Code
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell