classe per inviare mail personalizzate!!!

Ciao a tutti ragazzi volevo sapere come modificare questa classe per poter inviare mail personalizzate in modo da poter inviare sia mail con dei parametri fissi che mail senza parametri ad esempio (ciao sono una mail di prova)...come devo modificare il costruttore???

Questo è il codice:

class Message {

        
private $data = array();
private $mail=null;
private $del=null;

   public function __construct($data, $protMail, $delimitatore){

      $this->data=$data;
      $this->mail=$protMail;
      $this->del = $delimitatore;
      $this->setCustomText();
   }

   private function setCustomText(){
      foreach ($this->data as $key=>$value)  {
         $this->mail = preg_replace("/$this->del$key$this->del/", $value, $this->mail);
      }
   }

   public function getMessage() {
      return $this->mail;
   }

}
$DEL = '<d#l>' ;
//private $patterns = array('/d#lNOME/','/d#lCOGNOME/','/d#lARTICOLO/','/d#lDATA/');
$prova = array('NOME' => 'Silverio', 'COGNOME' => 'Giancristoforo', 'ARTICOLO' => '123', 'DATA' => '21/10/09','DATA_1' => '22/9/09');
$protMessag ="Salve ".$DEL."COGNOME".$DEL." ".$DEL. "NOME".$DEL.",<br>questa e una prova in data ".$DEL."DATA_1".$DEL." articolo: ".$DEL."ARTICOLO".$DEL." data: ".$DEL."DATA".$DEL;
$testMsg = new Message($prova,$protMessag,$DEL);
echo $testMsg->getMessage();
inviato 7 anni fa
nic0tin4
X 0 X

Quando crei il tuo oggetto richiami il costruttore, basta che gli indichi la variabile $protMail che valore deve assumere...

Eventualmente per rendere il tutto "automatico" cambi direttamente il costruttore in modo che si inizializzi come desideri.

Meglio ancora forse è creare una classe figlia di Message che inizilizzi il tutto come desideri.

Sono stato chiaro?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

la variabile protMail viene passata al costruttore come variavile protMessag che indica il mesagio con parametri fissi e con il delimitatore, io credo che non serva modificare niente perchè il costruttore si aspetta un array chiave valore e un messaggio ( però se io gli passo un messaggio senza parametri, ovvero senza delimitarori (DEL) è apposto),  nel senso che mi visualizza il messaggio passato senza parametri...non so se mi sono spiegato....ma non so se il mio ragionemento fila...

risposto 7 anni fa
nic0tin4
X 0 X

Puoi anche modificare il costruttore in modo tale che faccia una verifica che siano stati passati i parametri, se non gli è stato passato niente allora usa una email standard es:

   public function __construct($data, $protMail, $delimitatore){

      $this->data=$data;
                if($protMail != "")
          $this->mail=$protMail;
                else
                    $this->mail = "Quello che vuoi te...";
      $this->del = $delimitatore;
      $this->setCustomText();
   }

Può andare?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

mmm...non lo so perchè questa classe deve essere richiamata dall'esterno per inviare qualsiasi tipo di messaggio email, quindi io all'interno della classe non potrei avere mail= "quello che vuoi te" a meno che sostituisca quel valore di tipo stringa cn un'altra varibaile passata nel costruttore che identifica il messaggio senza parametri...che dici?

risposto 7 anni fa
nic0tin4
X 0 X

Quello che ti ho suggerito io semplicemente fa in modo che nel caso il costruttore venga inizializzato con una stringa vuota per protMail, costruisce l'oggetto con una tua stringa a piacimento.

Ho pure sbagliato a definire il costruttore:

   public function __construct($data, $protMail = NULL , $delimitatore){

Se viene fornita una protMail allora userà quella...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

mmm...come idea misa che può andare, adesso non sto con il mio pc...lunedì lo testo e ti faccio sapere. Per te è un problema se aspetto fino a lunedì???

Grazie per il tempo che mi hai dedicato!!!  O0

risposto 7 anni fa
nic0tin4
X 0 X
mmm...come idea misa che può andare, adesso non sto con il mio pc...lunedì lo testo e ti faccio sapere. Per te è un problema se aspetto fino a lunedì???

Nessun problema, i forum esistono apposta per rispondere in modo asincrono, non siamo in una chat.

Se posso rispondo volentieri e comunque ci sono altri utenti che possono darti qualche suggerimento o correggere eventuali miei orrori.

Ciao

risposto 7 anni fa
Mario Santagiuliana
X 0 X

ciao,

l'ho modificata così,

<?
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * Prova Template.
 */
class Message {

        
private $data = array();
private $mail=null;
private $del=null;



   public function __construct($data, $delimitatore, $message, $protMail=null){

      $this->data=$data;
         if ($protMail!="")
      $this->mail=$protMail;
         else $this->mail=$message;
      $this->del = $delimitatore;
      $this->setCustomText();
   }

   private function setCustomText(){
      foreach ($this->data as $key=>$value)  {
         $this->mail = preg_replace("/$this->del$key$this->del/", $value, $this->mail);
      }
   }

   public function getMessage() {
      return $this->mail;
      }
   
}
$DEL = '<d#l>' ;
$prova = array('NOME' => 'Silverio', 'COGNOME' => 'Giancristofaro', 'ARTICOLO' => '123', 'DATA' => '21/10/09','DATA_1' => '22/9/09');
$message = 'ciao sono senza parametri';
$protMessag ="Salve ".$DEL."COGNOME".$DEL." ".$DEL. "NOME".$DEL.",<br>questa e una prova in data ".$DEL."DATA_1".$DEL." articolo: ".$DEL."ARTICOLO".$DEL." data: ".$DEL."DATA".$DEL;
$testMsg = new Message($prova,$DEL,$message,$protMessag);
echo $testMsg->getMessage();

?>

però se io gli voglio passare un messaggio con i parametri in questo caso protmessag e un messaggio senza parametri nel mio codice message, voglio che mi stampa tutti e due i messaggi, perchè potrebbe capitare che il programma si aspetta tutti e due i tipi......come posso fare???

risposto 7 anni fa
nic0tin4
X 0 X
però se io gli voglio passare un messaggio con i parametri in questo caso protmessag e un messaggio senza parametri nel mio codice message, voglio che mi stampa tutti e due i messaggi, perchè potrebbe capitare che il programma si aspetta tutti e due i tipi......come posso fare???

Cioè vorresti avere una email con due messaggi???

Non ho capito...Ma perchè poi crei due variabili da passare? Ne basta una...non vedo perchè passarne due, se vuoi un messaggio di default interno della classe puoi fare a meno di passargli il tuo messaggio, altrimenti lo definisci te, punto e basta. Perchè creare una variabile per impostare un messaggio di default (obbligatorio) e una per un messaggio personalizzato?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

infatti, dopo mi sono reso conto che non serve, no no non mi servono due messaggi ne basta uno, nel senso se gli passo un messaggio senza parametri fissi mi deve stampare il messaggio normale tipo ciao sono una mail di prova....

risposto 7 anni fa
nic0tin4
X 0 X

però se gli lascio una sola variabile(mail) non voglio che nella classe sia definito il messaggio senza parametri perchè il messaggio può cambiare ogni volta se la condizione nell' if è falsa mi stampa il contenuto di mail nel caso che mi hai suggerito tu stampa "quello che vuoi te", però io non voglio che mi stampa un messaggio fisso ma un messaggio che se io non gli passo la mail con i parametri ($protMessag) mi stampa il messaggio generico che gli passo io che può variare ogni volta, ecco perche avevo messo un'altra variabile...non so se mi sono spiegato...

risposto 7 anni fa
nic0tin4
X 0 X

Ti basta istanziare l'oggetto all'inizio con la frase che vuoi te di volta in volta...non capisco dove sta il problema...

Quello che ti ho suggerito è semplicemente se tu non passi nessun parametro lui costruisce l'oggetto con dei valori di default.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Ciao il problema sta nel fatto che se non gli passo nessun parametro gli devo dire io di volta in volta nel costruttore cosa passargli come messaggio di default, invece io devo avere una parte di messaggio cone dei parametri fissi, tipo

nome pippo

cognome pluto

indirizzo via topolino

cap 6554

( tutta questa parte gliela passo in un array chiave valore ) e poi una parte sotto a questo messaggio senza parametri che dice

ciao la mail è stata inviata al soggetto blablalblblbla , quindi il testo è composto da due parti. Se una delle due parti non è presente devo visualizzare l'altra e se sono presenti tutti e due devo visualizzare entrambi come testo del messaggio,

Grazie mille e scusa per il ritardo della risposta.

risposto 6 anni fa
nic0tin4
X 0 X

Mi sembra di averti già risposto qui:

http://www.phpnews.it/forum/programmazione-php/classe-per-inviare-mail-personalizzate!!!/msg25306/#msg25306

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda