2009-08-23 9 views
9

Ich versuche, eine Plain/HTML-Multipart-E-Mail zu senden, und ich verwende derzeit die mail() -Funktion von PHP. Viele Leute haben PHPMailer empfohlen, also dachte ich, ich würde es versuchen.Wie benutze ich PHPMailer? Ich kann kein einfaches anständiges Tutorial online finden

Wie jedoch heutzutage alles scheint, erscheint es sehr kompliziert. Ich habe es heruntergeladen und es geht darum, es zu installieren und MySQL-Verbindungen und SMTP-Verbindungen zu konfigurieren !? Alles, was ich tun möchte, ist eine nette Klasse, die die MIME-E-Mails für mich erstellen und senden wird! Ich verstehe die SMTP-Möglichkeiten, aber alles scheint so komplex zu sein!

Gibt es eine Möglichkeit, einfach nur zu verwenden, z. B. eine PHP-Datei (keine Server-Installation oder PHP neu kompilieren!) Und dann nur die Klasse zum Erstellen und Senden der E-Mail verwenden?

Ich wäre sehr dankbar, wenn jemand Dinge einfach erklären könnte! Ich bin mir sicher, dass es möglich ist und ich kann nicht glauben, dass es nach meinen Stunden der Suche keinen wirklich guten, einfachen Artikel online gibt. Alles ist ZU kompliziert, wenn ich weiß, dass es nicht sein muss!

+0

Haben Sie versucht, die mit zur Verfügung gestellt readme Lesung [PHPMailer] (https://github.com/PHPMailer/PHPMailer)? Es enthält ein einfaches Beispiel für das Senden einer HTML-E-Mail genau so, wie Sie es beschreiben. Ich weiß, das ist eine alte Frage, aber es fehlt sogar eine grundlegende Verbindung zu PHPMailer selbst! – Synchro

Antwort

0

Versuchen Sie SwiftMailer stattdessen.

+0

Danke, ich habe das funktioniert perfekt zum ersten Mal! Tolle Dokumentation auch! :-) –

+0

Darf ich fragen, warum Sie solche Empfehlungen machen? Ich denke auch, dass phpmailer heutzutage nicht der beste ist, aber ich bin irgendwie uninformiert. Danke – Daniel

+0

eine einzige Zeile, Link nur beantworten? Dies ist keine Antwort. Es berührt nicht einmal die Frage von OP. – RozzA

4

Ich weiß nichts über PHPMailer, aber ich empfehle Zend_Mail. Hier ist ein einfaches Beispiel mit einem Anhang:

$mail = new Zend_Mail(); 
$mail->setBodyText('This is the text of the mail.'); 
$mail->createAttachment($myImage, 
         'image/gif', 
         Zend_Mime::DISPOSITION_INLINE, 
         Zend_Mime::ENCODING_8BIT); 
$mail->setFrom('[email protected]', 'Some Sender'); 
$mail->addTo('[email protected]', 'Some Recipient'); 
$mail->setSubject('TestSubject'); 
$mail->send(); 

Wahrscheinlich tut alles, was Sie wollen (Attachments, HTML, SMTP-Konfiguration, ...). Standardmäßig verwendet es sendmail, wie die mail() Funktion, so dass Sie nichts wie SMTP konfigurieren müssen, wenn Sie es nicht benötigen.

Es hat auch eine sehr gute Dokumentation, so dass Sie keine Probleme haben werden, Beispiele zu finden.

+0

Wie extrahiere ich die notwendigen Funktionen aus dem Zend Framework? –

8

Hübsches Art und Weise (von this link), erste PHPMailer erweitern und die Standardeinstellungen für Ihre Website gesetzt:

require("class.phpmailer.php"); 

class my_phpmailer extends phpmailer { 
    // Set default variables for all new objects 
    var $From  = "[email protected]"; 
    var $FromName = "Mailer"; 
    var $Host  = "smtp1.example.com;smtp2.example.com"; 
    var $Mailer = "smtp";       // Alternative to IsSMTP() 
    var $WordWrap = 75; 

    // Replace the default error_handler 
    function error_handler($msg) { 
     print("My Site Error"); 
     print("Description:"); 
     printf("%s", $msg); 
     exit; 
    } 

    // Create an additional function 
    function do_something($something) { 
     // Place your new code here 
    } 
} 

Dann das Skript enthalten, wo erforderlich (in diesem Beispiel wird genannt mail.inc.php) und verwenden Sie Ihre neu erstellte my_phpmailer Klasse irgendwo auf Ihrer Website:

require("mail.inc.php");//or the name of the first script 

// Instantiate your new class 
$mail = new my_phpmailer; 

// Now you only need to add the necessary stuff 
$mail->AddAddress("[email protected]", "Josh Adams"); 
$mail->Subject = "Here is the subject"; 
$mail->Body = "This is the message body"; 
$mail->AddAttachment("c:/temp/11-10-00.zip", "new_name.zip"); // optional name 

if(!$mail->Send()) 
{ 
    echo "There was an error sending the message"; 
    exit; 
} 

echo "Message was sent successfully"; 
+0

Sieht gut aus, aber die Verbindung ist unterbrochen – Baumr

+0

Warum in PHP eine Menge Erweiterung verwenden, die Klasse eng koppelt und Abhängigkeiten einführt, warum nicht stattdessen Aggregation verwenden? – Vitalij

+0

sehr geschätzt für die Beantwortung der OP-Frage und Bereitstellung von Code. das hat bei mir funktioniert - danke! – RozzA