Jestem bardzo nowy w obszarze ASP.NET C #. Planuję wysłać pocztę przez ASP.NET C # i to jest adres SMTP od mojego ISP :
smtp-proxy.tm.net.my
Poniżej znajduje się to, co próbowałem zrobić, ale nie udało mi się.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="SendMail" %>
<html>
<head id="Head1" runat="server"><title>Email Test Page</title></head>
<body>
<form id="form1" runat="server">
Message to: <asp:TextBox ID="txtTo" runat="server" /><br>
Message from: <asp:TextBox ID="txtFrom" runat="server" /><br>
Subject: <asp:TextBox ID="txtSubject" runat="server" /><br>
Message Body:<br>
<asp:TextBox ID="txtBody" runat="server" Height="171px" TextMode="MultiLine" Width="270px" /><br>
<asp:Button ID="Btn_SendMail" runat="server" onclick="Btn_SendMail_Click" Text="Send Email" /><br>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</form>
</body>
</html>
A poniżej jest mój kod :
using System;
using System.Web.UI.WebControls;
using System.Net.Mail;
public partial class SendMail : System.Web.UI.Page
{
protected void Btn_SendMail_Click(object sender, EventArgs e)
{
MailMessage mailObj = new MailMessage(
txtFrom.Text, txtTo.Text, txtSubject.Text, txtBody.Text);
SmtpClient SMTPServer = new SmtpClient("127.0.0.1");
try
{
SMTPServer.Send(mailObj);
}
catch (Exception ex)
{
Label1.Text = ex.ToString();
}
}
}
PS: Przykro mi, że nie mogłem zrozumieć koncepcji SMTP odbiorcy / nadawcy, dlatego próbuję zrozumieć całą koncepcję od tego miejsca.
Odpowiedzi:
Po prostu przejdź przez poniższy kod.
SmtpClient smtpClient = new SmtpClient("mail.MyWebsiteDomainName.com", 25); smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "myIDPassword"); // smtpClient.UseDefaultCredentials = true; // uncomment if you don't want to use the network credentials smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.EnableSsl = true; MailMessage mail = new MailMessage(); //Setting From , To and CC mail.From = new MailAddress("info@MyWebsiteDomainName", "MyWeb Site"); mail.To.Add(new MailAddress("info@MyWebsiteDomainName")); mail.CC.Add(new MailAddress("[email protected]")); smtpClient.Send(mail);
źródło
MailMessage
iSmtpClient
implementująIDisposable
i powinny być używane wusing
oświadczeniu (lub w inny sposób usuwane)Zamiast tego spróbuj użyć tego kodu. Uwaga: w polu „Adres nadawcy” podaj poprawny identyfikator e-mail i hasło.
protected void btn_send_Click(object sender, EventArgs e) { System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); mail.To.Add("to gmail address"); mail.From = new MailAddress("from gmail address", "Email head", System.Text.Encoding.UTF8); mail.Subject = "This mail is send from asp.net application"; mail.SubjectEncoding = System.Text.Encoding.UTF8; mail.Body = "This is Email Body Text"; mail.BodyEncoding = System.Text.Encoding.UTF8; mail.IsBodyHtml = true; mail.Priority = MailPriority.High; SmtpClient client = new SmtpClient(); client.Credentials = new System.Net.NetworkCredential("from gmail address", "your gmail account password"); client.Port = 587; client.Host = "smtp.gmail.com"; client.EnableSsl = true; try { client.Send(mail); Page.RegisterStartupScript("UserMsg", "<script>alert('Successfully Send...');if(alert){ window.location='SendMail.aspx';}</script>"); } catch (Exception ex) { Exception ex2 = ex; string errorMessage = string.Empty; while (ex2 != null) { errorMessage += ex2.ToString(); ex2 = ex2.InnerException; } Page.RegisterStartupScript("UserMsg", "<script>alert('Sending Failed...');if(alert){ window.location='SendMail.aspx';}</script>"); } }
źródło
Możesz spróbować tego za pomocą hotmaila w ten sposób: -
MailMessage o = new MailMessage("From", "To","Subject", "Body"); NetworkCredential netCred= new NetworkCredential("Sender Email","Sender Password"); SmtpClient smtpobj= new SmtpClient("smtp.live.com", 587); smtpobj.EnableSsl = true; smtpobj.Credentials = netCred; smtpobj.Send(o);
źródło
Spróbuj wykonać następujące czynności:
try { var fromEmailAddress = ConfigurationManager.AppSettings["FromEmailAddress"].ToString(); var fromEmailDisplayName = ConfigurationManager.AppSettings["FromEmailDisplayName"].ToString(); var fromEmailPassword = ConfigurationManager.AppSettings["FromEmailPassword"].ToString(); var smtpHost = ConfigurationManager.AppSettings["SMTPHost"].ToString(); var smtpPort = ConfigurationManager.AppSettings["SMTPPort"].ToString(); string body = "Your registration has been done successfully. Thank you."; MailMessage message = new MailMessage(new MailAddress(fromEmailAddress, fromEmailDisplayName), new MailAddress(ud.LoginId, ud.FullName)); message.Subject = "Thank You For Your Registration"; message.IsBodyHtml = true; message.Body = body; var client = new SmtpClient(); client.Credentials = new NetworkCredential(fromEmailAddress, fromEmailPassword); client.Host = smtpHost; client.EnableSsl = true; client.Port = !string.IsNullOrEmpty(smtpPort) ? Convert.ToInt32(smtpPort) : 0; client.Send(message); } catch (Exception ex) { throw (new Exception("Mail send failed to loginId " + ud.LoginId + ", though registration done.")); }
A następnie w swoim web.config dodaj następujące elementy pomiędzy
<!--Email Config--> <add key="FromEmailAddress" value="sender emailaddress"/> <add key="FromEmailDisplayName" value="Display Name"/> <add key="FromEmailPassword" value="sender Password"/> <add key="SMTPHost" value="smtp-proxy.tm.net.my"/> <add key="SMTPPort" value="smptp Port"/>
źródło
Możesz wypróbować MailKit MailKit to wieloplatformowa biblioteka klienta poczty .NET Open Source, oparta na MimeKit i zoptymalizowana pod kątem urządzeń mobilnych. Możesz łatwo używać w swojej aplikacji.Możesz pobrać stąd .
MimeMessage mailMessage = new MimeMessage(); mailMessage.From.Add(new MailboxAddress(fromName, from@address.com)); mailMessage.Sender = new MailboxAddress(senderName, [email protected]); mailMessage.To.Add(new MailboxAddress(emailid, emailid)); mailMessage.Subject = subject; mailMessage.ReplyTo.Add(new MailboxAddress(replyToAddress)); mailMessage.Subject = subject; var builder = new BodyBuilder(); builder.TextBody = "Hello There"; try { using (var smtpClient = new SmtpClient()) { smtpClient.Connect("HostName", "Port", MailKit.Security.SecureSocketOptions.None); smtpClient.Authenticate("[email protected]", "password"); smtpClient.Send(mailMessage); Console.WriteLine("Success"); } } catch (SmtpCommandException ex) { Console.WriteLine(ex.ToString()); } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
źródło
Sprawdź to ... to działa
http://www.aspnettutorials.com/tutorials/email/email-aspnet2-csharp/
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Net.Mail; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnSubmit_Click(object sender, EventArgs e) { try { MailMessage message = new MailMessage(txtFrom.Text, txtTo.Text, txtSubject.Text, txtBody.Text); SmtpClient emailClient = new SmtpClient(txtSMTPServer.Text); emailClient.Send(message); litStatus.Text = "Message Sent"; } catch (Exception ex) { litStatus.Text=ex.ToString(); } } }
źródło
Jeśli chcesz generować treść wiadomości e-mail w brzytwach , możesz użyć Mailzory . Możesz również pobrać pakiet nuget stąd .
// template path var viewPath = Path.Combine("Views/Emails", "hello.cshtml"); // read the content of template and pass it to the Email constructor var template = File.ReadAllText(viewPath); var email = new Email(template); // set ViewBag properties email.ViewBag.Name = "Johnny"; email.ViewBag.Content = "Mailzory Is Funny"; // send email var task = email.SendAsync("[email protected]", "subject"); task.Wait()
źródło
Według tego :
Źródła: https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netframework-4.8
Do
MailKit
wysyłania e-maili lepiej jest używać :var message = new MimeMessage (); message.From.Add (new MailboxAddress ("Joey Tribbiani", "[email protected]")); message.To.Add (new MailboxAddress ("Mrs. Chanandler Bong", "[email protected]")); message.Subject = "How you doin'?"; message.Body = new TextPart ("plain") { Text = @"Hey Chandler, I just wanted to let you know that Monica and I were going to go play some paintball, you in? -- Joey" }; using (var client = new SmtpClient ()) { // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS) client.ServerCertificateValidationCallback = (s,c,h,e) => true; client.Connect ("smtp.friends.com", 587, false); // Note: only needed if the SMTP server requires authentication client.Authenticate ("joey", "password"); client.Send (message); client.Disconnect (true); }
źródło
MailMessage mm = new MailMessage(txtEmail.Text, txtTo.Text); mm.Subject = txtSubject.Text; mm.Body = txtBody.Text; if (fuAttachment.HasFile)//file upload select or not { string FileName = Path.GetFileName(fuAttachment.PostedFile.FileName); mm.Attachments.Add(new Attachment(fuAttachment.PostedFile.InputStream, FileName)); } mm.IsBodyHtml = false; SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.EnableSsl = true; NetworkCredential NetworkCred = new NetworkCredential(txtEmail.Text, txtPassword.Text); smtp.UseDefaultCredentials = true; smtp.Credentials = NetworkCred; smtp.Port = 587; smtp.Send(mm); Response.write("Send Mail");
Obejrzyj wideo: https://www.youtube.com/watch?v=bUUNv-19QAI
źródło
To najłatwiejszy do przetestowania skrypt.
<%@ Import Namespace="System.Net" %> <%@ Import Namespace="System.Net.Mail" %> <script language="C#" runat="server"> protected void Page_Load(object sender, EventArgs e) { //create the mail message MailMessage mail = new MailMessage(); //set the addresses mail.From = new MailAddress("From email account"); mail.To.Add("To email account"); //set the content mail.Subject = "This is a test email from C# script"; mail.Body = "This is a test email from C# script"; //send the message SmtpClient smtp = new SmtpClient("mail.domainname.com"); NetworkCredential Credentials = new NetworkCredential("to email account", "Password"); smtp.Credentials = Credentials; smtp.Send(mail); lblMessage.Text = "Mail Sent"; } </script> <html> <body> <form runat="server"> <asp:Label id="lblMessage" runat="server"></asp:Label> </form> </body>
źródło