Sou muito novo na área do ASP.NET C #. Estou planejando enviar um e-mail por meio do ASP.NET C # e este é o endereço SMTP do meu ISP :
smtp-proxy.tm.net.my
Abaixo está o que tentei fazer, mas falhei.
<%@ 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>
E abaixo está meu code-behind :
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: Lamento não ter conseguido compreender o conceito de SMTP do receptor / remetente, por isso estou a tentar compreender todo o conceito a partir daqui.
Respostas:
Basta percorrer o código abaixo.
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);
fonte
MailMessage
eSmtpClient
implementamIDisposable
e devem ser usados em umausing
instrução (ou descartados de outra forma)Tente usar este código. Nota: No "endereço de remetente", forneça seu ID de e-mail e senha corretos.
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>"); } }
fonte
Você pode tentar isso usando o hotmail desta forma: -
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);
fonte
Experimente o seguinte:
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.")); }
E então em seu web.config adicione o seguinte entre
<!--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"/>
fonte
Você pode tentar MailKit MailKit é uma biblioteca de cliente de email de plataforma cruzada de código-fonte aberto baseada no MimeKit e otimizada para dispositivos móveis. Você pode usar facilmente em seu aplicativo. Você pode fazer o download aqui .
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()); }
fonte
Veja isso ... funciona
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(); } } }
fonte
Se você deseja gerar seus corpos de email no razor, pode usar o Mailzory . Além disso, você pode baixar o pacote nuget aqui .
// 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()
fonte
De acordo com isso :
Referência: https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netframework-4.8
É melhor usar
MailKit
para enviar e-mails: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); }
fonte
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");
Veja o vídeo: https://www.youtube.com/watch?v=bUUNv-19QAI
fonte
Este é o script mais fácil de testar.
<%@ 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>
fonte