2011-11-02 1 views
5

Sono un debuttante di ASP e sto risolvendo un modulo per il lavoro. Nessuno di noi qui è esperto di ASP, perché usiamo PHP. Ma sono anche alla base dell'esperienza di PHP, principalmente lavorando con HTML/CSS da solo. Le mie attuali credenziali di moduli assomigliano a:Come utilizzare SMTP Gmail in formato ASP.NET

rotected Sub SubmitForm_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     If Not Page.IsValid Then Exit Sub 

     Dim SendResultsTo As String = "email to" 
     Dim smtpMailServer As String = "email server" 
     Dim smtpUsername As String = "email username" 
     Dim smtpPassword As String = "password" 
     Dim MailSubject As String = "Form Results" 

Come potrei fare per inviare questo modulo a un indirizzo Gmail? So che devo includere la porta (587) da qualche parte, ma non riesco a capire dove, in quanto questa forma non corrisponde alla sintassi di altre forme che ho visto. Qualsiasi aiuto sarebbe molto apprezzato!

risposta

12
protected void SendMail() 
     { 
      MailMessage msg = new MailMessage(); 
      System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); 
      try 
      { 
       msg.Subject = "Add Subject"; 
       msg.Body = "Add Email Body Part"; 
       msg.From = new MailAddress("Valid Email Address"); 
       msg.To.Add("Valid Email Address"); 
       msg.IsBodyHtml = true; 
       client.Host = "smtp.gmail.com"; 
       System.Net.NetworkCredential basicauthenticationinfo = new System.Net.NetworkCredential("Valid Email Address", "Password"); 
       client.Port = int.Parse("587"); 
       client.EnableSsl = true; 
       client.UseDefaultCredentials = false; 
       client.Credentials = basicauthenticationinfo; 
       client.DeliveryMethod = SmtpDeliveryMethod.Network; 
       client.Send(msg); 
      } 
      catch (Exception ex) 
      { 
       log.Error(ex.Message); 
      } 
     } 
+2

Grazie! Capito! –

+0

Gmail/Google bloccherà l'invio dell'e-mail. Puoi modificare le impostazioni dall'account Gmail del mittente per consentire ad "app meno sicure" di accedervi. – Shiljo

1

Creare un oggetto System.Net.Mail.SmtpClient, impostare le informazioni sul server SMTP che si stanno utilizzando.

Quindi creare uno System.Smtl.MailMessage con i dati del messaggio e inviarlo:

using (System.Net.Mail.SmtpClient mail = new System.Net.Mail.SmtpClient()) { 
    using (System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage("from*where.com", "[email protected]") { 
     IsBodyHtml = true, 
     Subject = "Subject text", 
     Body = messageBody, 
    }) { 
     mail.Send(message); 
} // using 

è possibile configurare lo SmtpClient nel costruttore, usiamo web.comfig, quindi non ho quel codice .

+0

non ho idea di come fare per farlo, hahaha. Non dovrei nemmeno lavorare a questo progetto, ma sfortunatamente sono l'unico disponibile a farlo. –

+0

Il web.config nella risposta sopra imposta l'oggetto SmtpClient, quindi è possibile inviare un messaggio usando il mio codice invariato. – drdwilcox

+0

Ecco la mia sintassi completa http://pastebin.com/85Ad9swq Mi scuso, ma non so nemmeno da dove cominciare. Non ho motivi validi per imparare ASP.NET ...a parte questa istanza -_- –

16

È possibile aggiungere questo nel vostro file di web.config

<system.net> 
    <mailSettings> 
     <smtp from="[email protected] "> 
     <network host="smtp.gmail.com" defaultCredentials="false" 
     port="587" userName ="[email protected]" password="yourpassword" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 
+0

Rimuoverei l'intera parte dal mio codice esistente? 'Dim SendResultsTo come stringa = "email a" Dim smtpMailServer come stringa = "server di posta elettronica" Dim smtpUsername come stringa = "email username" Dim SmtpPassword come stringa = "password" Dim MailSubject come stringa = "i risultati del modulo "' –

+0

non è necessario specificare la password del nome utente e la rete di nuovo nel codice, nel codice creare un oggetto SmtpClient per inviare il messaggio –

+0

grazie per questo suggerimento utile. buon lavoro. –

-1

C'è no shortage of tutorials su come inviare una e-mail dall'interno di .NET.

In sostanza si desidera un oggetto System.Net.Mail.SmtpClient per interagire con il server SMTP, un oggetto System.Net.Mail.MailMessage per contenere i dati del messaggio e i dati di configurazione nel file di configurazione per indirizzare il client su come/dove inviare il messaggio.

0

Prova questo.

Dim client As New Net.Mail.SmtpClient 
client.UseDefaultCredentials = False 
client.Credentials = New System.Net.NetworkCredential("[email protected]", "password") 
client.Host = "smtp.gmail.com" 
client.Port = 587 
client.EnableSsl = True 
client.Send("[email protected]","[email protected]","subject","body") 
+0

Ottengo un errore di runtime. Se non Page.IsValid Poi Exit Sub Dim cliente come nuovo Net.Mail.SmtpClient client.UseDefaultCredentials = False client.Credentials = netto System.Net.NetworkCredential ("[email protected]", "pajax6767 ") client.Host =" smtp.gmail.com " client.Port = 587 client.EnableSsl = True client.Send (" [email protected] "," [email protected] "," oggetto " , "body") Prova Dim txtQ As TextBox = Me.FormContent.FindControl ("TextBoxQ") ' –

+1

per favore cancella questo. la tua password è rivelata! – naveen

+1

è una password falsa –

0

Se si sta utilizzando la verifica 2-step, non dimenticate di generare una password specifica applicazione e l'uso che, senza la password utilizzata per accedere a Gmail.

(Mi dispiace non posso aggiungere questo come un commento. Non abbastanza rep al momento della pubblicazione di questo.)

0

Google ora blocca sign-in da un app (anche su SSL) per inviare una e-mail. Hai due opzioni:

  1. Abilita app meno sicure per l'account che stai utilizzando; O
  2. generare un app-password Google (consigliato)

Per l'opzione 2, si dovrà attivare l'autenticazione a 2 fattori prima di poter generare un pasword app. Ecco i passaggi che ho svolto per ottenere questo lavoro sulla mia web app ASP.NET

How to configure an ASP.NET web app with Gmail SMTP