Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302

    Inviare email con pdf allegato

    Un saluto a tutti,
    avrei la necessità cliccando su di un icona



    di allegare un file pdf ad una mail. La mia idea era quella di cliccare sul link, aprire il client di posta installato sulla macchina che esegue la richiesta, trovare nel campo allegato il file generato e lasciare all'utente la possibilità di inserire il destinatario della mail.

    Mi sono scaricato phpmailer e ho trasferito la cartella nella root del gestionale,



    Questo è l'estratto di codice del file php che genera il pdf

    Codice PHP:
    use PHPMailer\PHPMailer\PHPMailer;
    use 
    PHPMailer\PHPMailer\Exception;

    require 
    'phpmailer/src/Exception.php';
    require 
    'phpmailer/src/PHPMailer.php';
    require 
    'phpmailer/src/SMTP.php';
    require 
    'fpdf/fpdf.php';
    require 
    'inc/db.php';
    define('€',chr(128));

    if (isset(
    $_GET['id_com'])) {
    $id_com = (int)$_GET['id_com'];
    $sq1 "SELECT * FROM commesse WHERE id_com = '$id_com'";
    $rs1 $mysqli->query($sq1);

    while (
    $row $rs1->fetch_array(MYSQLI_ASSOC)) {
    $cliente mysqli_real_escape_string($mysqlistrtoupper($row['cliente']));

    eccecc.
    eccecc.

    // Senza parametri rende il file al browser
    //$p->output(); 


    $doc $p->Output('''S');
     
    // invio dell'email
    $mail = new PHPMailer();
    $mail->From 'mittente@sito.it';
    $mail->FromName 'Il mio nome';
    $mail->Subject 'Allegato in PDF';
    $mail->Body 'Apri il file in allegato';
    $mail->AddAddress('destinatario@sito.it');

    // definizione dell'allegato 
    $mail->AddStringAttachment($doc'doc.pdf''base64''application/pdf');

    // spedizione
    $mail->Send();

    //ob_end_flush(); 
    Mi dareste una mano a venirne fuori ?

    P.S
    Il gestionale gira su un server Nas

    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Scusa, ma non ho capito. Vuoi usare phpmailer o il client di posta (tra l'altro potresti solo lanciarlo, e non creare la mail) ?
    Inoltre, che problema hai con lo script ?

    ps: leggendo la documentazione di fpdf, dovresti chiamare $doc = $p->Output('S');

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Quote Originariamente inviata da boots Visualizza il messaggio
    Scusa, ma non ho capito. Vuoi usare phpmailer o il client di posta (tra l'altro potresti solo lanciarlo, e non creare la mail) ?
    Inoltre, che problema hai con lo script ?
    Ciao boots,
    e scusami tu se sono stato poco chiaro nell'esposizione del mio problema. Io preferirei utilizzare il client di posta installato sulla macchina dell'utente, ma non so come fare per eseguire tale operazione allegando il relativo file pdf.

    Googlando ho notato che diversi utenti parlano di phpmailer e pensando di fare cosa buona ho provato a cimentarmi nella sua implementazione, ma allo stato attuale senza successo

    Quote Originariamente inviata da boots Visualizza il messaggio
    Inoltre, che problema hai con lo script ?
    ps: leggendo la documentazione di fpdf, dovresti chiamare $doc = $p->Output('S');
    Allo stato attuale se clicco sull'icona che mi dovrebbe generare la mail, non succede niente, o meglio si apre una pagina che punta a: http://mioip/mail_commessa.php?id_com=52 ma è una pagina bianca ...
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Quote Originariamente inviata da condor_uk Visualizza il messaggio
    Ciao boots,
    e scusami tu se sono stato poco chiaro nell'esposizione del mio problema. Io preferirei utilizzare il client di posta installato sulla macchina dell'utente, ma non so come fare per eseguire tale operazione allegando il relativo file pdf.
    Come ti ho detto, non puoi. Al massimo puoi lanciare il programma di posta con relativo indirizzo...ma tutto il resto deve farlo l'utente (e non vedo dove potrebbe prendere il pdf)


    Quote Originariamente inviata da condor_uk Visualizza il messaggio
    Allo stato attuale se clicco sull'icona che mi dovrebbe generare la mail, non succede niente, o meglio si apre una pagina che punta a: http://mioip/mail_commessa.php?id_com=52 ma è una pagina bianca ...
    Quello script non scrive nulla sulla pagina...quindi una pagina bianca è normale. Dovresti vedere se viene mandata la mail ed aggiungere un if:
    Codice PHP:
    if($mail->Send()){
      echo 
    "Email inviata";
    }else{
      echo 
    "Email non inviata";

    PS:Tieni presente che phpmailer usa il client di posta impostato sul server (apache o altro), quindi controlla che sia presente ed impostato

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Quote Originariamente inviata da boots Visualizza il messaggio
    Codice PHP:
    if($mail->Send()){
      echo 
    "Email inviata";
    }else{
      echo 
    "Email non inviata";

    PS:Tieni presente che phpmailer usa il client di posta impostato sul server (apache o altro), quindi controlla che sia presente ed impostato
    Codice PHP:
    $doc $p->Output('S');
     
    // invio dell'email
    $mail = new PHPMailer();
    $mail->From 'mittente@sito.it';
    $mail->FromName 'Eliox';
    $mail->Subject 'Allegato in PDF';
    $mail->Body 'Apri il file in allegato';
    $mail->AddAddress('destinatario@sito.it');

    // definizione dell'allegato 
    $mail->AddStringAttachment($doc'doc.pdf''base64''application/pdf');

    // spedizione
    //$mail->Send();

    if($mail->Send()){
      echo 
    "Email inviata";
    }else{
      echo 
    "Email non inviata";


    //ob_end_flush();
    ?> 
    entra correttamente nell'if ed esegue il secondo echo

    Sul server dove gira l'applicazione ho scaricato e configurato hMailServer, ma niente da fare...


    Questo il php.ini modificato sul server

    codice:
    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP=localhost
    ; http://php.net/smtp-port
    smtp_port=25
    
    ; For Win32 only.
    ; http://php.net/sendmail-from
    ;sendmail_from = me@example.com
    
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    ;sendmail_path =
    
    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail().
    ;mail.force_extra_parameters =
    
    ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
    mail.add_x_header=On
    
    ; The path to a log file that will log all mail() calls. Log entries include
    ; the full path of the script, line number, To address and headers.
    ;mail.log =
    ; Log mail to syslog (Event Log on Windows).
    ;mail.log = syslog
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Mi sa che devi mettere il sendmail_path (oppure impostare un server smtp esterno su phpmailer), altrimenti phpmailer non è in grado di "affidare" la mail.
    Sinceramente non so se hMailServer possa andare...ti conviene googlare e vedere se è fattibile

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.