Come inviare e-mail da un programma _senza_ utilizzare un account preesistente?

StackOverflow https://stackoverflow.com/questions/29988

  •  09-06-2019
  •  | 
  •  

Domanda

Vorrei che il mio programma fosse in grado di inviarmi tramite email rapporti sugli errori.Come posso farlo senza codificare un nome utente/password/server SMTP/ecc.nel codice?(Ciò consentirebbe agli utenti di decompilare il programma e assumere il controllo di questo account di posta elettronica.)

Mi è stato detto che potresti fare alcune cose con il telneting sulla porta 25, ma sono molto confuso sui dettagli.La maggior parte degli snippet di codice su Google presuppone che tu abbia un account preesistente, il che non funziona in questa situazione.

Sto utilizzando .NET v3.5 (C# in particolare), ma immagino che le idee siano abbastanza simili nella maggior parte dei linguaggi.Finché ti rendi conto che lo sto facendo per un'app offline e non mi fornisci codice PHP o qualcosa del genere, dovremmo andare bene.

È stato utile?

Soluzione

Finché il tuo account è su gmail.com, configura gmail-smtp-in.l.google.com come server SMTP in uscita nel tuo programma.Non è necessario fornire una password per inviare e-mail agli account Gmail quando si utilizza quel server.

Altri suggerimenti

Vorrei creare un servizio web a cui connettersi.Questo servizio web dovrebbe inviare l'e-mail in base ai dati forniti dal programma.Tutti i dati di accesso sensibili vengono conservati sul lato del servizio web, quindi è più sicuro.

Se il programma deve inviarti un'e-mail direttamente, deve ottenere tali informazioni in qualche modo, in modo che anche un utente malintenzionato determinato possa ottenere quelle informazioni.

Hai preso in considerazione l'idea di ospitare un semplice modulo http o un servizio Web da qualche parte, in modo da poter pubblicare lì le informazioni necessarie dall'applicazione (non è richiesta l'autenticazione) e salvarlo per visualizzarlo manualmente in seguito o inviare l'e-mail da quel server?

Penso che il piano migliore sarebbe quello di inviare le informazioni sull'errore a qualche servizio (nel caso semplice, un modulo web) in esecuzione sotto il tuo controllo, che potrebbe quindi inviare un'e-mail (o registrarla in qualche altro modo appropriato).

Se si presuppone che l'invio dell'e-mail sia vantaggioso per l'utente finale, un'altra opzione sarebbe quella di chiedere all'utente di inserire il proprio server SMTP (e nome utente/password se richiesto) - Sui sistemi Unix, è possibile semplicemente utilizzare sendmail e fare affidamento su all'utente di averlo configurato correttamente.Lavoravo su un sistema che utilizzava questo approccio per inviare all'utente rapporti sulle attività pianificate del sistema e funzionava abbastanza bene.

Quello che devi fare è conoscere il server SMTP dell'ISP che stai utilizzando perché quando usi il server SMTP del tuo ISP, non sei considerato come spam di inoltro della posta, quindi puoi procedere senza alcuna autenticazione.

Sfortunatamente, non è sempre possibile ottenere facilmente tali informazioni OPPURE c'è qualche piccola eccezione che non ti consente di accedere in modo anonimo come quando utilizzi Exchange in un'azienda...

All'inizio ho pensato di crittografare le tue informazioni e decrittografarle durante il runtime, ma sarebbero comunque disponibili sniffando la scheda di rete.Potresti tuttavia combinarlo con un servizio web da qualche parte che esegua la decrittografia e l'invio di posta per te (o invii direttamente le informazioni al servizio web, come preferisci) come già suggerito da altri.

MailMessage msg = new MailMessage("someone@foo.com", "someoneelse@bar.com");
msg.Subject = "Check it out!";
msg.Body = "Visit stackoverflow.com!";
SmtpClient client = new SmtpClient("some.smtp.server", 25);
client.Send(msg);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top