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="mailer@example.org";
//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"]="mailer@example.org";
data["reciever"]="developer@example.org";
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.