Diskuze: odeslání dotazu na mail
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Michal Štěpánek:1.4.2014 11:33
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("[email protected]", "Požadavky na WEB")
mailMessage.To.Add(New System.Net.Mail.MailAddress("[email protected]"))
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>
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
jakub.maslan:1.4.2014 11:52
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@seznam.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
Michal Štěpánek:1.4.2014 13:31
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>
Michal Štěpánek:1.4.2014 13:45
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...
Libor Šimo (libcosenior):1.4.2014 14:41
Tento
http://www.itnetwork.cz/…ovy-formular
a nasledujúci diel.
Michal Štěpánek:1.4.2014 15:34
ale on to nemá v PHP, ale v ASP.NET (VB.NET)
jakub.maslan:1.4.2014 18:30
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 ="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="RemoteOnly" defaultRedirect="chyba.aspx"/>
</system.web>
<system.net>
<mailSettings>
<smtp>
<network host="smtp.seznam.cz" userName="jakub.maslan"
password="mojeheslo"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
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 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", "mojeheslo")
smtpClient.Send(mailMessage)
End Sub
End Class
Michal Žůrek - misaz:1.4.2014 19:12
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).
jakub.maslan:2.4.2014 6:32
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("[email protected]"))
mailMessage.ReplyToList.Add(New System.Net.Mail.MailAddress("[email protected]"))
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("[email protected]", "hojeheslo")
smtpClient.Send(mailMessage)
End Sub
End Class
a ukazuje to chybu v smtpClient.Send(mailMessage).. prosím poraďte..děkuji moc
Michal Štěpánek:2.4.2014 9:23
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á!!!
jakub.maslan:2.4.2014 9:29
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("[email protected]")
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("[email protected]", "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=" [email protected]"/>
</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="[email protected]">
<network host="smtp.gmail.com"
port="587"
userName="[email protected]"
password="moje heslo"
enableSsl="true"
/>
</smtp>
</mailSettings>
</system.net>
</configuration>
ted mi to pro změnu háže chybu v <network host="smtp.gmail.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ě
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
jakub.maslan:2.4.2014 9:58
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("[email protected]")
mail.Subject = txtSubject.Text
mail.Body = txtBody.Text
SMTP.Port = "587"
SMTP.EnableSsl = True
SMTP.Credentials = New System.Net.NetworkCredential("[email protected]", "heslo")
SMTP.Send(mail)
Catch ex As Exception
End Try
End Sub
End Class
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
Michal Štěpánek:2.4.2014 13:02
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...
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)?
Michal Štěpánek:2.4.2014 14:59
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))
jakub.maslan:3.4.2014 6:36
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.ReplyToList.Add(New
System.Net.Mail.MailAddress("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
Michal Štěpánek:3.4.2014 7:38
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ě...
Zobrazeno 23 zpráv z 23.