Odesílaní e-mailů přes SMTP   zodpovězená otázka

ASP.NET WebForms

Dobrý den,

napsal jsem jsi jednoduchý script na odesílaní e-mailů přes SMTP. Bohužel furt dostávám chybové hlášení.

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. 11sm5169373bkj.23

Kód vypadá následovně.

protected void Button1_Click(object sender, EventArgs e)
        {
            MailMessage msg = new MailMessage();

            msg.From = new MailAddress("[email protected]");

            msg.To.Add(new MailAddress("[email protected]"));

            msg.Subject = "Předmět zprávy";

            msg.Body = "Text zprávy";

            SmtpClient smtp = new SmtpClient();
           
            smtp.Send(msg);// Zde je chyba

Webconfig

<configuration>
  <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>

  <system.net>

    <mailSettings>

      <smtp from="[email protected]" deliveryMethod="Network">

        <network host="smtp.gmail.com" port="587" userName="[email protected]" password="Pass" defaultCredentials="true" />

      </smtp>

    </mailSettings>

  </system.net>
  
</configuration> 

Kód zatím nemám hozený na serveru, spouštím pouze na lacale!!!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Povolte SSL připojení

nahlásit spamnahlásit spam 0 odpovědětodpovědět

http://forums.asp.net/t/1224058.aspx

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Povoleno, bohužel problém přetrváva.

<mailSettings>

      <smtp from="[email protected]" deliveryMethod="Network">

        <network host="smtp.gmail.com" port="587" userName="[email protected]" password="Warcraft3" defaultCredentials="true" enableSsl="true"/>

      </smtp>

    </mailSettings>
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem sem omilem přidal i svoje přihlašovací údaje na e-mail a už mi ho někdo stačil zrušit. Ještě, že jsem ho vytvořil jen pro tento účel :-)t

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Problém asi je, že z web.configu nevytahujete ani port, ani username, ani heslo... Takhle mi to chodí ve vb.net, do C# si to zkuste přeložit.

Dim configurationFile As Configuration = WebConfigurationManager.OpenWebConfiguration("~\Web.config")
        Dim mailSettings As MailSettingsSectionGroup = TryCast(configurationFile.GetSectionGroup("system.net/mailSettings"), MailSettingsSectionGroup)
        Dim port As Integer
        Dim host As String, password As String, username As String
        Dim msgTo As String = TbTo.Text
        Dim msgBody As String = TbBody.Text
        Dim msgSubj As String = TbSubject.Text
        Dim msgFrom As String

        If mailSettings IsNot Nothing Then
            port = mailSettings.Smtp.Network.Port
            host = mailSettings.Smtp.Network.Host
            password = mailSettings.Smtp.Network.Password
            username = mailSettings.Smtp.Network.UserName
            msgFrom = mailSettings.Smtp.From
        End If

        Dim myMailMessage As New MailMessage(msgFrom, msgTo, msgSubj, msgBody)
        Dim SMTPServer As New SmtpClient(host)
        With SMTPServer
            .Port = port
            .UseDefaultCredentials = False
            .Credentials = New System.Net.NetworkCredential(username, password)
            .EnableSsl = True
        End With

        Try
            SMTPServer.Send(myMailMessage)
        Catch ex As SmtpException
            lblErr.text = ex.Message
        End Try


nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak problém vyřešen, stačilo dát defaultCredentials="false" a už to funguje. Ale netuším, proč tomu tak je.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ohraničujte bloky kódu pomocí tlačítka VB Code, i když nejde o kód ve Visual Basicu, ale třeba o XML.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je nesmysl, nastavení se dává do web.configu, abyste právě tohle nemusel dělat v aplikaci.

Pokud vlastnosti nenastavíte, použijí se právě nastavení z konfigurace.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback