Back to top

Autore Topic: [Risolto] Un immagine appena creata non viene incorporata nella mail  (Letto 3325 volte)

Offline chico_

  • Nuovo arrivato
  • *
  • Post: 11
  • Sesso: Maschio
    • Mostra profilo
Sono ancora io...
sono riuscito a creare un immagine barcode (in png), vedasi il mio post "Inviare mail con barcode come immagine incorporata" da inviare ad un utente incorporandola nella mail anziche' gestendola come immagine remota.
Adesso pero' mi trovo con un altro problema:
se cerco di inviare via mail l'immagine appena creata, al destinatario arriva la mail senza l'immagine. Inizialmente pensavo fosse un errore sintattico, ma poi mi sono reso conto che mandando una mail con un immagine creata precedentemente la mail arrivava con l'immagine correttamente aggiunta.
In pratica, è come se l'immagine venisse creata dopo l'invio della mail (ma il codice di creazione è precedente a quello dell'invio mail) o come se ci tenesse troppo tempo a crearsi , e nel frattempo l'email partisse e non trovandola ancora sul server non la incorporasse. Ma quest'ultima ipotesi non mi convince (l'immagine pesa 338 bytes).


Dove sbaglio?


Grazie


Chico_


p.s.:mi viene il dubbio che sia più una questione concettuale che relativa a Joomla, in tal caso mi scuso in anticipo per l'OT  :-[
« Ultima modifica: 09 Ott 2014, 11:38:36 da chico_ »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Un immagine appena creata non viene incorporata nella mail
« Risposta #1 il: 08 Ott 2014, 13:26:58 »
verifica bene la path: dubito che il processo di scrittura di una immagine vada in asincrono...
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline chico_

  • Nuovo arrivato
  • *
  • Post: 11
  • Sesso: Maschio
    • Mostra profilo
Re:Un immagine appena creata non viene incorporata nella mail
« Risposta #2 il: 08 Ott 2014, 14:38:03 »
Ciao.
Alla fine ho trovato il metodo:
invece di generarla con html:



Codice: [Seleziona]
<?php $datobc="ZZK123456";?>

<img src="<?php echo JURI::base();?>moduli/barcode.php?barcode=<?php echo $datobc?>&width=320&height=80&format=png&nomefile=<?php echo $datobc?>" />


l'ho creata usando wget:


Codice: [Seleziona]

<?php
$datobc
="ZZK123456";
$address='"'.JURI::base().'/moduli/barcode.php?barcode='.$datobc.'&width=320&height=80&nomefile='.$datobc.'"';
system('wget -O/dev/null '.$address );
?>


in entrambi i casi l'immagine viene generata, ma solo se creata con il secondo metodo viene allegata all'email..


Chico_

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Un immagine appena creata non viene incorporata nella mail
« Risposta #3 il: 08 Ott 2014, 15:10:57 »
eh?!  :o :o

al limite usa f[open|read|gets]() prima di spedire la mail, ma la chiamata system a wget mi lascia senza parole...

l'immagine con <img src dove viene creata? nello step (pagina) prima di spedire la mail? perché di sicuro non può essere nello stesso, dato che l'html viene processato dal browser dopo che il server ha processato il php...

sinceramente pensavo avessi modificato il codice per richiamarlo come funzione...
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline chico_

  • Nuovo arrivato
  • *
  • Post: 11
  • Sesso: Maschio
    • Mostra profilo
Re:Un immagine appena creata non viene incorporata nella mail
« Risposta #4 il: 08 Ott 2014, 16:20:25 »
Questa è la sequenza di operazioni (uso chronoforms v4):
1) Registrazione utente tramite l'action "Joomla Users Registration". In caso di successo procedo con:

2) Creazione del barcode. Ho modificato il file barcode.php in questo modo (posto solo la parte incriminata)

Codice: [Seleziona]

        //OutputImage ($im, $format, $quality);  <-- codice originale dello script
        imagepng( $im, $nomefile); /* <-- modifica inserita per salvare il file anziché generarne l'output a video
       
}




//-----------------------------------------------------------------------------
// Output an image to the browser
//-----------------------------------------------------------------------------
function OutputImage ($im, $format, $quality)
{
       
        switch ($format)
        {
                case "JPEG":
                        ImageJPEG ($im, "", $quality);
                        break;
                case "PNG":
                        ImagePNG ($im);
                        break;
                case "GIF":
                        ImageGIF ($im);
                        break;
        }
}
Visto che dovevo solo verificarne il funzionamento, inizialmente l'ho lasciato com'era senza richiamarlo come funzione, dato che comunque l'immagine la creava. Il barcode è legato all'ID utente appena registrato che recupero con
Codice: [Seleziona]
<?php $userid $form->data['_PLUGINS_']['joomla_registration']['id']; ?>2) Memorizzazione dei dati supplementari dell'utente inseriti nel form in una tabella creata ad hoc
3) Email all'amministratore con i dati dell'utente appena registrato


4) Invio dell'email all'utente contenente i dati di registrazione, il link per l'attivazione e il barcode incorporato nella mail
questo è il codice per l'invio della mail (in questa prima fase è strutturato solo per l'invio del barcode):
Codice: [Seleziona]
<?php
$userid 
$form->data['_PLUGINS_']['joomla_registration']['id'];
$nome $form->data['name'];
$mail $form->data['email'];
$numbcode=str_pad($userid,6,'0',STR_PAD_LEFT);




$mailer JFactory::getMailer();
$config JFactory::getConfig();
$sender = array( 
    
$config->get'config.mailfrom' ),
    
$config->get'config.fromname' ) );
 
$mailer->setSender($sender);
$user JFactory::getUser();
$recipient $mail;
$mailer->addRecipient($recipient);
$body   '<h2>Our mail</h2>'
    
'<div>-'.$numbcode.'- Test message'
    
'<img src="cid:logo_id" alt="logo"/><>';
$mailer->isHTML(true);
$mailer->Encoding 'base64';
$mailer->setBody($body);
// Optionally add embedded image
$bcode="moduli/ZZSXXXXXX.PNG";
$bcode=str_replace("XXXXXX",$numbcode,$bcode);
$mailer->AddEmbeddedImage($bcode'logo_id'$bcode'base64''image/png' );
// Optional file attached
/*$allegato="moduli/".$form->data['cf_pdf_file'];
$mailer->addAttachment($allegato);*/
$send $mailer->Send();
if ( 
$send !== true ) {
    echo 
'Error sending email: ' $send->__toString();
} else {
    echo 
'Mail sent';
}


?>





5) Output del messaggio di ringraziamento


Spero sia chiaro...


Grazie


Chico

Offline chico_

  • Nuovo arrivato
  • *
  • Post: 11
  • Sesso: Maschio
    • Mostra profilo
Re:Un immagine appena creata non viene incorporata nella mail
« Risposta #5 il: 09 Ott 2014, 11:37:59 »
Risolto.
l'errore stava nel fatto che (pensando di semplificare) avevo lasciato la generazione dell'immagine barcode con <img src...>.
Questo comportava, lavorando in HTML, che il codice di generazione immagine veniva eseguito DOPO il codice PHP, quindi l'immagine veniva generata dopo l'invio della mail (correggimi se sbaglio.....).


Ho quindi modificato il codice dello script richiamando barcode.php come funzione e adesso le mail arrivano con il barcode correttamente incorporato , evitando l'uso del wget.


Ti ringrazio per la pazienza e per i consigli, decisamente risolutivi.


Ciao


Chico_


 



Web Design Bolzano Kreatif