Mail con c#

di il
34 risposte

34 Risposte - Pagina 2

  • Re: Mail con c#

    GianlucaB ha scritto:


    Sinceramente non ho provato, ma ho visto guide dove è possibile inviare una mail direttamente da c#
    .net mette a disposizione System.Net.Mail, che permette di inviare mail, basta avere una account mail, ed utilizzare il server smtp e le credenziali di accesso.

    Devo rettificare quanto detto, ho provato diversi codici, ma niente nessuno funziona, il problema è sempre che non si riesce a connettere al server, alla fine esce sempre un timeout di connessione.

    Quindi probabilmente niente mail direttamente da c#.
  • Re: Mail con c#

    Scusa , ma ti pare possibile che non sia possibile inviare mail da c# ? ... evidentemente NO.

    sbaglierai qualcosa nelle impostazioni per connetterti al server...

    potresti anche provare con la libreria MailKit
  • Re: Mail con c#

    In passato ho usato smtpclient e funzionava senza problemi ,prova a vedere quest'esempio http://csharp.net-informations.com/communications/csharp-smtp-mail.htm
  • Re: Mail con c#

    GianlucaB ha scritto:


    Quindi probabilmente niente mail direttamente da c#.
    Ma che dici? Si fa quotidianamente in tutto il mondo ...

    O il tuo codice è sbagliato o sbagli le porte a cui tenti di connetterti.

    Non ho letto tutto, ma il codice che utilizzi adesso e che non funziona qual è?

    P.S. Se devi usare il programma di posta predefinito lo usi senza un programma C# perché non ha senso. Se vuoi inviare la posta con un programma C# lo fai direttamente.
  • Re: Mail con c#

    gian82 ha scritto:


    In passato ho usato smtpclient e funzionava senza problemi ,prova a vedere quest'esempio http://csharp.net-informations.com/communications/csharp-smtp-mail.htm
    Credo che anche quello sia uno dei codici che avevo provato, in questo caso l'errore riportato è un altro.



    Nello stesso tempo una mail da parte di google, mi ha avvisato che un tentativo di accesso è stato bloccato, come è giusto che sia.

    Con tutte le implementazioni di sicurezza che sono state inserite negli ultimi tempi, alcune volte è già complicato riuscire ad utilizzare la posta con gli appositi software di posta elettronica, figuriamoci usare 3 righe di codice in c#.

    Anche per questo motivo, mi sarebbe piaciuto confezionare una mail, da essere utilizzata con il software di posta predefinito.
    Ho provato anche ad aprire un file .eml di una mail scaricata da thunderbird, ma il file è praticamente indecifrabile.
  • Re: Mail con c#

    Ripeto... la posta con C# la invii facilmente. Dipende da quale provider usi il codice può cambiare di poco. Non ci hai mostrato il codice che usi quindi ...
  • Re: Mail con c#

    Mi associo ad oregon, la mail si può mandare, tutto è legato alle credenziali e ai server, oggi la sicurezza impone che chi invia una mail rispetti dei parametri.
    Ti posto un esempio di invio mail con allegato usando un account google, oramai tutti ne hanno uno.
    Google vedrà l'invio come eseguito da app non sicura, perché il tuo codice di invio è privo di un certificato di sicurezza registrato.
    Segui le info contenute nel codice:

    aggiungi:
    using System.Net;
    using System.Net.Mail;
    using System.Net.Mime;
    
                // esempio invio mail + allegato con un account google,
                // ultimamente google non considera sicuro l'invio di mail senza certificazione,
                // per permettere l'invio, abilitare: Accesso app meno sicure
                // https://www.google.com/settings/security/lesssecureapps
               
            
                MailMessage mail = new MailMessage();
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
    
                string MailAccount = "chi.invia@gmail.com"; // aggiungi il tuo indirizzo mail google
                string Password = "tuapassword"; // la tua password
                string Destinatario = "chi.riceve@tiscali.it"; // a chi va
                mail.Subject = "Mail da C#"; // oggetto
                mail.Body = "In allegato file .txt, cordiali saluti"; // testo della mail
    
                mail.From = new MailAddress(MailAccount);
                mail.To.Add(Destinatario); 
                // omettere se non serve allegato
                System.Net.Mail.Attachment attachment;
                attachment = new System.Net.Mail.Attachment("c:/allegato.txt"); // deve esistere
                mail.Attachments.Add(attachment);
                // -------------------------------
    
                SmtpServer.Port = 587;
                SmtpServer.Credentials = new System.Net.NetworkCredential(MailAccount, Password);
                SmtpServer.EnableSsl = true;
    
                SmtpServer.Send(mail);
                MessageBox.Show("inviata");
  • Re: Mail con c#

    Posta il codice utilizzando il tag code ed invia il messaggio di errore completo ,magari riusciamo a capirci
    P.S. offusca la password
  • Re: Mail con c#

    I codici che si trovano in rete sono quelli, ne ho provati diversi e nessuno ha funzionato, adesso l'ultimo è quello fornito da Rubik

    Testando il codice fornito da Rubik, succede questo:
    System.Net.Mail.SmtpException: 'Il server SMTP richiede una connessione protetta oppure il client non è stato autenticato. Risposta del server: 5.7.0 Authentication Required. Learn more at'
    Se però invece di utilizzare la porta 587 (Porta per TLS/STARTTLS) , utilizzzo la porta 465 (Porta per SSL), succede quest'altro errore:
    System.Net.Mail.SmtpException: 'Errore durante l'invio della post
    Eccezione interna
    IOException: Impossibile leggere dati dalla connessione del trasporto: net_io_connectionclosed.
    Oppure anche questo
    System.Net.Mail.SmtpException: 'Errore durante l'invio della posta.'
    SocketException: Impossibile stabilire la connessione. Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato 172.217.218.108:456
  • Re: Mail con c#

    Ma le hai abilitate le app meno sicure su google ?
  • Re: Mail con c#

    GianlucaB ha scritto:


    Testando il codice fornito da Rubik, succede questo:
    System.Net.Mail.SmtpException: 'Il server SMTP richiede una connessione protetta oppure il client non è stato autenticato. Risposta del server: 5.7.0 Authentication Required. Learn more at'
    devi accedere al tuo account usando questo link:
    https://www.google.com/settings/security/lesssecureapp
    abilitare: Accesso app meno sicure

    poi riprova ad inviare.

    se hai ancora errori:
    1) la tua mail è sbagliata
    2) la tua password è sbagliata
    3) hai introdotto inavvertitamente errori nel codice
  • Re: Mail con c#

    Ho l'account di posta elettronica con aruba, e da sempre invio mail automatizzate con un mio programma VB.Net, non è stato facile ma l'ho convertito in C#, naturalmente posto il minimale per testarne il funzionamento, dovrebbe funzionare con tutti i server standard che usano la porta 25.

    Il codice usa il riferimento COM: Microsoft CDO for Windows 2000 Libray 1.0 ( il componente è datato ma su aruba si autentica correttamente )

    using System.IO;
    
                CDO.Message objMail = new CDO.Message();
    
                string Account = "mail@sito.it"; // da chi
                string ServerSMTP = "smtp.xxxxxxxxx.it"; // server di posta elettronica
                string Password = "XXXXXXXXX"; // password
                int ServerPORT = 25; // porta standard 25, testata con aruba
                bool SSL = false; // alcuni server richiedono true
                string Destinatario = "mario.rossi@gmail.com"; // a chi
                string Allegato = "c:/allegato.txt"; // se il file esiste viene allegato
                objMail.Subject = "Test invio da C# CDO"; // oggetto
                objMail.TextBody = "Mail inviata da C# riga1" + Environment.NewLine + "riga2"; // testo della mail
    
                objMail.From = Account;
                objMail.To = Destinatario;
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"].Value = 2;
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"].Value = ServerSMTP;
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"].Value = 1;
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"].Value = Account;
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"].Value = Password;
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"].Value = ServerPORT;
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpusessl"].Value = SSL;
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"].Value = 60;
                objMail.Configuration.Fields.Update();
    
                if (File.Exists(Allegato)) { objMail.AddAttachment(Allegato, null, null); }
    
                objMail.Send();
    
                MessageBox.Show("messaggio inviato");            
    
    Buone Mail.
    Allegati:
    29370_a50fd4ef2badb1cc007eaceff31abcd7.jpg
    29370_a50fd4ef2badb1cc007eaceff31abcd7.jpg
  • Re: Mail con c#

    Mi associo al consiglio di @sspintux, usa MailKit.
    Inoltre ssl 465
  • Re: Mail con c#

    Tra parentedi, se ben ricordo, SmtpClient è sconsigliata dalla stessa Microsoft;

    Comunque mi risulta che il codice postato funzioni correttamente
    dopo aver abilitato le app meno sicure sull'account google
  • Re: Mail con c#

    Non ho disabilitato le app meno sicure, quindi è probabile che sia per quello che il codice non funzioni.

    Ma non mi sembra una buona soluzione dover abbassare il livello di sicurezza per poter inviare una mail, quando i software di posta elettronica ti permettono di ricevere ed inviare mail, sena dover abbassare il livello di sicurezza.

    Abilitare le app meno sicure, significa che chiunque con 3 righe di codice, ed un brute force può violarti l'account di posta.
    Per questo motivo mi sarebbe piaciuto di più utilizzare il software di posta predefinito.
Devi accedere o registrarti per scrivere nel forum
34 risposte