Back to top

Autore Topic: Invio email non funzionante tramite componente mailto  (Letto 2197 volte)

Offline psmsrl

  • Nuovo arrivato
  • *
  • Post: 6
    • Mostra profilo
Buongiorno a tutti,
improvvisamente il codice php che sta dietro l'invio email attraverso il componente mailto sembra non funzionare più.
Probabilmente ho fatto qualche modifica che manda in confusione l'interprete, ma non sono riuscito a risalirci.
Oppure potrebbe essere qualcos altro, qualche impostazione che devo modificare da pannello di amministrazione, ma non saprei.
Potreste aiutarmi? Grazie mille in anticipo.

L'errore dopo il submit del form è:
Notice
Questa email non è stata inviata.


Posto qui sotto i codici delle due pagine richiamate.


CONTROLLER.php (sotto components/com_mailto):

Codice: [Seleziona]
<?php
error_reporting
(E_ALL);  
ini_set("display_errors"1);  
ini_set("display_startup_errors"1); 
ini_set("track_errors"1);   
ini_set("log_errors"1);  
ini_set("error_log""/logz.txt");  
ini_set("log_errors_max_len"0); 
defined('_JEXEC') or die;
class 
MailtoController extends JControllerLegacy


   public function 
mailto()
   {
      global 
$name;
      
$session JFactory::getSession();
      
$session->set('com_mailto.formtime'time());
      
$this->input->set('view''mailto');
      
$this->display();
   }
   public function 
send()
   {
      
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
      
$app     JFactory::getApplication();
      
$session JFactory::getSession();
      
$timeout $session->get('com_mailto.formtime'0);
      if (
$timeout == || time() - $timeout 5)
      {
         
JError::raiseNotice(500JText::_('COM_MAILTO_EMAIL_NOT_SENT'));
         return 
$this->mailto();
      }
      
$SiteName $app->get('sitename');
      
$link     MailtoHelper::validateHash($this->input->get('link''''post'));
      if (!
$link || !JUri::isInternal($link))
      {
         
JError::raiseNotice(500JText::_('COM_MAILTO_EMAIL_NOT_SENT'));
         return 
$this->mailto();
      }     
$headers = array (
         
'Content-Type:',
         
'MIME-Version:',
         
'Content-Transfer-Encoding:',
         
'bcc:',
         
'cc:'
      
);
      
$fields = array(
         
'mailto',
         
'sender',
         
'from',
         
'subject',
      );
      foreach (
$fields as $field)
      {
         foreach (
$headers as $header)
         {
            if (
strpos($_POST[$field], $header) !== false)
            {
               
JError::raiseError(403'');
            }
         }
      }
      unset (
$headers$fields);
      
$email           $this->input->post->getString('mailto''');
      
$sender          $this->input->post->getString('sender''');
      
$from            $this->input->post->getString('from''');
      
$subject_default JText::sprintf('COM_MAILTO_SENT_BY'$sender);
      
$subject         $this->input->post->getString('subject'$subject_default);
      
$error false;
      if (!
$email || !JMailHelper::isEmailAddress($email))
      {
         
$error JText::sprintf('COM_MAILTO_EMAIL_INVALID'$email);
         
JError::raiseWarning(0$error);
      }
      if (!
$from || !JMailHelper::isEmailAddress($from))
      {
         
$error JText::sprintf('COM_MAILTO_EMAIL_INVALID'$from);
         
JError::raiseWarning(0$error);
      }
      if (
$error)
      {
         return 
$this->mailto();
      }
      
$msg  JText::_('COM_MAILTO_EMAIL_MSG');
      
//$link = $link;                     //sembra apparentemente inutile
      
$body sprintf($msg$SiteName$sender$from$link);
      
$subject JMailHelper::cleanSubject($subject);
      
$body    JMailHelper::cleanBody($body);
      
$from  JStringPunycode::emailToPunycode($from);
      
$from  JMailHelper::cleanAddress($from);
      
$email JStringPunycode::emailToPunycode($email);
      if (
JFactory::getMailer()->sendMail($from$sender$email$subject$body) !== true)
      {
         
JError::raiseNotice(500JText::_('COM_MAILTO_EMAIL_NOT_SENT'));
         return 
$this->mailto();
      }
      
$this->input->set('view''sent');
      
$this->display();
   }
}




DEFAULT.php (sotto templates/lt_aircoms/html/com_mailto/mailto/):

Codice: [Seleziona]
<?php
defined
('_JEXEC') or die;
JHtml::_('behavior.core');
JHtml::_('behavior.keepalive');
$data   $this->get('data');
JFactory::getDocument()->addScriptDeclaration("
   Joomla.submitbutton = function(pressbutton)
   {
      var form = document.getElementById('mailtoForm');
      if (form.mailto.value == '' || form.from.value == '')
      {
         alert('" 
JText::_('COM_MAILTO_EMAIL_ERR_NOINFO') . "');
         return false;
      }
      form.submit();
   }
"
);
?>




<div id="mailto-window">
   <h2>
      <?php echo JText::_('COM_MAILTO_EMAIL_TO_A_FRIEND'); ?>
   </h2>
   <form action="<?php echo JUri::base() ?>index.php" id="mailtoForm" method="post">
      <div class="control-group">
         <label for="sender_field" class="control-label"><?php echo JText::_('COM_MAILTO_SENDER'); ?></label>
         <div class="controls">
            <input type="text" id="sender_field" name="sender" value="<?php echo $this->escape($data->sender); ?>">
         <>
      <>     
      <div class="control-group">
         <label for="mailto_field" class="control-label"><?php echo JText::_('COM_MAILTO_EMAIL_TO'); ?></label>
         <div class="controls">
            <input type="text" id="mailto_field" name="mailto" value="<?php echo $this->escape($data->mailto); ?>">
         <>
      <>
      <div class="control-group">
         <label for="from_field" class="control-label"><?php echo JText::_('COM_MAILTO_YOUR_EMAIL'); ?></label>
         <input type="text" id="from_field" name="from" value="<?php echo $this->escape($data->from); ?>">
      <>
      <div class="control-group">
         <label for="subject_field" class="control-label"><?php echo JText::_('COM_MAILTO_SUBJECT'); ?></label>
         <input type="text" id="subject_field" name="subject" value="<?php echo $this->escape($data->subject); ?>">
      <>
      <div class="control-group">
         <a href="#" onclick="performClick('theFile');">Seleziona il file da allegare[/url]
         <input type="file" id="theFile" />
      <>     
      <div class="control-group">
         <button class="btn btn-success" onclick="return Joomla.submitbutton('send');">
            <?php echo JText::_('COM_MAILTO_SEND'); ?>
         </button>
         <button class="btn btn-danger" onclick="window.close();return false;">
            <?php echo JText::_('COM_MAILTO_CANCEL'); ?>
         </button>
      <>
      <input type="hidden" name="layout" value="<?php echo $this->getLayout();?>" />
      <input type="hidden" name="option" value="com_mailto" />
      <input type="hidden" name="task" value="send" />
      <input type="hidden" name="tmpl" value="component" />
      <input type="hidden" name="link" value="<?php echo $data->link?>" />
      <?php echo JHtml::_('form.token'); ?>
   </form>
<>
</body>
</html>
« Ultima modifica: 09 Mag 2018, 12:42:09 da psmsrl »

Offline giusebos

  • Fuori controllo
  • *
  • Post: 21748
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
Re:Invio email non funzionante tramite componente mailto
« Risposta #1 il: 09 Mag 2018, 13:54:17 »
quel codice cosa è, tuo o stai modificando

se stai agendo su una tua estensione meglio postare in sviluppo, se invece stai modificando qualcosa di esistente, io prima controllerei i parametri email del tuo hosting.

Modificare le estensioni non è mai la scelta più furba se non lo si fa con la tecnica dell'override  ;)
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline psmsrl

  • Nuovo arrivato
  • *
  • Post: 6
    • Mostra profilo
Re:Invio email non funzionante tramite componente mailto
« Risposta #2 il: 09 Mag 2018, 17:13:05 »
Hai ragione...sì, il codice è dell'estensione. I parametri email sono settati correttamente, da dove recupero l'estensione originale?

Offline giusebos

  • Fuori controllo
  • *
  • Post: 21748
  • Sesso: Maschio
  • Giuseppe Serbelloni Mazzanti Viendalmare
    • Mostra profilo
Re:Invio email non funzionante tramite componente mailto
« Risposta #3 il: 09 Mag 2018, 18:07:48 »
Hai ragione...sì, il codice è dell'estensione. I parametri email sono settati correttamente,

se fossero settati correttamente funzionerebbe!
su www.icagenda.it guide e tutorial con esempi di chronoforms e chronoconnectivity

Offline psmsrl

  • Nuovo arrivato
  • *
  • Post: 6
    • Mostra profilo
Re:Invio email non funzionante tramite componente mailto
« Risposta #4 il: 10 Mag 2018, 08:45:15 »
Scusami, magari mi sono spiegato male..i parametri sono corretti perché prima funzionava. Poi ho manipolato quei due file per poter aggiungere un allegato (ho eliminato successivamente la parte aggiunta, ma forse non ho rimesso tutto com'era).
Per quello chiedevo se fosse possibile recuperare da qualche parte i due file originali dell'estensione mailto citati sopra. Help! :\

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 32046
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
Re:Invio email non funzionante tramite componente mailto
« Risposta #5 il: 10 Mag 2018, 09:00:11 »
Se è un componente di joomla li recuperi da una distribuzione joomla stessa versione

Offline psmsrl

  • Nuovo arrivato
  • *
  • Post: 6
    • Mostra profilo
Re:Invio email non funzionante tramite componente mailto
« Risposta #6 il: 16 Mag 2018, 15:17:50 »
Ho recuperato il componente, ma non riesco comunque ad inviare l'email.
L'errore risulta dal seguente pezzo di codice:


Codice: [Seleziona]
// Verify that this is a local link
      if (!$link || !JUri::isInternal($link))
      {
         // Non-local url...
         JError::raiseNotice(500, JText::_('COM_MAILTO_EMAIL_NOT_SENT'));
         return $this->mailto();
      }


dove, se faccio stampare la variabile $link ottengo un valore vuoto, ma l'url visibile contiene il parametro link valorizzato:

.../index.php/component/mailto/?tmpl=component&template=lt_aircoms&link=f8159dfbe5f215f87d4d567cac1dbccd02818560

 



Web Design Bolzano Kreatif