2017-05-12 4 views
0

Ich muss E-Mails senden, wenn Benutzer bestimmte Dinge tun, wie zum Beispiel ein Formular ausfüllen, eine Anfrage senden etc. Diese passieren auf verschiedenen Seiten.PHPMailer - Senden von E-Mail mit einer Funktion

Ich weiß, dass die Standard-Anwendung von PHPMailer als unten:

<?php 
require 'PHPMailerAutoload.php'; 
$mail = new PHPMailer; 
$mail->setFrom('[email protected]', 'Your Name'); 
$mail->addAddress('[email protected]', 'My Friend'); 
$mail->Subject = 'First PHPMailer Message'; 
$mail->Body  = 'Hi! This is my first e-mail sent through PHPMailer.'; 
if(!$mail->send()) { 
    echo 'Message was not sent.'; 
    echo 'Mailer error: ' . $mail->ErrorInfo; 
} else { 
    echo 'Message has been sent.'; 
} 

Ist es möglich, die E-Mail() der Klasse zu verwenden, ohne dass der Benutzername, Passwort und Nachricht an die Mail-Funktion jedes Mal neu festlegen ??

Im Grunde könnten Sie haben eine fuction wie:

sendMail($from, $to, $subject, $body); 

, die dann die Variablen auf eine Instanz PHPMailer gegeben passiert?

Ähnlich wie this question.

+1

Wie eine eigene mailer-Klasse haben und einmal das Objekt und einmal den Benutzernamen, das Passwort und die Nachricht festlegen und dann das Objekt zu sendMail wiederverwenden? – Edwin

+0

Ich denke, Sie könnten Ihre eigenen Mail-Klasse Erweiterungen des PHPMailer erstellen und Sie geben den Benutzernamen und das Passwort nur einmal in ihm und danach können Sie Ihre eigene Klasse überall ohne festgelegte Anmeldeinformationen immer wieder verwenden. –

+0

Ich werde das versuchen. –

Antwort

1
require 'vendor/autoload.php'; 
class MyMail extends PHPMailer 
{ 
    private $_host = 'your stmp server name'; 
    private $_user = 'your smtp username'; 
    private $_password = 'your password'; 

    public function __construct($exceptions=true) 
    { 
     $this->Host = $this->_host; 
     $this->Username = $this->_user; 
     $this->Password = $this->_password; 
     $this->Port = 465; 
     $this->SMTPAuth = true; 
     $this->SMTPSecure = 'ssl'; 
     $this->isSMTP(); 
     parent::__construct($exceptions); 
    } 

    public function sendMail($from, $to, $subject, $body) 
    { 
     $this->setFrom($from); 
     $this->addAddress($to); 
     $this->Subject = $subject; 
     $this->Body = $body; 

     return $this->send(); 
    } 
} 
$m = new MyMail(); 
$result = $m->sendMail('[email protected]', '[email protected]', 'Test from script', 'test message from script'); 
+0

* "Ich denke" * Antworten sollten ein Kommentar sein. –

+0

ja alles in Ordnung, ich änderte es und gab einen Ratschlag –

+0

Cool :-) Ich eingerückt Ihren Code BTW. –

Verwandte Themen