Back to top

Autore Topic: [RISOLTO] Inviare mail con barcode come immagine incorporata  (Letto 2852 volte)

Offline chico_

  • Nuovo arrivato
  • *
  • Post: 11
  • Sesso: Maschio
    • Mostra profilo
Buongiorno.
Usando chronoforms sono riuscito a inviare via mail un barcode. Il problema è che avrei bisogno che il barcode sia incorporato nella mail, non visto come contenuto remoto.
Con il codice di docs.joomla.org (http://docs.joomla.org/Sending_email_from_extensions) ho fatto una prova con un immagine normale e la mail arriva correttamente con l'immagine incorporata:
Codice: [Seleziona]
<?php
$mailer 
JFactory::getMailer();
$config JFactory::getConfig();
$sender = array( 
    
$config->get'config.mailfrom' ),
    
$config->get'config.fromname' ) );
 
$mailer->setSender($sender);
$user JFactory::getUser();
$recipient $user->email;
$recipient="develop@chicosoft.it"
$mailer->addRecipient($recipient);
$body   '<h2>Our mail</h2>'
    
'<div>Messaggio con immagine incorporata'
    
'<img src="cid:logo_id" alt="logo"/><>';
$mailer->isHTML(true);
$mailer->Encoding 'base64';
$mailer->setBody($body);
// Optionally add embedded image
$bcode="images/clash.jpg";
$mailer->AddEmbeddedImage$bcode'logo_id'$bcode'base64''image/jpeg' );
$send $mailer->Send();
if ( 
$send !== true ) {
    echo 
'Error sending email: ' $send->__toString();
} else {
    echo 
'Mail sent';
}


?>





Quindi pensavo (ingenuo....) che modificando il contenuto della variabile $bcode e inserendo il codice per generare il barcode il tutto funzionasse. Invece no.
Questa è la variabile modificata :
Codice: [Seleziona]
$bcode="moduli/barcode.php?barcode=ZZS005614&width=320&height=80"
La mail arriva senza l'immagine inserita (ho provato anche con il percorso assoluto ma senza successo).
Se inserisco il percorso assoluto nel browser mi appare a video il barcode, quindi è solo un problema di trasmissione embedded.


Qualcuno ha qualche idea?


Grazie


Chico_
« Ultima modifica: 06 Ott 2014, 18:14:39 da chico_ »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Inviare mail con barcode come immagine incorporata
« Risposta #1 il: 06 Ott 2014, 16:57:38 »
puoi inserire un file nella mail ma non uno stream.

devi modificare la funzione in barcode.php in modo che scriva il file su file sysytem invece di restituirlo come stream http, dopo di che passi al metodo AddEmbeddedImage() la path (assoluta!) della immagine, a questo punto funzionerà.

ciao,
marco
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:Inviare mail con barcode come immagine incorporata
« Risposta #2 il: 06 Ott 2014, 17:52:30 »

Non avevo mai effettuato un operazione di questo tipo, ma googlando ho trovato l'istruzione imagepng che ho usato semplicemente in questo modo:
Codice: [Seleziona]
imagepng( $im, "c2p.png" );inserendola all'interno di barcode.php, sostituendola alla routine di output a video (ovviamente dovro' smanettarci ancora per passare un parametro univoco per il nome del file onde evitare duplicati).


Funziona (grazie !!).


Secondo te l'uso di questa istruzione è un approccio corretto al problema?


Ciao


Chico_




Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Inviare mail con barcode come immagine incorporata
« Risposta #3 il: 06 Ott 2014, 18:02:28 »
non so come funziona barcode.php quindi è difficile rispondere con precisione, ma se l'immagine è creata con imagecreatexxx allora va bene qualsiasi funzione.
probabilmente c'era solo imagepng($im) che restituisce uno stream (non esiste un output a video, dato che è un server remoto): se gli hai aggiunto il nome file va bene.

barcode=ZZS005614 immagino che sia il codice da creare, quindi logica vorrebbe che la immagine fosse creata come ZZS005614.png, non ti pare?

ciao
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:Inviare mail con barcode come immagine incorporata
« Risposta #4 il: 06 Ott 2014, 18:12:30 »
Mi sa che è meglio che per oggi stacchi... :-[
hai ragione, nulla di più univoco dell'ID user che va nel barcode ......
E adesso che me lo fai notare, avevo il codice sotto gli occhi in barcode.php:
l'istruzione:
Codice: [Seleziona]
OutputImage ($im, $format, $quality);andava a richiamare questa routine:

Codice: [Seleziona]

function OutputImage ($im, $format, $quality)
{
       
        switch ($format)
        {
                case "JPEG":
                        ImageJPEG ($im, "", $quality);
                        break;
                case "PNG":
                        ImagePNG ($im);
                        break;
                case "GIF":
                        ImageGIF ($im);
                        break;
        }
}


Che , guarda caso, usa proprio imagepng... l'avevo sotto gli occhi, corpo di mille capodogli.....


Avvisatemi quando aggiungete l'emoticon "pirla" che me ne aggiungo un paio in questo thread. :)


Grazie ancora e buona serata


Chico_

 



Web Design Bolzano Kreatif