Oppure

Loading
09/05/22 16:34
quasar87
Ok, ho visto ci sono tanti servizi di questo tipo, e a costi ridotti, almeno nella versione base, provo!
11/05/22 17:10
quasar87
Ciao, ho utilizzato un servizio di server smtp, il programma esegue correttamenti i calcoli poi dovrebbe inviare l'email ma alla fine del codice per i calcoli c'è il metodo Console.Readkey che attende di premere un tasto per terminare il programma, ho così eliminato il metodo da quel punto mettendolo alla fine di tutto il programma cioè dopo la parte di codice per l'invio dell'email però il debug mi dice "le istruzioni di primo livello devono precedere le dichiarazioni di tipo e di spazio dei nomi" ma se metto il metodo prima di queste funziona solo la parte di calcolo e poi viene eseguito il metodo e attende che si prema un tasto per uscire, eseguire il codice per l'invio dell'email, come si fa in questi casi?
11/05/22 18:36
Thejuster
Sinceramente sarei curioso di vedere sto sorgente.
Sto leggendo degli errori che non ho mai visto in vita mia.

Hai letto almeno la guida che ti avevo postato?
della struttura di un programma?


using [ Eventuali Librerie ]

namespace spazio_dei_nomi_progetto 
{

   class programma
  {

           //Eventuali variabili globali   
       
         //Punto di ingresso del programma
         static void Main()
         {

          }


         static void blablabla()
         {
               //Eventali void o funzioni

         }

   }


}




mire.forumfree.it/ - Mire Engine
C# UI Designer
12/05/22 9:20
quasar87
Sto seguendo un manuale su C# ma le cose sono tante e non è facile metterle insieme correttamente, ora ricontrollo se non risolvo posto il codice, comunque a me il debug indica quel problema li.
12/05/22 10:25
quasar87
Sto seguendo un manuale su C# ma le cose sono tante e non è facile metterle insieme correttamente, ora ricontrollo se non risolvo posto il codice, comunque a me il debug indica quel problema li.
12/05/22 10:31
quasar87
Ecco di seguito la struttura che mi da quell'errore, come prima parte ho riportato per comodità la struttura che mi hai indicato in un altro post, poi c'è la parte relativa all'invio dell'email, il programma esegue il calcolo poi, se Console.Readkey lo posiziono alla fine mi da quell'errore, se lo posiziono alla fine della parte di codice che esegue il calcolo, non viene eseguita la parte dell'invio email.


//Le Variabili vanno dichiarate sempre prima del codice
double Calcolo1, Calcolo2, Calcolo3;
double valore;

Console.Write("Inserisci valore1: ");
var input = Console.ReadLine();


//Valore 1
double.TryParse(input, out valore);
Calcolo1 = (valore * 100 / 50 / 100 * 25);


//Valore2
Console.Write("Inserisci valore2: ");
input = Console.ReadLine();

double.TryParse(input, out valore);
Calcolo2 = (valore * 100 / 50 / 100 * 25);

//Valore3
Console.Write("Inserisci valore3: ");
input = Console.ReadLine();

double.TryParse(input, out valore);
Calcolo3 = (valore * 100 / 50 / 100 * 25);


//Risultato
Console.WriteLine($"I Calcoli risultano {Calcolo1}, {Calcolo2} e {Calcolo3}");


namespace Test
{
    using System.Net.Mail;
    using System.Net;
    class Program
    {
        static void Main(string[] args)
        {
            MailMessage message = new MailMessage();
            message.To.Add("email_destinatario1, email_destinatario2, ecc");
            message.Subject = "Test invio email con C#";
            message.Body = "Questa è una email di test inviata con server smtp da C#";
            message.From = new MailAddress("email_mittente", "nome_mittente_visualizzato_da_destinatario");
            SmtpClient smtp = new SmtpClient("nome_Server_smtp", porta);
            smtp.EnableSsl = true;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = new NetworkCredential("email_mittente", "password_email_mittente");
            smtp.Send(message);
        }
    }
}


Console.ReadKey(); //Attesa per terminare il programma
12/05/22 17:37
Thejuster
Quindi secondo te è corretto?

3 post precedenti che ho scritto?



using [ Eventuali Librerie ]
 
namespace spazio_dei_nomi_progetto
{
 
   class programma
  {
 
           //Eventuali variabili globali  
       
         //Punto di ingresso del programma
         static void Main()
         {
 
          }
 
 
         static void blablabla()
         {
               //Eventali void o funzioni
 
         }
 
   }
 
 
}




Perché vai a mettere quell'ambaradan di codice prima del namespace?

ripeto:

1° Using (Solo importazione di librerie e niente codice)
2° namespace (Solo Namespace niente codice)
3° classe ( Solo classe niente codice)
4° Eventuali Variabili globali ( Solo variabili e niente codice)
5° Void Main (Punto di partenza del programma (All'interno del void puoi inserire codice)
6° void Mia_Funzione ( Crei eventuali fuzioni con codice)

pierotofy.it/pages/guide/Guida_al_Csharp/La_Struttura_di_un_applicazione/


Racchiudi tutti i calcoli in un void a parte e chiamalo dal main.


namespace test {

   class Program {

      //Dopo la dichiarazione della classe si possono dichiarare variabili globali
      //Le Variabili vanno dichiarate sempre prima del codice
      double Calcolo1, Calcolo2, Calcolo3;

      static void Calcolo() {
         double valore;

         Console.Write("Inserisci valore1: ");
         var input = Console.ReadLine();

         //Valore 1
         double.TryParse(input, out valore);
         Calcolo1 = (valore * 100 / 50 / 100 * 25);

         //Valore2
         Console.Write("Inserisci valore2: ");
         input = Console.ReadLine();

         double.TryParse(input, out valore);
         Calcolo2 = (valore * 100 / 50 / 100 * 25);

         //Valore3
         Console.Write("Inserisci valore3: ");
         input = Console.ReadLine();

         double.TryParse(input, out valore);
         Calcolo3 = (valore * 100 / 50 / 100 * 25);

         //Risultato
         Console.WriteLine($"I Calcoli risultano {Calcolo1}, {Calcolo2} e {Calcolo3}");

      }

      static void Main(string[] args) {

         Calcolo(); //Esegui il calcolo

         //Invii email
         MailMessage message = new MailMessage();
         message.To.Add("email_destinatario1, email_destinatario2, ecc");
         message.Subject = "Test invio email con C#";
         message.Body = "Questa è una email di test inviata con server smtp da C#";
         message.From = new MailAddress("email_mittente", "nome_mittente_visualizzato_da_destinatario");
         SmtpClient smtp = new SmtpClient("nome_Server_smtp", porta);
         smtp.EnableSsl = true;
         smtp.UseDefaultCredentials = false;
         smtp.Credentials = new NetworkCredential("email_mittente", "password_email_mittente");
         smtp.Send(message);

         Console.ReadKey(); //Attesa per terminare il programma
      }

   }

}




Questo è il modo corretto.

Forse in questo modo ti è più chiaro.

Namespace, è lo spazio dei nomi dell'applicazione, che può avere più nomi o posizioni.
E come un palazzo, dove al suo interno sono contenuti vari appartamenti (classi), ed in ogni appartamento (classe), c'è una persona (void) che fa qualcosa.

Esempio non puoi mettere un persona(void) a dormire nel palazzo (namespace), ma nell'appartamento(classe).


Quindi,


Namespace Palazzo
{
   
  class Appartamento_luca
  {
  
        void Bevi() {}
        void Dormi() {}

        void Luca() //sarebbe static void Main
        {
              Bevi();
              Dormi();

         }
       

   }

}



Più chiaro di questo non sò spiegarti, altrimenti ci rinuncio :pat:
mire.forumfree.it/ - Mire Engine
C# UI Designer
12/05/22 18:53
quasar87
Ci riguardo per bene con calma, anche come scritto da te vengono segnalati errori che prima non c'erano, faccio un po' di altre prove tenedo presente la struttura, sono parecchie cose e non sono facili da mettere tutte insieme.