Diskuze: odeslání dotazu na mail

C# .NET .NET (C# a Visual Basic) odeslání dotazu na mail American English version English version

Avatar
jakub.maslan
Člen
Avatar
jakub.maslan:

chtěl bych vytvořit pro své www stránky,že když má někdo nějaký dotaz,tak vyplní jeho jméno,mail,dotaz a když stiskne tlačítko,tak se to odešle na můj mail.není někde na netu návod jak na to?

 
Odpovědět 1.4.2014 11:25
Avatar
Odpovídá na jakub.maslan
Michal Štěpánek:

máš to v ASP.NET?
Pak se to dá třeba takhle (pro VB.NET)

Dim mailMessage As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage()
        mailMessage.From = New System.Net.Mail.MailAddress("lazne@vejprtaci.cz", "Požadavky na WEB")
        mailMessage.To.Add(New System.Net.Mail.MailAddress("mail@mail.cz"))
        mailMessage.ReplyToList.Add(New System.Net.Mail.MailAddress("komu se má poslat odpověď"))
        mailMessage.Subject = "Předmět"
        mailMessage.IsBodyHtml = True
        mailMessage.Body = "<html>...</html>"

        Dim smtpClient As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient()
        'Odeslání mailu
        smtpClient.Send(mailMessage)

a ve web.config musíš nadefinovat parametry:

<system.net>
                <mailSettings>
                        <smtp>
                                <network host="smtp webhostingu" userName="uživatelské jméno" password="heslo"/>
                        </smtp>
                </mailSettings>
        </system.net>
Editováno 1.4.2014 11:38
Nahoru Odpovědět 1.4.2014 11:33
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Michal Štěpánek:

sorry, v tom řádku s "From" samozřejmě budeš mít adresu odesílatele (podle tvého hostingu)
Pak už jen uděláš akci na tlačítko a je to...
Pro C# to bude asi stejné jenom se syntaxí toho jazyka...

P.S. Samozřejmě musíš mít naimportované ty správné knihovny

Imports System.Net.Mail
Editováno 1.4.2014 11:43
Nahoru Odpovědět 1.4.2014 11:40
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
jakub.maslan
Člen
Avatar
Odpovídá na Michal Štěpánek
jakub.maslan:

a dá se to udělat i když mám freehosting a nejdou vytvořit u toho hostingu email? já to chci aby se to prostě odeslalo na můj mail:kubis@sez­nam.cz(příklad) jinak to všechno co jsi napsal hodím do aspx.vb ale potřeboval bych to tak trošku pro blbce.....prostě když mám vytvořený labely..vedle toho textbox kde člověk napíše:jméno..další kontakt na něj a poslední textbox napíše dotaz..pak zmáčkne tlačítko odeslat a to se pošle na můj mail.děkuji a omlouvám se za blbost..dělám tohle prvně,tak přesně nevím

 
Nahoru Odpovědět 1.4.2014 11:52
Avatar
Odpovídá na jakub.maslan
Michal Štěpánek:

Formulář :

<table>
    <tr>
    <td>E-mail :</td>
    <td align="left">
    <asp:TextBox ID="txtFrom" runat="server" Width="300">@</asp:TextBox>
    <!-- validace vyplnění položky -->
    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="*" ControlToValidate="txtFrom" />
    <!-- validace formátu e-mailové adresy -->
    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
    ControlToValidate="txtFrom" ErrorMessage="Špatný formát adresy"
    ValidationExpression="\w+\@\w+\.\w+" />
    </td>
    </tr>
    <tr>
    <td>Předmět :</td>
    <td align="left">
    <asp:TextBox ID="txtSubject" runat="server" Width="300" />
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*" ControlToValidate="txtSubject"></asp:RequiredFieldValidator>
    </td>
    </tr>
    <tr>
    <td valign="top">Zpráva :</td>
    <td align="left">
    <asp:TextBox ID="txtBody" runat="server" Rows="8" TextMode="MultiLine" Width="500" />
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*" ControlToValidate="txtBody"></asp:RequiredFieldValidator>
    </td>
    </tr>

    <tr><td colspan="2" align="center">
        <asp:Button ID="btnOdeslatMail" runat="server" Text="Odeslat"
            onclick="btnOdeslatMail_Click" />

    </td></tr>
    </table>
Nahoru Odpovědět 1.4.2014 13:31
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na jakub.maslan
Michal Štěpánek:

Kód události na tlačítko dáš to, co jsem psal nahoře, jen vyplníš svoje hodnoty:
To: kubis@seznam.cz
From: txtFrom.Text
Subject: txtSubject.Text
a do Body dáš html kód, který bude obsahovat mimo html značek i txtBody.Text
pokud nechceš dělat html formát mailu, tak bude

mailMessage.IsBodyHtml = False

a Body: txtBody.Text
Autorizaci mailu musíš mít podle tvé schránky, takže smtp.seznam.cz, uživ. jméno a heslo
jinak na
http://www.dotnetportal.cz/…tp-seznam-cz
je popis problémů se seznamem...

Nahoru Odpovědět 1.4.2014 13:45
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Nahoru Odpovědět  -1 1.4.2014 14:41
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Michal Štěpánek:

ale on to nemá v PHP, ale v ASP.NET (VB.NET)

Nahoru Odpovědět 1.4.2014 15:34
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Nahoru Odpovědět 1.4.2014 15:41
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
jakub.maslan
Člen
Avatar
Odpovídá na Michal Štěpánek
jakub.maslan:

můžeš na to prosím mrknout jestli to mám dobře? zatím jsem to zkoušel přes localni..jako ne na serveru,ale u sebe..web fonfig:<?xml version="1.0"?>

<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?…
-->

<configuration>
<appSettings>
<add key ="validationSet­tings: UnobtrusiveVa­lidationMode" value="none"/>
</appSettings>
<connectionStrings>
<clear />
<add name="Connecti­onString" connectionStrin­g="Data Source=.\SQLEX­PRESS;AttachDbFi­lename=|DataDi­rectory|\data­base.mdf;Inte­grated Security=True;User Instance=True;Da­tabase=Databa­se.mdf" providerName="Sys­tem.Data.SqlCli­ent" />
</connectionStrin­gs>

<system.web>

<compilation debug="true" strict="false" explicit="true" targetFramewor­k="4.5" />
<httpRuntime targetFramewor­k="4.5" />
<customErrors mode="RemoteOnly" defaultRedirec­t="chyba.aspx"/>

</system.web>
<system.net>
<mailSettings>
<smtp>
<network host="smtp.sez­nam.cz" userName="jakub­.maslan" password="moje­heslo"/>
</smtp>
</mailSettings>

</system.net>
</configuration>

aspx:
Imports System.Net.Mail
Partial Class kontakt
Inherits System.Web.UI.Page

Protected Sub btnOdeslatMail_Clic­k(sender As Object, e As EventArgs) Handles btnOdeslatMail­.Click
Dim mailMessage As System.Net.Ma­il.MailMessage = New System.Net.Ma­il.MailMessage()
mailMessage.From = New System.Net.Ma­il.MailAddres­s("txtFrom.Tex­t")
mailMessage.To­.Add(New System.Net.Ma­il.MailAddres­s("jakub.maslan@sez­nam.cz"))
mailMessage.Re­plyToList.Add(New System.Net.Ma­il.MailAddres­s("jakub.maslan@sez­nam.cz"))
mailMessage.Subject = txtSubject.Text
mailMessage.Is­BodyHtml = False
mailMessage.Body = txtBody.Text

Dim smtpClient As System.Net.Ma­il.SmtpClient = New System.Net.Ma­il.SmtpClient()
'Odeslání mailu
smtpClient.Cre­dentials = New System.Net.Net­workCredential("ja­kub.maslan@sez­nam.cz", "mojeheslo")
smtpClient.Sen­d(mailMessage)
End Sub
End Class

 
Nahoru Odpovědět 1.4.2014 18:30
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na jakub.maslan
Juraj Mlich:

Existuje tlačítko - zdrojový kód.

Nahoru Odpovědět  +1 1.4.2014 18:46
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
Odpovídá na jakub.maslan
Michal Žůrek (misaz):

Těžko ti tu budeme prorokovat, jestli ti to na serveru pojede nebo ne. Vyzkoušej to. Pro příště použij tlačítko vložit zdrojový kód (viz. obrázek).

Nahoru Odpovědět 1.4.2014 19:12
Nesnáším {}, proto se jim vyhýbám.
Avatar
jakub.maslan
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
jakub.maslan:

omlouvám se..jsem to ve spěchu sem hodil..tak mi to nejede píše to:Authentication failed!..web config mám:

<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <appSettings>
    <add key ="validationSettings: UnobtrusiveValidationMode" value="none"/>
  </appSettings>
  <connectionStrings>
    <clear />
    <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\database.mdf;Integrated Security=True;User Instance=True;Database=Database.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>

      <compilation debug="true" strict="false" explicit="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
     <customErrors mode="Off" defaultRedirect="chyba.aspx"/>

    </system.web>
  <system.net>
   <mailSettings>
      <smtp>
        <network host="smtp.seznam.cz" userName="jakub.maslan" password="mojeheslo"/>
      </smtp>
    </mailSettings>

  </system.net>
</configuration>

a aspx.vb je takhle:

Imports System.Net.Mail
Partial Class kontakt
    Inherits System.Web.UI.Page



    Protected Sub btnOdeslatMail_Click(sender As Object, e As EventArgs) Handles btnOdeslatMail.Click
        Dim mailMessage As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage()
        mailMessage.From = New System.Net.Mail.MailAddress(txtFrom.Text)
        mailMessage.To.Add(New System.Net.Mail.MailAddress("jakub.maslan@seznam.cz"))
        mailMessage.ReplyToList.Add(New System.Net.Mail.MailAddress("jakub.maslan@seznam.cz"))
        mailMessage.Subject = txtSubject.Text
        mailMessage.IsBodyHtml = False
        mailMessage.Body = txtBody.Text

        Dim smtpClient As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient()
        'Odeslání mailu
        smtpClient.Credentials = New System.Net.NetworkCredential("jakub.maslan@seznam.cz", "hojeheslo")
        smtpClient.Send(mailMessage)
    End Sub
End Class

a ukazuje to chybu v smtpClient.Sen­d(mailMessage)­.. prosím poraďte..děkuji moc

 
Nahoru Odpovědět 2.4.2014 6:32
Avatar
Odpovídá na jakub.maslan
Michal Štěpánek:

Někde nahoře jsem psal, že se seznamem jsou určité potíže.
je otázka jestli uživatelské jméno na seznamu je jen jméno, nebo i to za zavináčem.
Zkusil bych si pro tyto účely založit schránku třeba na gůglu, tam to prý šlape dobře a v té schránce si klidně udělej přesměrování na ten tvůj seznam...
P.S.
proč máš udělanou autorizaci ve web.config a další kredence máš u toho odesílání mailu? Stačí ji mít ve web.config, ale musí být správně a musí být platná!!!

Editováno 2.4.2014 9:27
Nahoru Odpovědět 2.4.2014 9:23
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
jakub.maslan
Člen
Avatar
Odpovídá na Michal Štěpánek
jakub.maslan:

od rána do toho čumím a furt nic..zkusil jsem přesměrování na gmail a úplně nový kody z jinych stranek a youtube..vypada to takto: aspx:

Imports System.Net.Mail
Partial Class kontakt
    Inherits System.Web.UI.Page



    Protected Sub btnOdeslatMail_Click(sender As Object, e As EventArgs) Handles btnOdeslatMail.Click
        Dim mail As New MailMessage()
        Try
            mail.From = New MailAddress(txtFrom.Text)
            mail.To.Add("jakub.maslan90@gmail.com")
            mail.Subject = txtSubject.Text
            mail.Body = txtBody.Text
            Dim SMTP As New SmtpClient("smtp.gmail.com")
            SMTP.Port = 587
            SMTP.EnableSsl = True
            SMTP.Credentials = New System.Net.NetworkCredential("jakub.maslan90@gmail.com", "mojeheslo")
            SMTP.Send(mail)
        Catch ex As Exception

        End Try

    End Sub
End Class

web.config:

<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <appSettings>
    <add key ="validationSettings: UnobtrusiveValidationMode" value="none"/>

<add key="EmailID" value=" jakub.maslan90@gmail.com"/>
  </appSettings>
  <connectionStrings>
    <clear />
    <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\database.mdf;Integrated Security=True;User Instance=True;Database=Database.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>

      <compilation debug="true" strict="false" explicit="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
     <customErrors mode="Off" defaultRedirect="chyba.aspx"/>

    </system.web>


  <system.net>
    <mailSettings>
      <smtp from="jakub.maslan90@gmail.com">
        <network  host="smtp.gmail.com"
                   port="587"
             userName="jakub.maslan90@gmail.com"
             password="moje heslo"

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


</configuration>

ted mi to pro změnu háže chybu v <network host="smtp.gma­il.com" a píše něco o povolení Parser Error Message: Insufficient permissions for setting the configuration property 'port'.
každopádně nevím jestli je to povolení na stránkách nebo na gmailu..ale už jsem jim psal at mi řeknou jestli je chyba na mojí nebo jejich straně

 
Nahoru Odpovědět 2.4.2014 9:29
Avatar
jakub.maslan
Člen
Avatar
jakub.maslan:

tak mi nastavili vyšší práva a funguje to,když v web.configu nic nemám..každopádně mi přichází maily ode mě místo od toho aby tam bylo napsáno od koho to je

 
Nahoru Odpovědět 2.4.2014 9:51
Avatar
jakub.maslan
Člen
Avatar
Odpovídá na jakub.maslan
jakub.maslan:

a ještě to příjde 2krát ten mail a potřeboval bych poradit jak v tomhle

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
  ControlToValidate="txtFrom" ErrorMessage="Špatný formát adresy"
  ValidationExpression="\w+\@\w+\.\w+" />

upravit aby tam mohli napsat třeba i jejich mail ve formátu jakub.maslan@seznam.cz no a hlavně teda to aby to docházelo od nějakýho pepy atd a né ode mě tady v tom kodů

Imports System.Net.Mail
Partial Class kontakt
    Inherits System.Web.UI.Page



    Protected Sub btnOdeslatMail_Click(sender As Object, e As EventArgs) Handles btnOdeslatMail.Click
        Dim mail As New MailMessage()
        Dim SMTP As New SmtpClient("smtp.gmail.com")
        Try
            mail.From = New MailAddress(txtFrom.Text)
            mail.To.Add("jakub.maslan90@gmail.com")
            mail.Subject = txtSubject.Text
            mail.Body = txtBody.Text

            SMTP.Port = "587"
            SMTP.EnableSsl = True
            SMTP.Credentials = New System.Net.NetworkCredential("jakub.maslan90@gmail.com", "heslo")
            SMTP.Send(mail)
        Catch ex As Exception

        End Try

    End Sub
End Class
Editováno 2.4.2014 9:58
 
Nahoru Odpovědět 2.4.2014 9:58
Avatar
Michal Štěpánek:

zkus do té validace dát toto:

\w+([-+.']\w+)*@\w+\.\w+

mrkni se na
http://www.webtvorba.com/…spnet_3_cast
a na
http://www.dotnetportal.cz/…vyrazy-v-NET

Nahoru Odpovědět 2.4.2014 12:58
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na jakub.maslan
Michal Štěpánek:

Pokud tu poštu čteš jako přesměrovanou, tak je logické, že přijde "jako" od tebe. Pak si musíš do těla zprávy přidat tu e-mailovou adresu původního odesílatele, abys věděl, komu máš případně odepsat. Když to budeš číst rovnou na tom gmailu, bude to všechno správně, a když budeš mít položku ReplyTo = adresa toho odesílatele, můžeš dát rovnou odpovědět na mail a adresa tam bude...

Nahoru Odpovědět 2.4.2014 13:02
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
jakub.maslan
Člen
Avatar
jakub.maslan:

ok děkuji mnohokrát..akorát kde přesně mám přidat tu mailovou adresu původního odesílatele? jako sem : mail.From = New MailAddress(txtFrom­.Text)?

 
Nahoru Odpovědět 2.4.2014 13:24
Avatar
Odpovídá na jakub.maslan
Michal Štěpánek:

jo a pokud chceš na e-mail pohodlně odpovídat, tak tam ještě dej :

mailMessage.ReplyToList.Add(New System.Net.Mail.MailAddress(txtFrom.Text))
Editováno 2.4.2014 15:00
Nahoru Odpovědět 2.4.2014 14:59
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
jakub.maslan
Člen
Avatar
Odpovídá na Michal Štěpánek
jakub.maslan:

super..mohl bych teda ještě prosím prosím poslední věc(omlouvám se,že tolik otravuju),když chci aby se mi na mailu ukázalo,že je to od SMT(místo původního "já") tak stačí napsat mailMessage.Re­plyToList.Add(New System.Net.Ma­il.MailAddres­s("SMT" + txtFrom.Text))?? nebo je to úplně jinak.Opravdu se omlouvám,ale s tímhle nemám skoro žádné zkušenosti..mockrát děkuji :)

 
Nahoru Odpovědět 3.4.2014 6:36
Avatar
Odpovídá na jakub.maslan
Michal Štěpánek:

ReplyToList zajistí pouze to, že když klikneš na "odpovědět", automaticky se napíše adresa příjemce. Nevím však, jak se to bude chovat v případě, že si tu poštu přepošleš z google na seznam, tzn. ze svého mailu na svůj mail, i když teď jsem si zkusil něco přeposlat na jednu moji automaticky přeposílanou schránku a mail se tváří, jako bych si ho poslal přímo, takže by to asi mělo takhle fungovat...
Pokud chceš mít v odesílateli vidět nějaké jméno místo adresy se zavináčem, musel by sis to jméno nastavit jako další parametr toho From
např.:

mail.From = New MailAddress(txtFrom.Text, txtJmeno.Text)

Já to ale dělám tak, že mi zpráva přijde "jako" ode mě a v textu(Body) té zprávy pak mám adresu toho pisatele a ostatní informace, které si tam potřebuji přidat, jako je datum(čas) odeslání, je tam možnost si přidat i IP adresu apod... a adresu odesílatele si dám jen do ReplyTo, abych mohl odpovědět rovnou a nemusel to vypisovat ručně...

Editováno 3.4.2014 7:42
Nahoru Odpovědět 3.4.2014 7:38
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 23 zpráv z 23.