Invio email (era: phpmailer)

cos'è questo errore

Could not instantiate mail function. Message could not be sent.

Mailer Error: Could not instantiate mail function.
 
ok cosi invia le email
ma non la risposta automatica puoi aiutarmi per questo ultimo sforzo?
questo è il codice

PHP:
<?php require_once('../../Connections/fitnesscenter.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_fitnesscenter, $fitnesscenter);
$query_Rs_mail = "SELECT nome, cognome, email, attivita FROM prova_gratis ORDER BY id DESC";
$Rs_mail = mysql_query($query_Rs_mail, $fitnesscenter) or die(mysql_error());
$row_Rs_mail = mysql_fetch_assoc($Rs_mail);
$totalRows_Rs_mail = mysql_num_rows($Rs_mail);

$nome = $_POST['nome']; 
$cognome = $_POST['cognome']; 
$telefono = $_POST['telefono']; 
$email = $_POST['email']; 
$attivita = $_POST['attivita']; 
require_once 'class.phpmailer.php';
$mail = new PHPMailer();
  // set mailer to use SMTP 
//$mail->Host = "";  // specify main and backup server 
//$mail->Username = "";  // SMTP username 
//$mail->Password = ""; // SMTP password 
$mail->From     = '[email protected]'; 
$mail->FromName = '[email protected]'; 
$mail->SetLanguage("it", "language/phpmailer.lang-it.php"); 
$mail->AddAddress("[email protected]", "Dawid Grace"); 
//$mail->AddAddress("[email protected]"); // name is optional 
$mail->AddReplyTo("$email", "Ciao $nome $cognome /n
Hai richiesto una prova gratuita per l'attività $attivita "); 

$mail->WordWrap = 50;  // set word wrap to 50 characters 
//$mail->AddAttachment("/var/tmp/file.tar.gz");  / add attachments 
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");  // optional name 
$mail->IsHTML(true);// set email format to HTML 

$mail->Subject = "Richiesta prova gratuita"; 
$mail->Body    = "<br /><br />Nuova richiesta di prova gratuita, ecco i dati:<br />
Nome: $nome<br />
Cognome: $cognome<br />
Telefono: $telefono<br />
Email: $email<br />
Attività $attivita<br /><br />
"; 
$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; 

if(!$mail->Send()) 
{ 
   echo "Message could not be sent. <p>"; 
   echo "Mailer Error: " . $mail->ErrorInfo; 
   exit; 
}

mysql_free_result($Rs_mail);
?>
 
ciao
se non mi sbaglio, stai facendo un po' di confusione.
da quello che ho capito se pinco vuole avere il tagliando deve riempire il form e submittare, in questo modo riceve una email con il tagliando, giusto?
se il tagliando deve essere inviato a pinco che ha l'email [email protected], con l'istruzione
$mail->AddAddress("[email protected]", "Dawid Grace");
non mandi il tagliando a pinco, ma a [email protected], quindi dovresti mettere
$mail->AddAddress($email, $nome);
cioè l'amail e il nome di pinco
poi se vuoi ricevere anche tu l'email, per vedere subito che pinco ha richiesto il tagliando
$mail->AddBCC("[email protected]", "Dawid Grace");
un altro piccolo particolare (sempre che abbia capito il meccanismo del tuo ambaradan) se il client di posta di pinco non è settato per html, pico riceve il messaggio

This is the body in plain text for non-HTML mail clients
mentre dovrebbere comunque ricevere il tagliando anche se in formato testo


p.s.
spiegami a che ti serve poi questa parte

PHP:
//...mysql_select_db($database_fitnesscenter, $fitnesscenter); 
$query_Rs_mail = "SELECT nome, cognome, email, attivita FROM prova_gratis ORDER BY id DESC"; 
$Rs_mail = mysql_query($query_Rs_mail, $fitnesscenter) or die(mysql_error()); 
$row_Rs_mail = mysql_fetch_assoc($Rs_mail); 
$totalRows_Rs_mail = mysql_num_rows($Rs_mail);
//...
interroghi il db, tiri fuori dei dati, li conti e poi?
 
ok ok ok ok arrivano due, ora al cliente però deve arrivare ciao $nome $cognome hai richiesto di effettuare una prova gratuita presso una delle nostre palestre per l'attività $attivita

questo:

PHP:
//...mysql_select_db($database_fitnesscenter, $fitnesscenter); 
$query_Rs_mail = "SELECT nome, cognome, email, attivita FROM prova_gratis ORDER BY id DESC"; 
$Rs_mail = mysql_query($query_Rs_mail, $fitnesscenter) or die(mysql_error()); 
$row_Rs_mail = mysql_fetch_assoc($Rs_mail); 
$totalRows_Rs_mail = mysql_num_rows($Rs_mail);
//...
mi serve per recuperare l' ultima email, nome e cognome del tizio per poi rispondere in automatico
o no serve a un c.....

dai ti prego ci6 vicinissimo....:angel:
 
ciao
dovresti mettere così
PHP:
<?php
//....
$mail->Body  ="<br /><br />ciao <strong>$nome $cognome</strong><br /> hai richiesto di effettuare una prova gratuita presso una delle nostre palestre per l'attività $attivita<br />";
//e, se vuoi, nel testo tipo html puoi aggiungere anche altri tag o attributi es. <strong style="color:#FF0000; ">.....</strong>
//...
?>
mentre nel testo non html

PHP:
<?php
//...
$mail->AltBody = "/n/n ciao $nome $cognome /n hai richiesto di effettuare una prova gratuita presso una delle nostre palestre per l'attività $attivita /n"; 
//...
?>
 
Salve Borgo il senso era: "allora vuoi dire che non serve a un c..... " cioè che secondo te non serve?. non mi sarei mai permessa di offendere.
Salve anche a te Ser Alex,
è un dato di fatto, tutti i luminari fanno omaggio del loro sapere, perchè è solo così che si cresce e si migliora, ma è anche vero che dall'altra parte deve esserci qualcuno che possa comprendere...:)
comunque grazie per il vostro tempo Eva:beer:
 
ciao
@alex
Piccolo appunto: per l'andata a capo devi scrivere \n, non /n.
hai perfettamente ragione, ma ho le attenuanti, come minimo generiche.
@ertrottola
si avevo capito perfettamente quello che volevi dire. così come è non serve, ma mi sembra di capire quello che volevi fare.
verifichi che l'indirizzo sia presente nel db.
ora tu fai:
$totalRows_Rs_mail = mysql_num_rows($Rs_mail);
quindi dovresti mettere un if else

PHP:
$totalRows_Rs_mail = mysql_num_rows($Rs_mail);
if($totalRows_Rs_mail > 0){
     echo "hai già rischiesto il tagliando";
}else{
    //tutto l'ambaradan di invio
}
 
COSI!!!!

PHP:
<?php
$totalRows_Recordset1 = mysql_num_rows($Rs_mail);
if($totalRows_Recordset1 > 0){
     echo "hai già rischiesto il tagliando";
}else{
    //tutto l'ambaradan di invio
}  
require_once("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->FromName = "Dawid Grace";
$mail->AddAddress("$email");
$mail->IsHTML(true);  
$mail->Subject  =  "provace";
$mail->Body     =  "provace Body";
$mail->AltBody  =  "provace body txt";
//$mail->AddAttachment("public/filename_1.zip"); 
//$mail->AddAttachment("public/filename_2.zip"); 
$mail->From = "$email";
$mail->FromName = "Dawid Grace";
$mail->AddAddress("[email protected]");
$mail->IsHTML(true);  
$mail->Subject  =  "Risposta alla richiesta";
$mail->Body     =  "risposta al clienta";
//$mail->AltBody  =  "provace body txt";
if(!$mail->Send())
{	
echo "Si è verificato un errore nell'invio della mail";
}
else
{	
echo "Mail inviata con successo";}?>
 
ciao
no, cosi avvisi e invii il tagliando comunque.
PHP:
<?php 
$totalRows_Recordset1 = mysql_num_rows($Rs_mail); 
if($totalRows_Recordset1 > 0){ 
     echo "hai già rischiesto il tagliando"; 
}else{ 
    //tutto l'ambaradan di invio 
 
require_once("class.phpmailer.php"); 
$mail = new PHPMailer(); 
$mail->From = "[email protected]"; 
$mail->FromName = "Dawid Grace"; 
$mail->AddAddress("$email"); 
$mail->IsHTML(true);   
$mail->Subject  =  "provace"; 
$mail->Body     =  "provace Body"; 
$mail->AltBody  =  "provace body txt"; 
//$mail->AddAttachment("public/filename_1.zip");  
//$mail->AddAttachment("public/filename_2.zip");  
$mail->From = "$email"; 
$mail->FromName = "Dawid Grace"; 
$mail->AddAddress("[email protected]"); 
$mail->IsHTML(true);   
$mail->Subject  =  "Risposta alla richiesta"; 
$mail->Body     =  "risposta al clienta"; 
//$mail->AltBody  =  "provace body txt"; 
if(!$mail->Send()) 
{     
echo "Si è verificato un errore nell'invio della mail"; 
} 
else 
{     
echo "Mail inviata con successo";}

} // qui la fine dell'if-else ?>
 
Si gia me ne èro accorta, allora ho fatto il controllo dell'email dal form e sembra funzionare,
ora ho modificato il codice ma pultroppo dove sono ora non posso verificare perchè siamo sotto dominio.
potresti controlla con questo codice così strutturato si ottiene questa benedetta risposta automatica?

PHP:
<?php

require_once("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->FromName = "Dawid Grace";
$mail->AddAddress("[email protected]");
$mail->IsHTML(true);  
$mail->Subject  =  "provace";
$mail->Body     =  "provace Body";
$mail->AltBody  =  "provace body txt";
//$mail->AddAttachment("public/filename_1.zip"); 
//$mail->AddAttachment("public/filename_2.zip"); 
$mail->From = @$email;
$mail->FromName = "Dawid Grace";
$mail->AddAddress("[email protected]");
$mail->IsHTML(true);  
$mail->Subject  =  "Risposta alla richiesta";
$mail->Body     =  "risposta al clienta";
//$mail->AltBody  =  "provace body txt";
if(!$mail->Send())
{	
echo "Si è verificato un errore nell'invio della mail";
}
else
{	
echo "Mail inviata con successo";}?>
 
ciao
salvo errori ed omissioni, secondo me non invia quello che vuoi

PHP:
<?php
require_once("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = "[email protected]";//RIGA 4: in questa riga FROM viene sovrascitta da riga 13
$mail->FromName = "Dawid Grace";//RIGA 5: perchè due volte uguale FromName, vedi riga 14
$mail->AddAddress("[email protected]");//come sopra
$mail->IsHTML(true);  //come sopra
$mail->Subject  =  "provace"; //RIGA 8: subjet viene sovrascitto, riga 17
$mail->Body     =  "provace Body";//RIGA 9: body viene sovrascitto, riga 18
$mail->AltBody  =  "provace body txt";
//$mail->AddAttachment("public/filename_1.zip"); 
//$mail->AddAttachment("public/filename_2.zip"); 
$mail->From = @$email;//RIGA 13: questa riga FROM sovrascive il valore inserito in riga 4 - cosa è quella @???
$mail->FromName = "Dawid Grace";//RIGA 14: perchè due volte uguale FromName, vedi riga 5
$mail->AddAddress("[email protected]");//come sopra
$mail->IsHTML(true);  //come sopra
$mail->Subject  =  "Risposta alla richiesta";//RIGA 17: subjet sovrascrive, riga 8
$mail->Body     =  "risposta al clienta";//RIGA 18: body sovrascrive, riga 9
//$mail->AltBody  =  "provace body txt";
if(!$mail->Send())
{    
echo "Si è verificato un errore nell'invio della mail";
}
else
{    
echo "Mail inviata con successo";}//l'invio puo darsi, ma invia quello che volevi?? ?>
per una risposta automatica devi istanziare nuovamente dopo il primo invio con i valori che ti servono

$mail_automatica = new PHPMailer();
e poi prosegui come per gli altri invii
es.
$mail_automatica->AddAddress("[email protected]");
$mail_automatica->Subject = "questa è una risposta automatica";
ecc.....
 
ecco dimmi se ci siamo?


PHP:
require_once("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->FromName = "Dawid Grace";
$mail->AddAddress("[email protected]");
$mail->IsHTML(true);  
$mail->Subject  =  "provace";
$mail->Body     =  "provace Body";
$mail->AltBody  =  "provace body txt";

if(!$mail->Send())
{	
echo "Si è verificato un errore nell'invio della mail";
}
else
	
$mail_automatica = new PHPMailer();
//e poi prosegui come per gli altri invii es.
$mail_automatica->AddAddress("$mail");
$mail_automatica->Subject = "questa è una risposta automatica";
$mail_automatica->Body   =  "risposta al cliente";
if(@mail($mail_automatica)) { // SE L'INOLTRO È ANDATO A BUON FINE...
}

{
echo "Mail inviata con successo";
}
 
ciao
perchè ti ostini a usare le @?
poi: perche mescoli la funzione mail() - dove andrebbe secondo te a prendere i valori di invio mail()?- con phpmailler?
poi ti sei dimenticata un ! e allora devi invertire l'i-else, un else e mi sembra una chiusura }

PHP:
//...
if($mail_automatica->Send()) {//se qui metti ! devi invertire
 // SE L'INOLTRO È ANDATO A BUON FINE...
}//l'else?
else
{
echo "Mail inviata con successo";//in funzione del ! che manca dovrebbe essere "errore di invio"
}
//dove è la chiusura del primo if?
//....
 
mai invece di arrabbiarti no....
potresti essere più cavaliere e scrivermi questo pezzetto di codice.
e poi dite che noi siamo strane:rolleyes:

mi da questo errore:elvis::elvis::elvis:

Could not instantiate mail function. Si è verificato un errore nell'invio della mail
Notice: Undefined variable: mail_automatica in C:\Programmi\EasyPHP-5.3.8.0\www\fitnesscenter\PHPMailer\config_mail.php on line 21

Fatal error: Call to a member function AddAddress() on a non-object in C:\Programmi\EasyPHP-5.3.8.0\www\fitnesscenter\PHPMailer\config_mail.php on line 21
 

Discussioni simili