• User

    Inviare un pdf generato con iTextShapr ad una mail inserita

    Salve, come da titolo, ho generato un file PDF con iTextSharp e vorrei inviarlo ad una mail inserita all'interno di una textbox.
    Dovrebbe essere tutto corretto quando provo a cliccare sul pulsante INVIA mi da il seguente errore su SmtpServer.Send(mail):

    Il server SMTP richiede una connessione protetta oppure il client non è stato autenticato. Risposta del server: 5.5.1 Authentication Required.

    Ecco il codice:

    
                var document = new Document(PageSize.A4, 25, 25, 25, 25);
                var output = new MemoryStream();
    
    
                var writer = PdfWriter.GetInstance(document, output);
                document.Open();
                var titleFont = FontFactory.GetFont("Arial", 20, Font.BOLD);
                var subTitleFont = FontFactory.GetFont("Arial", 14, Font.BOLD);
                var boldTableFont = FontFactory.GetFont("Arial", 12, Font.BOLD);
                var endingMessageFont = FontFactory.GetFont("Arial", 10, Font.ITALIC);
                var bodyFont = FontFactory.GetFont("Arial", 12, Font.NORMAL);
                document.Add(new Paragraph("", titleFont));
                document.Add(new Paragraph("", bodyFont));
                document.Add(Chunk.NEWLINE);
                document.Add(new Paragraph(titolo, subTitleFont)
                document.Add(Chunk.NEWLINE);
                document.Add(Chunk.NEWLINE);
                document.Close();
                Response.ContentType = "application/pdf";
                Response.BinaryWrite(output.GetBuffer());
    
    
                string gMail = "xxx";
                string gPsw = "xxx";
    
    
                MailMessage mail = new MailMessage();
                mail.From = new MailAddress(gMail);
                mail.To.Add(new MailAddress(TxtMail.Text));
                mail.Attachments.Add(new Attachment(output, "File.pdf"));
    
    
                System.Net.NetworkCredential login = new System.Net.NetworkCredential(gMail, gPsw);
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com", 587);
                SmtpServer.EnableSsl = true;
                SmtpServer.UseDefaultCredentials = false;
                SmtpServer.Credentials = login;
                SmtpServer.Send(mail);
    
    

    Dove sbaglio?


  • User Attivo

    prova a mettere UseDefaultCredentials a true


  • User

    Grazie per la risposta ma non funziona comunque.


  • User Attivo

    potrebbe esser legato ad un problema di sicurezza relativo a google.
    Prova a guardare questo link

    http://stackoverflow.com/questions/20906077/gmail-error-the-smtp-server-requires-a-secure-connection-or-the-client-was-not


  • User

    Purtroppo non ho trovato soluzione nella pagina che mi hai indicato, ho provato tutto ciò che hanno consigliato ma nulla.

    E' possibile che io sbagli nell'inserire le credenziali? Che credenziali dovrei mettere?


  • User Attivo

    dovresti inserire le credenziali dell'host che usi per spedire la mail


  • Moderatore

    Ciao Trese, lo UserName, variabile gMail, la metti completa di '@gmail.com' o senza?


  • User

    Con, comunque ho tra virgolette risolto. Il codice funziona correttamente, ora lo posto, ma non riesce ad inviare l'e-mail per questioni di impostazioni account gmail. L'errore è: Impossibile inviare l'e.mail. Suppongo dunque che sia un problema non relativo al codice ma alle impostazioni del server smtp sull'account.

    
               var mailSender = "[email protected]";
               var pswSender = "XXX";
               var mailReceiver = TxtMail.Text;
    
    
               MailMessage mail = new MailMessage(mailSender, mailReceiver);
               mail.Attachments.Add(new Attachment(output, "file.pdf"));                //output è una variabile di MemoryStrem
    
    
               SmtpClient client = new SmtpClient();
               client.Host = "smtp.gmail.com";
               client.EnableSsl = true;
               System.Net.NetworkCredential networkCred = new System.Net.NetworkCredential();
               networkCred.UserName = mailSender;
               networkCred.Password = pswSender;
               client.UseDefaultCredentials = true;
               client.Credentials = networkCred;
               client.Port = 993;
    
    
               client.Send(mail);
    
    

  • Moderatore

    Prova a guardare se sull'account gmail (da web) ci sono comunicazioni relative a tentativi di accesso sconosciuti...
    Se riconosci l'ip da cui proviene l'applicazione che tenta di inviare allora devi confermare a google che sei tu...