mail-Funktion

Schnorrbert
Beiträge: 2
Registriert: Mo 1. Okt 2012, 15:27
Kontaktdaten:

Re: mail-Funktion

Beitrag von Schnorrbert » Mi 24. Okt 2012, 13:38

BagHira hat geschrieben:Servus zatec,

dann sollten die Warnings ja weg sein.

Befasse dich einmal mit der mail()- Funktion, eine recht einfache Erklärung findest du hier: http://www.php-space.info/php/space/e-m ... it-php.php
Die Mail Funktion wird es wohl nicht sein, vor allem aber, wenn alles richtig eingestellt ist. Man sollte sich mal mit seinen Webspaceanbieter in Verbindung setzen. Die haben manchmal Barrieren an, die das Versenden von Mails nicht zulassen. War auch bei mir so. Bin beinahe ausgeflippt, weil ich den Fehler nicht gefunden habe.

Aber leider weiß ich nicht mehr, was der Fehler war. Kann die Mail vom Hoster nicht mehr finden.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: mail-Funktion

Beitrag von Spider IT » Mi 24. Okt 2012, 14:11

zatec hat geschrieben:Das was du über SMTP und Einloggen schreibst, verstehe ich nicht ganz, aber das sollte sich demnach ja erledigt haben oder?
Nein, hat es nicht, denn nur damit wird es gehen.
Die Anmeldung ist im Grunde wie deine Anmeldung bei dem Webmailer bzw. in dein Mailprogramm.

Beispielcode (komplette Funktion aus meine Datei "spider-it.functions.inc.php"):

Code: Alles auswählen

# sitSendHtmlMail()
#
# Sendet eine HTML-Mail mit HTML- und Textteil
#
# Parameter:
#   $html - HTML-Teil der Mail
#   $subject - Betreffzeile der Mail
#   $receipients - Array von Empfänger ('name' und 'email', mehrere möglich)
#   $attachments - Dateipfad oder Array von Dateipfade für Anhänge (optional)
#   $sname - Absendername (optional)
#   $smail - Absenderadresse (optional)
#   $mailer - Versandmethode ('mail' / 'qmail' / 'sendmail' / 'smtp') (optional)
#   $sserver - SMTP-Server Adresse (optional)
#   $slogin - SMTP Login (optional)
#   $spass - SMTP Passwort (optional)
#   $sport - SMTP Port (optional)
#
# Sendet eine HTML-Mail mit HTML- und Textteil an einen oder mehrere Empfänger
# mit keinen oder mehrere Anhänge und liefert den Erfolgsstatus zurück.
# Die Angaben zum Absender und den Mailer werden, sofern sie nicht mit angegeben
# sind, aus den Mandanten- bzw. Systemeinstellungen ausgelesen.
#   - email - absende-name
#   - email - absender-email
#   - email - mailer
#   - email - smtp-server
#   - email - smtp-login
#   - email - smtp-passwort
#   - email - smtp-port - 25
# Die Empfänger werden als Array aus Name(n) und Email-Adresse(n) übergeben.
# Beispiel 1: array('name' => 'xyz', 'email' => 'xyz@abc.de');
# Beispiel 2: array(array('name' => 'xyz', 'email' => 'xyz@abc.de'), array('name'...
function sitSendHtmlMail($html, $subject, $receipients, $attachments = '', $sname = '', $smail = '', $mailer = '', $sserver = '', $slogin = '', $spass = '', $sport = '') {
    # Eingaben ergänzen
    if (!is_array($attachments)) {
        $attachments = array($attachments);
    }
    $sname = ((strlen($sname)) ? $sname : getEffectiveSetting('email', 'absender-name'));
    $smail = ((strlen($smail)) ? $smail : getEffectiveSetting('email', 'absender-email'));
    if (strlen($sname) == 0) {
        $sname = $smail;
    }
    $mailer = strtolower(((strlen($mailer)) ? $mailer : getEffectiveSetting('email', 'mailer')));
    if (strlen($mailer) == 0) {
        $mailer = 'mail';
    }
    if ($mailer == 'smtp') {
        $sserver = ((strlen($sserver)) ? $sserver : getEffectiveSetting('email', 'smtp-server'));
        $slogin = ((strlen($slogin)) ? $slogin : getEffectiveSetting('email', 'smtp-login'));
        $spass = ((strlen($spass)) ? $spass : getEffectiveSetting('email', 'smtp-passwort'));
        $sport = intval(((strlen($sport)) ? $sport : getEffectiveSetting('email', 'smtp-port')));
        if ($sport == 0) {
            $sport = 25;
        }
    }
    # Prüfen, ob genügend Angaben vorliegen
    if ((strlen($html) == 0) || (strlen($subject) == 0)) {
        return false;
    }
    if ((!is_array($receipients)) || ((strlen($receipients['email']) == 0) && (strlen($receipients[0]['email']) == 0))) {
        return false;
    }
    if (strlen($smail) == 0) {
        return false;
    }
    if (($mailer == 'smtp') && ((strlen($sserver) == 0) || (strlen($slogin) == 0) || (strlen($spass) == 0))) {
        return false;
    }
    # Mail aufbereiten und versenden
    $oMail = new PHPMailer();
    $oMail->IsHTML(true);
    $oMail->Mailer = $mailer;
    if ($mailer == 'smtp') {
        $oMail->SMTPAuth = true;
        $oMail->Host     = $sserver;
        $oMail->Port     = $sport;
        $oMail->Username = $slogin;
        $oMail->Password = $spass;
    }
    $oMail->Subject = $subject;
    $oMail->From = $smail;
    $oMail->FromName = $sname;
    if (is_array($receipients[0])) {
        for ($i = 0, $n = count($receipients); $i < $n; $i ++) {
            if (strlen($receipients[$i]['email'])) {
                $oMail->AddAddress($receipients[$i]['email'], ((strlen($receipients[$i]['name'])) ? $receipients[$i]['name'] : $receipients[$i]['email']));
            }
        }
    } else {
        $oMail->AddAddress($receipients['email'], ((strlen($receipients['name'])) ? $receipients['name'] : $receipients['email']));
    }
    $oMail->Body = $html;
    # Nur-Text-Bereich -->
    $sMsg = substr($html, strpos($html, '<body'));
    $sMsg = str_replace(array("\n", '</p>', '<br />', '<br>'), array('', "</p>\n\n", "\n", "\n"), $sMsg);
    $sMsg = trim(strip_tags($sMsg));
    $sMsg = explode("\n", $sMsg);
    for ($i = 0, $n = count($sMsg); $i < $n; $i ++) {
        $sMsg[$i] = trim($sMsg[$i]);
    }
    $sMsg = implode("\n", $sMsg);
    $sMsg = html_entity_decode($sMsg);
    $sMsg = capiStrReplaceDiacritics($sMsg);
    # <-- Nur-Text-Bereich
    $oMail->AltBody = $sMsg;
    for ($i = 0, $n = count($attachments); $i < $n; $i ++) {
        if (is_file($attachments[$i])) {
            $oMail->AddAttachment($attachments[$i]);
        }
    }
    $oMail->WordWrap = 76;
    return $oMail->Send();
}
Die komplette Datei mit viele hilfreiche Funktionen wird es demnächst öffentlich zum Download geben.

Gruß
René

Gesperrt