Mail aus einer Software heraus versenden

Manchmal möchte aus einer Desktopanwendung heraus eine Mail verschicken. Das ist insofern problematisch, da man die Zugangsdaten für einen Mailaccount nicht in einer Anwendung hinterlegen sollte. Aus Webanwendungen heraus ist das Senden von Mails dagegen eine einfache Sache. Also was liegt näher als diesen Vorteil für das Senden von Mails aus Desktopanwendungen heraus zu nutzen.

<?php
    $reciever=$_POST["reciever"];
    $allowedRecieverDomain="example.org";
    $subject=$_POST["subject"];
    $text=$_POST["message"];

    //Sender
    $senderName="Mailer";
    $sender="";

    //Additional challenge
    $challenge="abc123";
    if($challenge!=$_POST["challenge"]) return;

    //Check reciever
    $atCount=substr_count($reciever, "@");
    if($atCount>1) return;

    if(!(strpos($reciever, "@" . $allowedRecieverDomain)===FALSE))
    {
        mail($reciever, $subject . " - (" . date("d.m.y - H:m:s") . ")", $text, "From: $senderName <$sender>");
    }
?>

Ein kleines PHP Skript mit dem Namen „mailer.php“ sorgt dafür das die Mail bzw. der Text der Mail in Empfang genommen wird. Anschließend wird nachgeschaut ob die Mail an einen validen Sender adressiert ist. In diesem Beispiel werden nur Mails an @example.org weitergeleitet. Schließlich möchte man keine Spamschleuder betreiben. Nun müssen die Parameter in der Anwendung noch per POST-Request übergeben werden. Unter C# könnte das ganze so aussehen:

System.Net.ServicePointManager.Expect100Continue=false;

string url="http://example.org/mailer.php";

using(var wb=new WebClient())
{
    var data=new NameValueCollection();
    data["sendername"]="Mailer";
    data["sender"]="";
    data["reciever"]="";
    data["subject"]="Mail from Application";
    data["message"]="Message";

    var response=wb.UploadValues(url, "POST", data);
}

Der Quellcode ist dabei auf GitHub zu finden und steht unter der AGPL.

6 Kommentare » Schreibe einen Kommentar

  1. Spammer freuen sich über dieses Mailskript :)

    Ich kann einfach eine zweite email mit angeben, die dein Check dann akzeptiert. Oder Bcc felder einfügen. Immer die Daten des Nutzers prüfen :) (und ein einfacher check für „@example.org“ reicht da nicht!

    Gruß,
    Ablu

    • Also, wenn sich Spammer schon über den Script freuen, sind das dumme Spammer, zumindest, wenn sich Deine Bemerkung auf den PHP-Teil beziehen. Der stammt doch im wesentlichen aus einem PHP-Lehrbuch (egal, welches man nimmt) und von Webformularen verschicke ich Nachrichten immer so (ich = nur PHP-Grundwissen vorhanden).

      Was mich bei dem oben beschriebenen Verfahren eher irritiert ist doch die Frage: Auf welchen PHP-fähigen Server die Desktop-Anwendung ggf. zugreift, um das Script abzuarbeiten. Der Standard-Rechner ist – unabhängig vom Betriebssystem – normalerweise nicht PHP-fähig…

  2. Ich meine, dass sie sich drüber freuen, wenn du das Skript auf deinen Server packst. Bei nem Freund von mir wurden über so ein Skript von ihm Spammails versendet. Es wurden einfach Daten wie „; BCC: “ eingefügt statt einer „richtigen“ email addresse. Er hatte da auch nur nach einem @ geprüft.

    • Habe den Quelltext bei GitHub aktualisiert, so das dass Problem nicht mehr auftreten sollte. Danke für den Hinweis.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.