PHP: Mails verschicken

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich versuche gerade mit PHP Mails zu verschicken.
    Als "Mail-Sender" benutze ich "sendemail" ( http://www.gtkdb.de/index_36_2296.html )

    Meine Handlung war also die folgende Datei zu bearbeiten: /etc/php5/fpm/php.ini
    Dort habe ich "sendmail_path" auskommentiert und folgendes draus gemacht: sendmail_path = /media/SendMail.sh test nachricht"

    Funktioniert alles wunderbar.. aber die an die mail()-Funktion übergebenen Parameter werden logischerweise komplett ignoriert.
    Wie kann ich sendmail_path die parameter von mail() übergeben?

  • Wieso bitte fuhrwerkst Du in der php.ini rum, wenn Du Mails versenden möchtest. Und warum nutz Du shellscript und vor allem eine Anleitung, die gar nicht für PHP ist? In PHP gibt es die mail() ja nicht umsonst. Also Ursprung der php.ini wiederherstellen und mal lesen: http://php.net/manual/de/function.mail.php

  • Ich dachte ich benutze mein Shellscript, da ich es so oder so schon für andere Zwecke benutze :P

    mail() funktioniert bei meinem Pi nicht standardmäßig, das ist ja das Problem. Ich benutze Jessie Lite.

  • Ich kann PHPMailer wärmstens empfehlen, eine äußerst mächtige und leicht umgängliche PHP Class

    Beispiel:
    [code=php]
    <?php
    /*
    Requires: https://github.com/PHPMailer/PHPMailer/releases/tag/v5.2.6
    */
    require_once('class.phpmailer.php');

    $cputemp = file_get_contents("/sys/class/thermal/thermal_zone0/temp") / 1000;
    $gputemp = exec("/opt/vc/bin/vcgencmd measure_temp");
    $gputemp = str_replace("temp=","",$gputemp);
    $gputemp = str_replace("'C","",$gputemp);

    $message="";

    if (!empty($cputemp)) { $message.=" CPU Temperature: $cputemp"; }
    if (!empty($gputemp) AND !preg_match("/failed/",$gputemp)) { $message.="<br/>\n GPU Temperature: $gputemp"; }


    $mail = new PHPMailer(); // create a new object
    $mail->IsSMTP(); // enable SMTP
    $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
    $mail->SMTPAuth = true; // authentication enabled
    $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
    $mail->Host = "smtp.gmail.com";
    $mail->Port = 465; // or 587
    $mail->IsHTML(true);
    $mail->Username = "email@gmail.com";
    $mail->Password = 'password';
    $mail->SetFrom("example@gmail.com");
    $mail->AddAddress("email@gmail.com");

    $mail->Subject = "RaspberryPI CPU/GPU Status";
    $mail->Body = "$message";

    echo $message."<br/>\n";

    if (!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
    echo "Mail sent!";
    }
    ?>
    [/php]

  • Bevor ich mich an die Arbeit mit PHPMailer mache: ist PHPMailer das einzige was heruntergeladen werden muss?
    Außerdem: ich sehe, man gibt einen SMTP-Server zum Versand an.
    Mit sendmail (für mail() installiert), gibt man nirgendwo einen SMTP-Server an. Liegt es daran, dass die Mails nicht verschickt sondern nur "lokal" auf dem pi gespeichert werden?
    ich werde jedenfalls PHPMailer ausprobieren!

    PHPMailer funktioniert wunderbar und dank des SMTP wird die Mail nicht mal in den Spam-Ordner gepackt.

    Ich werde gleich ein Backup meiner SD-Karte machen und mit dieser Anleitung den Citadel-Mailserver auf dem Pi installieren - http://www.pc-magazin.de/ratgeber/raspb…en-1836244.html
    Dann sehen die Mails noch schöner aus, wenn sie von meine-domain.de kommen und nicht von gmail.com.

    Ansonsten, TOP!

    Einmal editiert, zuletzt von rpi-noob (8. Januar 2016 um 18:44)

  • Die PHP Funktion mail() benötigt entweder einen lokal laufenden Mailserver oder ein installierten Mail-Transport-Agent wie sendmail.

    Die PHPMailer Class ist Standalone und benötigt keinen lokalen Mailserver und auch keinen extra/separat installierten MTA. Deshalb muss man auch den Ziel-Server, Port und Zugangsdaten angeben wohin sich PHPMailer verbinden soll.

  • Ich glaube ich werde das mit dem Mailserver sein lassen. Denn so ein Mailserver erfordert wieder offene Ports und das erhöht das Angriffsrisiko.
    Bereits jetzt mit den offenen Ports 80 und 443 fahren viele Bots meinen Server automatisiert an und suchen Exploits.

    Werde bei PHPMailer bleiben!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!