ASP.NET C # में ईमेल कैसे भेजें


91

मैं ASP.NET C # क्षेत्र में बहुत नया हूं । मैं ASP.NET C # के माध्यम से एक मेल भेजने की योजना बना रहा हूं और यह मेरे ISP का SMTP पता है :

smtp-proxy.tm.net.my

नीचे मैंने क्या करने की कोशिश की, लेकिन असफल रहा।

<%@ 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>

और नीचे मेरा कोड-पीछे है :

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();
        }
    }
}

पुनश्च: मुझे खेद है कि मैं रिसीवर / प्रेषक SMTP अवधारणा को नहीं समझ सका, और इसलिए मैं यहाँ से पूरी अवधारणा को समझने की कोशिश कर रहा हूँ।


जब आप बटन पर क्लिक करते हैं तो क्या यह कोड के पीछे पहुँच जाता है?
कॉनराड लॉट्ज़

क्या आपने लोकलहोस्ट पर IIS में smtp स्थापित किया है? असफलता क्या है? क्या आपका ISP के साथ मेल खाता है?
मर्टिग

जवाबों:


115

बस नीचे दिए गए कोड के माध्यम से जाना।

SmtpClient smtpClient = new SmtpClient("mail.MyWebsiteDomainName.com", 25);

smtpClient.Credentials = new System.Net.NetworkCredential("info@MyWebsiteDomainName.com", "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("MyEmailID@gmail.com"));

smtpClient.Send(mail);

थमोथरन का स्थान है। सादा पाठ या HTML शरीर भेजना। त्वरित और गंदे सादे ईमेल के लिए। संदेश के मुख्य भाग के भीतर HTML टैग एम्बेड करने का एक अच्छा उदाहरण है। इनलाइन HTML कोड । बड़े संदेश बनाने के लिए StringBuilder बहुत उपयोगी है। इसके अलावा
ब्रायन स्प्रिंगबॉर्न

13
मुझे यह मददगार लगा। हालाँकि UseDefaultCredentials को सही तरीके से सेट करने का मतलब यह है कि दिए गए क्रेडेंशियल को दस्तावेज़ के अनुसार नहीं भेजा जाएगा। यह पता लगाने के लिए मुश्किल हिस्सा है।
गैर गॉडफ्रे

11
ध्यान दें कि दोनों MailMessageको SmtpClientलागू करने IDisposableऔर एक usingबयान के भीतर इस्तेमाल किया जाना चाहिए (या अन्यथा निपटाया)
taiji123

24

इसके बजाय इस कोड का उपयोग करने का प्रयास करें। नोट: "पते से" में अपना सही ईमेल आईडी और पासवर्ड दें।

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>");
    }
}

इसलिए मेरे पास मेरे ASP.net पृष्ठ में ड्रॉपडाउनलिस्ट / टेक्स्टबॉक्स के साथ एक फॉर्म सेट है। क्या यह उसी तरह काम करेगा? धन्यवाद।
SearchForKnowledge

यह कोड स्थानीय सर्वर बॉट पर काम कर रहा है, जो कि goddady सर्वर की मेजबानी से नहीं है .. क्यों?
सैम एलेक्स

10

आप हॉटमेल का उपयोग करके इस तरह की कोशिश कर सकते हैं: -

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);

9

निम्नलिखित का प्रयास करें:

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."));
}

और फिर आप में web.config के बीच में निम्नलिखित जोड़ें

<!--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"/>

3

आप कोशिश कर सकते हैं MailKit MailKit एक ओपन सोर्स क्रॉस-प्लेटफ़ॉर्म .NET मेल-क्लाइंट लाइब्रेरी है जो MimeKit पर आधारित है और मोबाइल उपकरणों के लिए अनुकूलित है। आप अपने एप्लिकेशन में आसानी से उपयोग कर सकते हैं । आप यहां से डाउनलोड कर सकते हैं

                MimeMessage mailMessage = new MimeMessage();
                mailMessage.From.Add(new MailboxAddress(fromName, from@address.com));
                mailMessage.Sender = new MailboxAddress(senderName, sender@address.com);
                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("user@name.com", "password");

                        smtpClient.Send(mailMessage);
                        Console.WriteLine("Success");
                    }
                }
                catch (SmtpCommandException ex)
                {
                    Console.WriteLine(ex.ToString());              
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());                
                }              

2

इसे देखें .... यह काम करता है

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();
        }
    }
}

उपरोक्त लिंक काम नहीं करता है, यहां आप एस्प नेट वेब-फॉर्म में ईमेल भेजने के लिए चरण-दर-चरण गाइड की जांच कर सकते हैं: qawithexperts.com/article/asp-net/…
user3559462

0

यदि आप रेजर में अपनी ईमेल बॉडी बनाना चाहते हैं, तो आप Mailzory का उपयोग कर सकते हैं । इसके अलावा, आप यहाँ से nuget पैकेज डाउनलोड कर सकते हैं

// 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("mailzory@outlook.com", "subject");
task.Wait()

0

इसके अनुसार :

SmtpClient और उसके प्रकार के नेटवर्क खराब तरीके से डिज़ाइन किए गए हैं, हम आपको इसके बजाय https://github.com/jstedfast/MailKit और https://github.com/jstedfast/MimeKit का दृढ़ता से उपयोग करने की सलाह देते हैं ।

संदर्भ: https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netframework-4.8

MailKitईमेल भेजने के लिए उपयोग करना बेहतर है :

var message = new MimeMessage ();
            message.From.Add (new MailboxAddress ("Joey Tribbiani", "joey@friends.com"));
            message.To.Add (new MailboxAddress ("Mrs. Chanandler Bong", "chandler@friends.com"));
            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);
            }

-1
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");

देखें वीडियो: https://www.youtube.com/watch?v=bUUNv-19QAI


-1

यह परीक्षण करने के लिए सबसे आसान स्क्रिप्ट है।

<%@ 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>

1
आप इसे देखने के लिए क्यों चुनना चाहेंगे और नियंत्रक को इसे हैंडल नहीं करने देंगे?
व्हाट्सएप ग्रुप

सवाल सिर्फ ASP.NET C # के माध्यम से ईमेल भेजने के बारे में पूछा गया था। स्क्रिप्ट में नियंत्रक सेट करने का उल्लेख नहीं किया गया था।
हिरेन परगी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.