ارسال ایمیل در سی شارپ #C

ارسال ایمیل از طریق ویندوز یا برنامه وب این روزها کاملاً عادی شده است. برخی از نمونه های رایج ایمیل برای ارسال پیام ، خطا ، به روزرسانی ، گزارش های کاربر ، تجزیه و تحلیل یا پیوست است .

حال با قطعه کدهای زیر می توانید پیامتان در یک ایمیل با استفاده از C # ارسال کنید. این کد را می توان در هر برنامه دسک تاپ یا وب استفاده کرد.

روش اول

می توانید از کلاس System.Net.Mail.MailMessage در چارچوب NET استفاده کنید.

می توانید اسناد MSDN را در اینجا پیدا کنید.

در اینجا یک مثال ساده از ارسال ایمیل (قطعه کد) آورده شده است:

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

...
try
{

   SmtpClient mySmtpClient = new SmtpClient("my.smtp.exampleserver.net");

    // set smtp-client with basicAuthentication
    mySmtpClient.UseDefaultCredentials = false;
   System.Net.NetworkCredential basicAuthenticationInfo = new
      System.Net.NetworkCredential("username", "password");
   mySmtpClient.Credentials = basicAuthenticationInfo;

   // add from,to mailaddresses
   MailAddress from = new MailAddress("test@example.com", "TestFromName");
   MailAddress to = new MailAddress("test2@example.com", "TestToName");
   MailMessage myMail = new System.Net.Mail.MailMessage(from, to);

   // add ReplyTo
   MailAddress replyTo = new MailAddress("reply@example.com");
   myMail.ReplyToList.Add(replyTo);

   // set subject and encoding
   myMail.Subject = "Test message";
   myMail.SubjectEncoding = System.Text.Encoding.UTF8;

   // set body-message and encoding
   myMail.Body = "<b>Test Mail</b><br>using <b>HTML</b>.";
   myMail.BodyEncoding = System.Text.Encoding.UTF8;
   // text or html
   myMail.IsBodyHtml = true;

   mySmtpClient.Send(myMail);
}

catch (SmtpException ex)
{
  throw new ApplicationException
    ("SmtpException has occured: " + ex.Message);
}
catch (Exception ex)
{
   throw ex;
}

روش دوم

قطعه کد زیر کاملا بهینه شده است . در هنگام ارسال ایمیل به علت فعالیت شبکه پردازنده شما متوقف یا دچار وقفه نخواهد شد و در پس زمینه به کار خود ادامه خواهد داد . برنامه کد پیامی حاوی بازخورد را به آدرس مشخص شده ای ایمیل خواهد کرد .

پلتفرم بوی اجرا شدن خروجی صحیح قطعه کد زیر را تایید می کند

قطعه کدی که در زیر مشاهده می کنید توسط برنامه کامپایلر به جهت تست آزمایش شده و خروجی صحیح مدنظر را بدست آورد.

private void ارسالبازخوردمنفیToolStripMenuItem_Click(object sender, EventArgs e)
  {
      new Thread(() =>
      {
          Thread.CurrentThread.IsBackground = true;
          try
          {
              SmtpClient mySmtpClient = new SmtpClient("smtp.gmail.com", 587);
              mySmtpClient.UseDefaultCredentials = false;
              System.Net.NetworkCredential basicAuthenticationInfo = new
              System.Net.NetworkCredential("youremail", "yourpassword");
              mySmtpClient.Credentials = basicAuthenticationInfo;
              MailAddress from = new MailAddress("from", "name");
              MailAddress to = new MailAddress("to", "feedback");
              MailMessage myMail = new System.Net.Mail.MailMessage(from, to);
              mySmtpClient.Timeout = 20000;
              mySmtpClient.EnableSsl = true;
              myMail.Subject = "feedback";
              myMail.SubjectEncoding = System.Text.Encoding.UTF8;
              myMail.Body = "بازخورد منفی دریافت شد";
              myMail.BodyEncoding = System.Text.Encoding.UTF8;
              myMail.IsBodyHtml = false;
              mySmtpClient.Send(myMail);
              MessageBox.Show("از بازخورد شما متشکریم", "ارسال شد", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
          }

          catch
          {
              MessageBox.Show("به یک خطای شبکه برخورد کردیم ", "یک مشکلی اینجاست", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
          }
      }).Start();
  }

شکل ساده شده ی کد بالا :

var mailMessage = new MailMessage
{
    From = new MailAddress("email"),
    Subject = "subject",
    Body = "<h1>Hello</h1>",
    IsBodyHtml = true,
};
mailMessage.To.Add("recipient");

smtpClient.Send(mailMessage);

روش سوم

با استفاده از SMTP یا CDO می توانید ایمیل ارسال کنید

SMTP:

mail.From = new MailAddress("your_email_address@gmail.com");
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;

CDO:

CDO.Message oMsg = new CDO.Message();
CDO.IConfiguration iConfg;
iConfg = oMsg.Configuration;
ADODB.Fields oFields;
oFields = iConfg.Fields;
ADODB.Field oField = oFields["http://schemas.microsoft.com/cdo/configuration/sendusing"];
oFields.Update();
oMsg.Subject = "Test CDO";
oMsg.From = "from_address";
oMsg.To = "to_address";
oMsg.TextBody = "CDO Mail test";
oMsg.Send();

برای کسب اطلاعات بیشتر از لینک های زیر استفاده کنید :

چگونه با smtp جیمیل بفرستیم ؟

چگونه با cdo ایمیل بفرستیم ؟

روش چهارم

می توانید از Mailkit استفاده کنید. MailKit یک کتابخانه پست مشتری-کراس پلت فرم منبع باز است. NET مبتنی بر MimeKit است و برای دستگاه های تلفن همراه بهینه شده است.

این کتابخانه ویژگی های بهتر و پیشرفته تری از System.Net.Mail دارد .

قطعه کد برای استفاده از mailkit :

MimeMessage mailMessage = new MimeMessage();
           mailMessage.From.Add(new MailboxAddress(senderName, sender@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());                
           }

روش پنجم

نمونه قطعه کد ارائه شده در سایت مایکروسافت :

شرح کامل مستندات قطعه کد زیر را می توانید در این لینک مشاهده کنید :

public static void CreateTestMessage2(string server)
{
    string to = "jane@contoso.com";
    string from = "ben@contoso.com";
    MailMessage message = new MailMessage(from, to);
    message.Subject = "Using the new SMTP client.";
    message.Body = @"Using this new feature, you can send an email message from an application very easily.";
    SmtpClient client = new SmtpClient(server);
    // Credentials are necessary if the server requires the client
    // to authenticate before it will send email on the client's behalf.
    client.UseDefaultCredentials = true;

    try
    {
        client.Send(message);
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception caught in CreateTestMessage2(): {0}",
            ex.ToString());
    }

 

آیا این نوشته برای شما مفید بود ؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.