c# जीमेल के माध्यम से.NET में ईमेल भेजना




email smtp (18)

ईमेल भेजने के लिए मेरे मेजबान पर भरोसा करने के बजाय, मैं अपने जीमेल खाते का उपयोग कर ईमेल संदेश भेजने की सोच रहा था। मेरे शो पर चलने वाले बैंड को ईमेल वैयक्तिकृत ईमेल होते हैं। यह करना संभव है?


एक युक्ति! प्रेषक इनबॉक्स की जांच करें, शायद आपको कम सुरक्षित ऐप्स की अनुमति देनी होगी। देखें: https://www.google.com/settings/security/lesssecureapps


System.Net.Mail का उपयोग करना सुनिश्चित करें, बहिष्कृत System.Web.MailSystem.Web.MailSystem.Web.Mail साथ SSL करना हैकी एक्सटेंशन की कुल गड़बड़ है।

using System.Net;
using System.Net.Mail;

var fromAddress = new MailAddress("[email protected]", "From Name");
var toAddress = new MailAddress("[email protected]", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

इसे इस्तेमाल करे,

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

            mail.From = new MailAddress("[email protected]");
            mail.To.Add("to_address");
            mail.Subject = "Test Mail";
            mail.Body = "This is for testing SMTP mail from GMAIL";

            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
            SmtpServer.EnableSsl = true;

            SmtpServer.Send(mail);
            MessageBox.Show("mail Send");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

इसको आजमाओ

public static bool Send(string receiverEmail, string ReceiverName, string subject, string body)
{
        MailMessage mailMessage = new MailMessage();
        MailAddress mailAddress = new MailAddress("[email protected]", "Sender Name"); // [email protected] = input Sender Email Address 
        mailMessage.From = mailAddress;
        mailAddress = new MailAddress(receiverEmail, ReceiverName);
        mailMessage.To.Add(mailAddress);
        mailMessage.Subject = subject;
        mailMessage.Body = body;
        mailMessage.IsBodyHtml = true;

        SmtpClient mailSender = new SmtpClient("smtp.gmail.com", 587)
        {
            EnableSsl = true,
            UseDefaultCredentials = false,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
            Credentials = new NetworkCredential("[email protected]", "pass")   // [email protected] = input sender email address  
                                                                           //pass = sender email password
        };

        try
        {
            mailSender.Send(mailMessage);
            return true;
        }
        catch (SmtpFailedRecipientException ex)
        { }
        catch (SmtpException ex)
        { }
        finally
        {
            mailSender = null;
            mailMessage.Dispose();
        }
        return false;
}

स्रोत : एएसपी.NET सी # में ईमेल भेजें

नीचे दिए गए उदाहरण में सी # का उपयोग करके मेल में भेजने के लिए नमूना कार्य कोड नीचे दिया गया है, मैं Google के smtp सर्वर का उपयोग कर रहा हूं।

कोड सुंदर आत्म व्याख्यात्मक है, ईमेल और पासवर्ड को अपने ईमेल और पासवर्ड मानों के साथ प्रतिस्थापित करें।

public void SendEmail(string address, string subject, string message)
{
    string email = "[email protected]";
    string password = "put-your-GMAIL-password-here";

    var loginInfo = new NetworkCredential(email, password);
    var msg = new MailMessage();
    var smtpClient = new SmtpClient("smtp.gmail.com", 587);

    msg.From = new MailAddress(email);
    msg.To.Add(new MailAddress(address));
    msg.Subject = subject;
    msg.Body = message;
    msg.IsBodyHtml = true;

    smtpClient.EnableSsl = true;
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = loginInfo;
    smtpClient.Send(msg);
}

मुझे आशा है कि यह कोड ठीक काम करेगा। आप कोशिश कर सकते हैं

// Include this.                
using System.Net.Mail;

string fromAddress = "[email protected]";
string mailPassword = "*****";       // Mail id password from where mail will be sent.
string messageBody = "Write the body of the message here.";


// Create smtp connection.
SmtpClient client = new SmtpClient();
client.Port = 587;//outgoing port for the mail.
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(fromAddress, mailPassword);


// Fill the mail form.
var send_mail = new MailMessage();

send_mail.IsBodyHtml = true;
//address from where mail will be sent.
send_mail.From = new MailAddress("[email protected]");
//address to which mail will be sent.           
send_mail.To.Add(new MailAddress("[email protected]");
//subject of the mail.
send_mail.Subject = "put any subject here";

send_mail.Body = messageBody;
client.Send(send_mail);

मेरा संस्करण यहां दिया गया है: " जीमेल का उपयोग कर सी # में ईमेल भेजें "।

using System;
using System.Net;
using System.Net.Mail;

namespace SendMailViaGmail
{
   class Program
   {
   static void Main(string[] args)
   {

      //Specify senders gmail address
      string SendersAddress = "[email protected]";
      //Specify The Address You want to sent Email To(can be any valid email address)
      string ReceiversAddress = "[email protected]";
      //Specify The password of gmial account u are using to sent mail(pw of [email protected])
      const string SendersPassword = "Password";
      //Write the subject of ur mail
      const string subject = "Testing";
      //Write the contents of your mail
      const string body = "Hi This Is my Mail From Gmail";

      try
      {
        //we will use Smtp client which allows us to send email using SMTP Protocol
        //i have specified the properties of SmtpClient smtp within{}
        //gmails smtp server name is smtp.gmail.com and port number is 587
        SmtpClient smtp = new SmtpClient
        {
           Host = "smtp.gmail.com",
           Port = 587,
           EnableSsl = true,
           DeliveryMethod = SmtpDeliveryMethod.Network,
           Credentials    = new NetworkCredential(SendersAddress, SendersPassword),
           Timeout = 3000
        };

        //MailMessage represents a mail message
        //it is 4 parameters(From,TO,subject,body)

        MailMessage message = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
        /*WE use smtp sever we specified above to send the message(MailMessage message)*/

        smtp.Send(message);
        Console.WriteLine("Message Sent Successfully");
        Console.ReadKey();
     }

     catch (Exception ex)
     {
        Console.WriteLine(ex.Message);
        Console.ReadKey();
     }
    }
   }
 }

using System;
using System.Net;
using System.Net.Mail;

namespace SendMailViaGmail
{
   class Program
   {
   static void Main(string[] args)
   {

      //Specify senders gmail address
      string SendersAddress = "[email protected]";
      //Specify The Address You want to sent Email To(can be any valid email address)
      string ReceiversAddress = "[email protected]";
      //Specify The password of gmial account u are using to sent mail(pw of [email protected])
      const string SendersPassword = "Password";
      //Write the subject of ur mail
      const string subject = "Testing";
      //Write the contents of your mail
      const string body = "Hi This Is my Mail From Gmail";

      try
      {
        //we will use Smtp client which allows us to send email using SMTP Protocol
        //i have specified the properties of SmtpClient smtp within{}
        //gmails smtp server name is smtp.gmail.com and port number is 587
        SmtpClient smtp = new SmtpClient
        {
           Host = "smtp.gmail.com",
           Port = 587,
           EnableSsl = true,
           DeliveryMethod = SmtpDeliveryMethod.Network,
           Credentials = new NetworkCredential(SendersAddress, SendersPassword),
           Timeout = 3000
        };

        //MailMessage represents a mail message
        //it is 4 parameters(From,TO,subject,body)

        MailMessage message = new MailMessage(SendersAddress, ReceiversAddress, subject, body);
        /*WE use smtp sever we specified above to send the message(MailMessage message)*/

        smtp.Send(message);
        Console.WriteLine("Message Sent Successfully");
        Console.ReadKey();
     }
     catch (Exception ex)
     {
        Console.WriteLine(ex.Message);
        Console.ReadKey();
     }
}
}
}

मेल भेजने और web.config से प्रमाण पत्र प्राप्त करने का एक तरीका यहां दिया गया है:

public static string SendEmail(string To, string Subject, string Msg, bool bodyHtml = false, bool test = false, Stream AttachmentStream = null, string AttachmentType = null, string AttachmentFileName = null)
{
    try
    {
        System.Net.Mail.MailMessage newMsg = new System.Net.Mail.MailMessage(System.Configuration.ConfigurationManager.AppSettings["mailCfg"], To, Subject, Msg);
        newMsg.BodyEncoding = System.Text.Encoding.UTF8;
        newMsg.HeadersEncoding = System.Text.Encoding.UTF8;
        newMsg.SubjectEncoding = System.Text.Encoding.UTF8;

        System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
        if (AttachmentStream != null && AttachmentType != null && AttachmentFileName != null)
        {
            System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(AttachmentStream, AttachmentFileName);
            System.Net.Mime.ContentDisposition disposition = attachment.ContentDisposition;
            disposition.FileName = AttachmentFileName;
            disposition.DispositionType = System.Net.Mime.DispositionTypeNames.Attachment;

            newMsg.Attachments.Add(attachment);
        }
        if (test)
        {
            smtpClient.PickupDirectoryLocation = "C:\\TestEmail";
            smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory;
        }
        else
        {
            //smtpClient.EnableSsl = true;
        }

        newMsg.IsBodyHtml = bodyHtml;
        smtpClient.Send(newMsg);
        return SENT_OK;
    }
    catch (Exception ex)
    {

        return "Error: " + ex.Message
             + "<br/><br/>Inner Exception: "
             + ex.InnerException;
    }

}

और web.config में संबंधित खंड:

<appSettings>
    <add key="mailCfg" value="[email protected]"/>
</appSettings>
<system.net>
  <mailSettings>
    <smtp deliveryMethod="Network" from="[email protected]">
      <network defaultCredentials="false" host="mail.exapmple.com" userName="[email protected]" password="your_password" port="25"/>
    </smtp>
  </mailSettings>
</system.net>

अगर आप पृष्ठभूमि ईमेल भेजना चाहते हैं, तो कृपया नीचे करें

 public void SendEmail(string address, string subject, string message)
 {
 Thread threadSendMails;
 threadSendMails = new Thread(delegate()
    {

      //Place your Code here 

     });
  threadSendMails.IsBackground = true;
  threadSendMails.Start();
}

और नामस्थान जोड़ें

using System.Threading;

http://www.systemnetmail.com/ संभवतः एक एकल .NET नेमस्पेस को समर्पित सबसे बेतुका पूर्ण साइट है ... लेकिन इसमें सब कुछ है जो आप कभी भी .NET के माध्यम से मेल भेजने के बारे में जानना चाहते हैं, चाहे वह एएसपी.नेट हो या डेस्कटॉप।

http://www.systemwebmail.com/ पोस्ट में मूल यूआरएल था, लेकिन इसका उपयोग .NET 2.0 और उसके बाद के लिए नहीं किया जाना चाहिए।


मेरे लिए इसे काम करने के लिए, मुझे अपने जीमेल खाते को सक्षम करना था जिससे अन्य ऐप्स के लिए पहुंच प्राप्त हो सके। यह "कम सुरक्षित ऐप्स सक्षम करें" और इस लिंक का उपयोग करने के साथ किया जाता है: https://accounts.google.com/b/0/DisplayUnlockCaptcha


किसी अन्य उत्तर से कॉपी करना, उपर्युक्त विधियां काम करती हैं लेकिन जीमेल हमेशा वास्तविक प्रेषण जीमेल खाते के साथ "से" और "जवाब" ईमेल को प्रतिस्थापित करता है। जाहिर है कि आसपास एक काम है:

http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html

"3. खाता टैब में," अपने स्वामित्व वाले एक और ईमेल पते को "लिंक पर क्लिक करें, फिर इसे सत्यापित करें"

या संभवतः this

अपडेट 3: रीडर डेरेक बेनेट कहते हैं, "समाधान आपके जीमेल खाते में जाना है: अकाउंट्स और" डिफॉल्ट डिफॉल्ट "अपने जीमेल अकाउंट के अलावा एक खाता है। इससे जीमेल मेल से फिर से लिखने का कारण बन जाएगा जो डिफ़ॉल्ट खाते का ईमेल है पता है।"


"सर्वर से" काम करने के अन्य उत्तरों के लिए पहले जीमेल खाते में कम सुरक्षित ऐप्स के लिए एक्सेस चालू करें

ऐसा लगता है कि हाल ही में Google ने इसकी सुरक्षा नीति बदल दी है। शीर्ष रेटेड उत्तर अब तक काम नहीं करता है, जब तक आप यहां वर्णित अपनी खाता सेटिंग्स बदल नहीं लेते: https://support.google.com/accounts/answer/6010255?hl=en-GB

मार्च 2016 तक, Google ने फिर से सेटिंग स्थान बदल दिया!


इस तरह का प्रयोग करें

MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body); 
SmtpClient client = new SmtpClient("smtp.gmail.com");

client.Port = Convert.ToInt32("587");
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("[email protected]","MyPassWord");
client.Send(sendmsg);

इसे न भूलो :

using System.Net;
using System.Net.Mail;

इसे शामिल करें,

using System.Net.Mail;

और तब,

MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body); 
SmtpClient client = new SmtpClient("smtp.gmail.com");

client.Port = Convert.ToInt16("587");
client.Credentials = new System.Net.NetworkCredential("[email protected]","password");
client.EnableSsl = true;

client.Send(sendmsg);

Google कुछ ऐप्स या उपकरणों से साइन इन प्रयासों को अवरुद्ध कर सकता है जो आधुनिक सुरक्षा मानकों का उपयोग नहीं करते हैं। चूंकि इन ऐप्स और उपकरणों को तोड़ना आसान होता है, इसलिए उन्हें अवरुद्ध करने से आपके खाते को सुरक्षित रखने में मदद मिलती है।

उन ऐप्स के कुछ उदाहरण जो नवीनतम सुरक्षा मानकों का समर्थन नहीं करते हैं उनमें शामिल हैं:

  • आईओएस 6 या उससे नीचे के साथ अपने आईफोन या आईपैड पर मेल ऐप
  • 8.1 विंडोज रिलीज से पहले आपके विंडोज फोन पर मेल ऐप
  • माइक्रोसॉफ्ट आउटलुक और मोज़िला थंडरबर्ड जैसे कुछ डेस्कटॉप मेल क्लाइंट

इसलिए, आपको अपने Google खाते में कम सुरक्षित साइन-इन सक्षम करना होगा।

Google खाते में साइन इन करने के बाद, यहां जाएं:

https://myaccount.google.com/lesssecureapps
या
https://www.google.com/settings/security/lesssecureapps

सी # में, आप निम्न कोड का उपयोग कर सकते हैं:

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("[email protected]");
    mail.To.Add("[email protected]");
    mail.Subject = "Hello World";
    mail.Body = "<h1>Hello</h1>";
    mail.IsBodyHtml = true;
    mail.Attachments.Add(new Attachment("C:\\file.zip"));

    using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
    {
        smtp.Credentials = new NetworkCredential("[email protected]", "password");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }
}

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

अगर आप (Google पर) साइन इन हैं तो आप https://www.google.com/settings/security/lesssecureapps लिंक का अनुसरण कर सकते हैं और " कम सुरक्षित ऐप्स तक पहुंच " के लिए " चालू करें" टॉगल कर सकते हैं





gmail