2013-07-04 7 views
27

Sono cercare di invio di posta elettronica utilizzando gmail, e io sono sempre un'eccezione che è The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. i16sm1806350pag.18 - gsmtpLa risposta del server era: 5.7.0 È necessario prima emettere un comando STARTTLS. i16sm1806350pag.18 - gsmtp

codice che ho scritto per l'invio di posta elettronica è

  MailMessage mail = new MailMessage(); 
      mail.To.Add(txtEmail.Text.Trim()); 
      mail.To.Add("[email protected]"); 
      mail.From = new MailAddress("[email protected]"); 
      mail.Subject = "Confirmation of Registration on Job Junction."; 
      string Body = "Hi, this mail is to test sending mail using Gmail in ASP.NET"; 
      mail.Body = Body; 
      mail.IsBodyHtml = true; 
      SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); 
      // smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address 
      smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "password"); 
      // smtp.Port = 587; 
      //Or your Smtp Email ID and Password 
      smtp.UseDefaultCredentials = false; 
      // smtp.EnableSsl = true; 
      smtp.Send(mail); 

Ti prego, dimmi soluzioni sono non ottenere alcuna soluzione per queste eccezioni.

+0

Ciao @Ankur, se si ottiene la soluzione del problema, si prega di aiutarmi, perché sto ottenendo lo stesso errore. – Abhishek

+0

@Abhishek c'era SmtpClient Issue ho aggiunto smtp in web.confg e si è risolto come nelle risposte. –

risposta

28

Gmail richiede l'uso di una connessione sicura. Questo può essere impostato nel web.config in questo modo:

<network host="smtp.gmail.com" enableSsl="true" ... /> 

O

La SSL dovrebbe essere abilitare sul server web pure. consultare seguente link

Enabling SSL on IIS 7.0

2

logica tasto Invia

 string fromaddr = "[email protected]"; 
     string toaddr = TextBox1.Text;//TO ADDRESS HERE 
     string password = "YOUR PASSWROD"; 


     MailMessage msg = new MailMessage(); 
     msg.Subject = "Username &password"; 
     msg.From = new MailAddress(fromaddr); 
     msg.Body = "Message BODY"; 
     msg.To.Add(new MailAddress(TextBox1.Text)); 
     SmtpClient smtp = new SmtpClient(); 
     smtp.Host = "smtp.gmail.com"; 
     smtp.Port = 587; 
     smtp.UseDefaultCredentials = false; 
     smtp.EnableSsl = true; 
     NetworkCredential nc = new NetworkCredential(fromaddr,password); 
     smtp.Credentials = nc; 
     smtp.Send(msg); 

-> questo codice di lavoro al 100%, se si dispone di anti virus nel vostro sistema che il software anti virus firewall Limitare l'invio di mail dal nostro sistema in modo da disabilitare il tuo sistema antivirus e firewall. Dopo questo periodo questo codice .... In questo sopra controllo del codice TextBox1.Text viene utilizzato per a indirizzo

+0

Ci scusiamo per il coraggio, ma come fa il firewall a fare qualcosa? Sicuramente quando andrà in hosting il firewall degli sviluppatori non farà la differenza? Quindi spetterebbe a ciascun utente di non avere un firewall? – user2903379

14

Passo (1):smtp.EnableSsl = true;

se non bastasse:

Passo (2) : "accesso per le applicazioni meno sicure" deve essere abilitata per l'account Gmail utilizzato dal NetworkCredential utilizzando google's settings page:

5

Questo problema mi ha ossessionato durante la notte. Ecco come risolvere il problema:

  • Set ospita: smtp.gmail.com
  • Set porta: 587

Questa è la porta TLS. Stavo usando tutte le altre porte SMTP senza successo. Se si imposta enableSsl = true in questo modo:

Dim SMTP As New SmtpClient(HOST) 
SMTP.EnableSsl = True 

Tagliare i campi username e password (buon modo per evitare gli errori se l'utente immette l'email e la password al momento della registrazione come il mio fa) come questo:

SMTP.Credentials = New System.Net.NetworkCredential(EmailFrom.Trim(), EmailFromPassword.Trim()) 

Utilizzando la porta TLS considera il tuo SMTP come SMTPS che ti consente di autenticare. Ho immediatamente ricevuto un avviso da Google che diceva che la mia email stava bloccando un'applicazione che presenta rischi per la sicurezza o è obsoleta. Ho proseguito con "Attiva app meno sicure". Poi ho aggiornato le informazioni sul mio numero di telefono e google mi ha inviato un codice di verifica tramite testo. L'ho inserito e voilà!

Ho eseguito nuovamente l'applicazione ed è andata a buon fine. So che questo thread è vecchio, ma ho setacciato la rete leggendo tutte le eccezioni che stava lanciando e aggiungendo MsgBox dopo ogni riga per vedere cosa è andato storto. Ecco il mio codice di lavoro modificato per migliorare la leggibilità, come tutte le mie variabili sono provenienti da MySQL Database:

Try 
    Dim MySubject As String = "Email Subject Line" 
    Dim MyMessageBody As String = "This is the email body." 
    Dim RecipientEmail As String = "[email protected]" 
    Dim SenderEmail As String = "[email protected]" 
    Dim SenderDisplayName As String = "FirstName LastName" 
    Dim SenderEmailPassword As String = "SenderPassword4Gmail" 

    Dim HOST = "smtp.gmail.com" 
    Dim PORT = "587" 'TLS Port 

    Dim mail As New MailMessage 
    mail.Subject = MySubject 
    mail.Body = MyMessageBody 
    mail.To.Add(RecipientEmail) 
    mail.From = New MailAddress(SenderEmail, SenderDisplayName) 

    Dim SMTP As New SmtpClient(HOST) 
    SMTP.EnableSsl = True 
    SMTP.Credentials = New System.Net.NetworkCredential(SenderEmail.Trim(), SenderEmailPassword.Trim()) 
    SMTP.DeliveryMethod = SmtpDeliveryMethod.Network 
    SMTP.Port = PORT 
    SMTP.Send(mail) 
    MsgBox("Sent Message To : " & RecipientEmail, MsgBoxStyle.Information, "Sent!") 
Catch ex As Exception 
    MsgBox(ex.ToString) 
End Try 

Spero che questo codice consente l'OP, ma anche qualcuno come me che arriva al partito in ritardo. Godere.

0

Se stai passando (come me) tutti i parametri come porta, nome utente, password attraverso un sistema e non ti è consentito modificare il codice, puoi farlo facilmente sul web.config:

<system.net> 
    <mailSettings> 
     <smtp> 
     <network enableSsl="true"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 
Problemi correlati