2012-07-28 17 views
12

क्या सी # में एएसपीनेट प्रोजेक्ट का उपयोग करके मेरे कंप्यूटर (लोकलहोस्ट) से ईमेल भेजना संभव है? अंत में मैं अपनी परियोजना को वेबसर्वर में अपलोड करने जा रहा हूं लेकिन अपलोड करने से पहले मैं इसका परीक्षण करना चाहता हूं।ईमेल भेजें asp.net C#

मुझे तैयार स्रोत कोड मिल गए हैं और उन्हें स्थानीयहोस्ट में चलाने की कोशिश की गई है, लेकिन उनमें से कोई भी सफलतापूर्वक काम नहीं करता है। उदाहरण के लिए इस कोड:

तो कैसे का उपयोग कर asp.net सी # ईमेल भेजने के लिए? क्या मुझे कुछ सर्वर कॉन्फ़िगरेशन सेट अप करना चाहिए?

+0

आप जीमेल, हॉटमेल इत्यादि का उपयोग करके ईमेल भेज सकते हैं। –

+0

हमें अपना कोड दिखाएं। –

+0

मैं इस एक का उपयोग करता हूं http://smtp4dev.codeplex.com/ –

उत्तर

11

Asp.Net से ईमेल भेजा जा रहा है:

MailMessage objMail = new MailMessage("Sending From", "Sending To","Email Subject", "Email Body"); 
    NetworkCredential objNC = new NetworkCredential("Sender Email","Sender Password"); 
    SmtpClient objsmtp = new SmtpClient("smtp.live.com", 587); // for hotmail 
    objsmtp.EnableSsl = true; 
    objsmtp.Credentials = objNC; 
    objsmtp.Send(objMail); 
+0

धन्यवाद, यह काम करता है! लेकिन अगर मैं जीमेल या हॉटमेल का उपयोग नहीं करना चाहता हूं तो क्या करना है। मैं कुछ कंपनी की सेवा का उपयोग करना चाहता हूं, उदाहरण के लिए www.mycompany.com। क्या मुझे किसी सर्वर कॉन्फ़िगरेशन की आवश्यकता है? अगर मैं smtp मेजबान और बंदरगाह जानता हूँ तो यह पर्याप्त है? – Nurlan

+2

@NurlanKenzhebekov मैं कभी भी किसी भी सेवा का उपयोग नहीं करता हूं। एक ईमेल भेजना एक आसान प्रक्रिया है। यदि आप किसी भी सेवा का उपयोग करते हैं तो कंपनी ईमेल डोमेन प्रदान करती है, मुझे लगता है कि आपको केवल ईमेल भेजने के लिए smtp का उपयोग करना होगा, ऐसी कोई सर्वर कॉन्फ़िगरेशन आवश्यक नहीं है। –

7

यदि आप एक जीमेल खाते को आप Google SMTP का उपयोग एक ईमेल

smtpClient.UseDefaultCredentials = false; 
smtpClient.Host = "smtp.gmail.com"; 
smtpClient.Port = 587; 
smtpClient.Credentials = new NetworkCredential(username,passwordd); 
smtpClient.EnableSsl = true; 
smtpClient.Send(mailMessage); 
+0

धन्यवाद, यह काम करता है! लेकिन अगर मैं जीमेल या हॉटमेल का उपयोग नहीं करना चाहता हूं तो क्या करना है। मैं कुछ कंपनी की सेवा का उपयोग करना चाहता हूं, उदाहरण के लिए www.mycompany.com। क्या मुझे किसी सर्वर कॉन्फ़िगरेशन की आवश्यकता है? अगर मैं smtp मेजबान और बंदरगाह जानता हूँ तो यह पर्याप्त है? – Nurlan

2

भेजने के लिए कर सकते हैं आप सी # वर्ग System.Net.Mail नाम स्थान में पाया पुस्तकालयों के माध्यम से ASP.NET से ईमेल भेज सकते हैं। SmtpClient कक्षा पर एक नज़र डालें जो ईमेल भेजते समय मुख्य वर्ग शामिल है।

आप कोड उदाहरण in Scott Gu's Blog या MSDN page of SmtpClient पर पा सकते हैं।

इसके अतिरिक्त आपको एक एसएमटीपी सर्वर चलाना होगा। मैं SMTP4Dev मेल सर्वर का उपयोग करने की सिफारिश कर सकता हूं जो विकास को लक्षित करता है और किसी भी सेटअप की आवश्यकता नहीं है।

+0

धन्यवाद, यह काम करता है! लेकिन अगर मैं जीमेल या हॉटमेल का उपयोग नहीं करना चाहता हूं तो क्या करना है। मैं कुछ कंपनी की सेवा का उपयोग करना चाहता हूं, उदाहरण के लिए www.mycompany.com। क्या मुझे किसी सर्वर कॉन्फ़िगरेशन की आवश्यकता है? अगर मैं smtp मेजबान और बंदरगाह जानता हूँ तो यह पर्याप्त है? – Nurlan

5

ऊपर आपका कोड ठीक काम करना चाहिए, लेकिन आप अपने web.config के लिए निम्न जोड़ने के लिए (किसी भी कोड के आधार पर एसएमटीपी विन्यास के लिए एक विकल्प के रूप में) की जरूरत है:

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="Network"> 
     <network host="your.smtpserver.com" port="25" userName="smtpusername" password="smtppassword" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 

आप (मैं अपने खुद के पॉप 3/एसएमटीपी ईमेल विवरण का उपयोग करें) एक दूरस्थ एसएमटीपी सर्वर के लिए पहुँच नहीं है, तो आप अपने स्थानीय आईआईएस उदाहरण में एक एसएमटीपी सर्वर स्थापित कर सकते हैं, लेकिन आप करने के लिए चला सकते हैं रिलेइंग के साथ मुद्दे (क्योंकि अधिकांश आईएसपी उपभोक्ता आईपी पते काले सूचीबद्ध हैं)।

एक अच्छा विकल्प है, तो आप एक एसएमटीपी सर्वर के लिए पहुँच नहीं है, तो ऊपर के बजाय निम्न सेटिंग का उपयोग करने के लिए है:

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="SpecifiedPickupDirectory"> 
      <specifiedPickupDirectory pickupDirectoryLocation="C:\mail"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

इस ईमेल की एक हार्ड डिस्क प्रतिलिपि बना देगा जो बहुत आसान है। आपको ऊपर निर्दिष्ट निर्देशिका बनाने की आवश्यकता होगी, अन्यथा आपको ईमेल भेजने का प्रयास करते समय एक त्रुटि प्राप्त होगी।

आप इन विवरणों को यहां अन्य उत्तरों के अनुसार कोड में कॉन्फ़िगर कर सकते हैं (आपके द्वारा बनाए गए SmtpClient ऑब्जेक्ट पर गुणों को कॉन्फ़िगर करके), लेकिन जब तक आपको डेटा स्रोत से जानकारी प्राप्त नहीं हो जाती है, या जानकारी गतिशील होती है, तो यह है अनावश्यक कोडिंग, जब .Net पहले से ही यह आपके लिए करता है।

1
Create class name SMTP.cs then 

using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Net.Mail; 
using System.Net.Mime; 
using System.Net; 



/// <summary> 
/// Summary description for SMTP 
/// </summary> 
public class SMTP 
{ 
    private SmtpClient smtp; 

    private static string _smtpIp; 
    public static string smtpIp 
    { 
     get 
     { 
      if (string.IsNullOrEmpty(_smtpIp)) 
       _smtpIp = System.Configuration.ConfigurationManager.AppSettings["smtpIp"]; 

      return _smtpIp; 

     } 
    } 


    public SMTP() 
    { 
     smtp = new SmtpClient(smtpIp); 
    } 

    public string Send(string From, string Alias, string To, string Subject, string Body, string Image) 
    { 
     try 
     { 
      MailMessage m = new MailMessage("\"" + Alias + "\" <" + From + ">", To); 
      m.Subject = Subject; 
      m.Priority = MailPriority.Normal; 

      AlternateView av1 = AlternateView.CreateAlternateViewFromString(Body, System.Text.Encoding.UTF8, MediaTypeNames.Text.Html); 

      if (!string.IsNullOrEmpty(Image)) 
      { 
       string path = HttpContext.Current.Server.MapPath(Image); 
       LinkedResource logo = new LinkedResource(path, MediaTypeNames.Image.Gif); 
       logo.ContentId = "Logo"; 
       av1.LinkedResources.Add(logo); 
      } 

      m.AlternateViews.Add(av1); 
      m.IsBodyHtml = true; 

      smtp.Send(m); 
     } 
     catch (Exception e) 
     { 
      return e.Message; 
     } 

     return "sucsess"; 
    } 
} 

then 

on aspx page 

protected void lblSubmit_Click(object sender, EventArgs e) 
    { 
     //HttpContext.Current.Response.ContentType = "text/plain"; 
     //Guid guid = Guid.NewGuid(); 
     string EmailMessage = "<html>" + 
             "<head>" + 
              "<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">" + 
             "</head>" + 
             "<body style=\"text-align:left;direction:ltr;font-family:Arial;\" >" + 
             "<style>a{color:#0375b7;} a:hover, a:active {color: #FF7B0C;}</style>" + 
               "<img src=\"" width=\"190px\" height= \"103px\"/><br/><br/>" + 
               "<p>Name: " + nameID.Value + ",<br/><br/>" + 
               "<p>Email: " + EmailID.Value + ",<br/><br/>" + 
                "<p>Comments: " + commentsID.Text + "<br/><br/>" + 
              // "Welcome to the Test local updates service!<br/>Before we can begin sending you updates, we need you to verify your address by clicking on the link below.<br/>" + 
               //"<a href=\""></a><br/><br/>" + 

               //"We look forward to keeping you informed of the latest and greatest events happening in your area.<br/>" + 
               //"If you have any questions, bug reports, ideas, or just want to talk, please contact us at <br/><br/>" + 
               //"Enjoy! <br/>" + commentsID.Text + "<br/>" + 

               //"Test<br/><a href=\"">www.Test.com</a></p>" + 
             "</body>" + 
            "</html>"; 

     lblThank.Text = "Thank you for contact us."; 
     // string Body = commentsID.Text; 
     SMTP smtp = new SMTP(); 
     string FromEmail = System.Configuration.ConfigurationManager.AppSettings["FromEmail"]; 
     string mailReturn = smtp.Send(EmailID.Value, "", FromEmail, "Contact Us Email", EmailMessage, string.Empty); 
     //HttpContext.Current.Response.Write("true"); 
     nameID.Value = ""; 
     EmailID.Value = ""; 
     commentsID.Text = ""; 
    } 
0

एएसपी का उपयोग करके अनुलग्नक के साथ ईमेल भेजें।शुद्ध सी #

public void Send(string from, string to, string Message, string subject, string host, int port, string password) 
    { 
     MailMessage email = new MailMessage(); 
     email.From = new MailAddress(from); 
     email.Subject = subject; 
     email.Body = Message; 
     SmtpClient smtp = new SmtpClient(host, port); 
     smtp.UseDefaultCredentials = false; 
     NetworkCredential nc = new NetworkCredential(txtFrom.Text.Trim(), password); 
     smtp.Credentials = nc; 
     smtp.EnableSsl = true; 
     email.IsBodyHtml = true; 

     email.To.Add(to); 

     string fileName = ""; 
     if (FileUpload1.PostedFile != null) 
     { 
      HttpPostedFile attchment = FileUpload1.PostedFile; 
      int FileLength = attchment.ContentLength; 
      if (FileLength > 0) 
      { 
       fileName = Path.GetFileName(FileUpload1.PostedFile.FileName); 
       FileUpload1.PostedFile.SaveAs(Path.Combine(Server.MapPath("~/EmailAttachment"), fileName)); 
       Attachment attachment = new Attachment(Path.Combine(Server.MapPath("~/EmailAttachment"), fileName)); 
       email.Attachments.Add(attachment); 
      }    
     } 
     smtp.Send(email); 

    } 

(वीडियो के साथ) कदम से पूरा ट्यूटोरियल कदम के लिए जाएँ http://dotnetawesome.blogspot.in/2013/09/send-email-with-attachment-using-cnet.html

0

नीचे आप के लिए समाधान है कि आप जीमेल या हॉटमेल का उपयोग नहीं करना चाहते हैं:

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

smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "myIDPassword"); 
smtpClient.UseDefaultCredentials = true; 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
smtpClient.EnableSsl = true; 
MailMessage mail = new MailMessage(); 


//Setting From , To and CC 
mail.From = new MailAddress("[email protected]", "MyWeb Site"); 
mail.To.Add(new MailAddress("[email protected]")); 
mail.CC.Add(new MailAddress("[email protected]")); 


smtpClient.Send(mail); 

उम्मीद है कि यह मदद करें :)

0

सर्वर.मप्पाथ मौजूद नहीं है। कोई सर्वर ऑब्जेक्ट नहीं है।

संबंधित मुद्दे