میل کٹ استعمال کرتے ہوئے ای میلبھیجیں

صفحہ تخلیق تاریخ :

ماحول

.نیٹ
  • .نیٹ 5.0
میل کٹ
  • 2.11.1

پہلے تو

اس سے قبل ای میلز بھیجنے کی کلاس ایس ایم ٹی پی کلائنٹ کو معیاری کے طور پر شامل کیا گیا تھا لیکن اب اس کی وضاحت سے باہر ہونے کی وجہ سے اس کی قدر میں کمی کی گئی ہے۔

اس کا مطلب یہ ہے کہ .نیٹ کے پاس ایک معیاری میلنگ لائبریری نہیں ہے، لہذا آپ فریق ثالث لائبریری استعمال کریں گے۔

فی الحال، ایک مرکزی دھارے کی لائبریری کے طور پر "میل کٹ" ہے، لہذا میں اس وقت کا استعمال کرتے ہوئے ایک ای میل بھیجنا چاہوں گا۔

میل کٹ متعارف کرا رہا ہے

ویژیول سٹوڈیو 2019 لانچ کریں اور ایک نیا کنسول ایپ (.نیٹ) پروجیکٹ بنائیں۔ اگر آپ .نیٹ استعمال کر رہے ہیں، تو آپ کو پروجیکٹ کی قسم میں کچھ آزادی ملے گی، لہذا میں تفصیلات پہلے سے جان لوں گا۔

جب آپ پروجیکٹ کھولتے ہیں تو سلوشن ایکسپلورر سے دائیں کلک انحصار اور نیو گیٹ پیکجز کا انتظام منتخب کریں۔

ذیل کی فہرست میں میل کٹ دکھانے کے لیے تلاش کے میدان میں براؤز ٹیب پر کلک کریں اور میل کٹ ٹائپ کریں۔

فہرست سے میل کٹ منتخب کریں، تازہ ترین ورژن منتخب ہونے کی تصدیق کریں اور پھر تنصیب بٹن پر کلک کریں۔

ٹھیک ہے بٹن پر کلک کریں.

تصدیق کریں کہ پیکیج میل کٹ کا حامل ہے۔

پروگرام

ای میلز بھیجنے کے لئے درج ذیل کم از کم کوڈ ہے۔

آپ اپنے کوڈ کے پہلے نصف حصے میں اپنے ای میلز کے لیے درکار معلومات کی وضاحت کرتے ہیں، اور دوسری ششماہی میں ڈاک بھیجنے کے لیے ان اقدار کا استعمال کرتے ہیں۔ آپ کو ضرورت کے مطابق پہلے نصف کی تعریف کو تبدیل کرکے کوڈ کے دوسرے نصف حصے کو مقررہ طریقے سے استعمال کرنے کے قابل ہونا چاہئے۔

using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
using MimeKit.Text;

namespace MailKitSend
{
  class Program
  {
    static void Main(string[] args)
    {
      // メールの送信に必要な情報
      var smtpHostName = "[SMTP サーバー名]";
      var smtpPort = 587;                         // or 25
      var smtpAuthUser = "[認証ユーザー名]";
      var smtpAuthPassword = "[認証パスワードまたはアプリパスワード]";

      // メールの内容
      var from = "[送信者メールアドレス]";
      var to = "[送り先メールアドレス]";

      var subject = "テストメールの件名です。";
      var body = "テストメールの本文です。\n改行です。";
      var textFormat = TextFormat.Text;

      // MailKit におけるメールの情報
      var message = new MimeMessage();

      // 送り元情報  
      message.From.Add(MailboxAddress.Parse(from));

      // 宛先情報  
      message.To.Add(MailboxAddress.Parse(to));

      // 表題  
      message.Subject = subject;

      // 内容  
      var textPart = new TextPart(textFormat)
      {
        Text = body,
      };
      message.Body = textPart;

      using var client = new SmtpClient();

      // SMTPサーバに接続  
      client.Connect(smtpHostName, smtpPort, SecureSocketOptions.Auto);

      if (string.IsNullOrEmpty(smtpAuthUser) == false)
      {
        // SMTPサーバ認証  
        client.Authenticate(smtpAuthUser, smtpAuthPassword);
      }

      // 送信  
      client.Send(message);

      // 切断  
      client.Disconnect(true);
    }
  }
}

ای میل بھیجنے کے لیے درکار معلومات کی وضاحت کریں

var smtpHostName = "[SMTP サーバー名]";
var smtpPort = 587;                         // or 25
var smtpAuthUser = "[認証ユーザー名]";
var smtpAuthPassword = "[認証パスワードまたはアプリパスワード]";

یہ وہ جگہ ہے جہاں آپ مختلف اقدار سیٹ کرتے ہیں جس کا انحصار اس بات پر ہوتا ہے کہ آپ کون سا میل سرور (ایس ایم ٹی پی سرور) استعمال کرتے ہیں۔ میں اس مضمون کے آخر میں جو اقدار طے کر رہا ہوں ان میں سے چند کی وضاحت کرنا چاہوں گا، لیکن بنیادی طور پر اپنے میل سرور کی سائٹ دیکھیں۔

اصل میں، یہ تشخیص ڈاٹ جے سن وغیرہ میں لکھا جاتا ہے، لیکن یہ پیشگی ہے اگرچہ یہ ٹوٹکوں کے طور پر فضول ہو جاتا ہے۔

ای میل کے مواد کی وضاحت کریں

var from = "[送信者メールアドレス]";
var to = "[送り先メールアドレス]";

var subject = "テストメールの件名です。";
var body = "テストメールの本文です。\n改行です。";
var textFormat = TextFormat.Text;

میں سمجھتا ہوں کہ یہ حصہ اسی طرح کا حصہ ہے جیسا کہ اگر آپ عام طور پر میلرز وغیرہ استعمال کرتے ہیں۔

چونکہ یہ حالیہ ڈاک نظام میں بھیس بدل کر بھیجنے کے لئے دستیاب نہیں ہے، بنیادی طور پر آپ اپنے ای میل اکاؤنٹ کی طرح ایک ہی ای میل پتہ سیٹ کریں گے۔

TextFormat متن یا ایچ ٹی ایم ایل میں بھیجا جا سکتا ہے۔ اگر آپ اسے ایچ ٹی ایم ایل میں بھیجتے ہیں تو جسم کے حصے میں ایچ ٹی ایم ایل ٹیگز شامل کریں۔

ای میلبھیجنے پر عمل کرنے کے لئے درکار معلومات سیٹ اپ کریں

// MailKit におけるメールの情報
var message = new MimeMessage();

// 送り元情報  
message.From.Add(MailboxAddress.Parse(from));

// 宛先情報  
message.To.Add(MailboxAddress.Parse(to));

// 表題  
message.Subject = subject;

// 内容  
var textPart = new TextPart(textFormat)
{
   Text = body,
};
message.Body = textPart;

بنیادی طور پر، یہ اوپر بیان کردہ قدر کو ترتیب دینے کی ایک شکل ہے۔

آپ متعدد سے اور سے بھی سیٹ کر سکتے ہیں۔

یہ نمونے میں شامل نہیں ہے، لیکن اس میں سی سی اور بی سی سی بھی شامل ہو سکتے ہیں۔ اگر آپ اسے شامل کرنا چاہتے ہیں تو اسے اسی طرح شامل کریں جس طرح درج ذیل سے یا اس کے پاس:

message.Cc.Add(MailboxAddress.Parse(cc));
message.Bcc.Add(MailboxAddress.Parse(bcc));

اگر ای میل وصول کنندہ کی معاونت کی جاتی ہے تو آپ مرسل یا منزل کا ڈسپلے نام بھی تبدیل کرسکتے ہیں۔ اس صورت میں ضابطہ کو درج ذیل طور پر تبدیل کریں:

message.From.Add(new MailboxAddress("送信者の名前", from));
message.To.Add(new MailboxAddress("送り先の名前", to));

ای میل بھیجیں

using var client = new SmtpClient();

// SMTPサーバに接続  
client.Connect(smtpHostName, smtpPort, SecureSocketOptions.Auto);

if (string.IsNullOrEmpty(smtpAuthUser) == false)
{
   // SMTPサーバ認証  
   client.Authenticate(smtpAuthUser, smtpAuthPassword);
}

// 送信  
client.Send(message);

// 切断  
client.Disconnect(true);

جب آپ اپنے ای میل کی وضاحت کر رہے ہوتے ہیں، تو آپ اسے بھیج تے ہیں۔

جمع کرانا SmtpClient کلاس کی ایک مثال میں کیا جاتا ہے۔ کیونکہ یہ ہدف ہے، اس میں اعلان کیا جاتا Dispose ہے تاکہ اسے خود using var بخود جاری کیا جا سکے۔ چونکہ یہ سی# 8.0 لکھنے کا ایک طریقہ ہے، براہ کرم پہلے ورژن کے لئے عام وضاحت میں تبدیل using کریں۔

SmtpClient.Connect ایس ایم ٹی پی سرور کا طریقہ۔ کچھ ایس ٹی ایم پی سرورز کو ایس ایس ایل یا ٹی ایل ایس کنکشن کی ضرورت ہوتی ہے، لیکن SecureSocketOptions.Auto اختصاص کرنا عام طور پر ٹھیک ہوتا ہے۔

اگر ایس ایم ٹی پی پیش کار توثیق کا متقاضی ہے تو SmtpClient.Authenticate طریقہ کار میں صارف نام اور پاس ورڈ اختصاص کریں۔

کنکشن مکمل ہونے پر SmtpClient.Send طریقہ کار میں ای میل بھیجیں۔

جب سب کچھ ہو جائے تو اسے طریقہ کار سے منقطع کر SmtpClient.Disconnect دیں۔

نوٹ کریں کہ یہ تجاویز تمام کام ہم وقت یعمل کے طور پر انجام دیتی ہیں، لیکن ہر طریقہ ایکس ایکس ایکسنک کے نام سے ہم آہنگ پروسیسنگ بھی کر سکتا ہے۔ حسب ضرورت استعمال کریں۔

منسلکات بھیجنے کا طریقہ

منسلکہ بھیجنے کے MimeMessage.Body لیے، سیٹ کردہ قدر کو درج ذیل میں تبدیل کریں:

// using System.IO; 必要

var filePath = @"[ローカルに保存されているファイルパス].jpg";   // 例として JPEG ファイル指定
var buffer = File.ReadAllBytes(filePath);

var builder = new BodyBuilder();

// テキストか HTML で設定するプロパティが異なる
if (textFormat == TextFormat.Plain)
{
   builder.TextBody = body;
}
else
{
   builder.HtmlBody = body;
}

// 添付ファイルを追加
builder.Attachments.Add(Path.GetFileName(filePath), buffer, new ContentType("image", "jpg"));

message.Body = builder.ToMessageBody();

مندرجہ بالا کوڈ میں، مقامی طور پر ذخیرہ کی گئی فائل ایک منسلکہ ہے، لیکن ڈیٹا کچھ بھی ہوسکتا ہے کیونکہ اسے صرف ایک بائٹ ایری یا اسٹریم ہونا چاہئے۔ مثال کے طور پر جے پی ای جی فائل بھیجنا۔

MimeMessage.Body آپ نے جس قدر کی تعمیر کے لئے مقرر کیا BodyBuilder ہے۔

جسمانی متن مختلف ہے، اور وہ خصوصیات جن پر TextPart یہ سیٹ کیا گیا ہے مختلف ہیں، چاہے متن ہو یا ایچ ٹی ایم ایل۔ براہ کرم نوٹ کریں کہ اگر آپ دونوں سیٹ بھی کرتے ہیں تو پہلی ترتیب مٹ جائے گی۔

اٹیچمینٹ BodyBuilder.Attachments پراپرٹی میں شامل کیا جاتا ہے۔ دلائل "اٹیچمینٹ نام"، "اٹیچمینٹ ڈیٹا"، اور "مواد کی قسم (ایم آئی ایم ای)" ہیں۔

نوٹ کریں کہ اٹیچمینٹ کے نام کی شناخت وصول کنندہ فریق کی طرف سے نہیں کی جا سکتی جب تک کہ آپ توسیع شامل نہ کریں۔

ContentType مسل وضع کے لحاظ سے آپ کی طے کردہ قدر مختلف ہوگی۔ اگر آپ "فائل فارمیٹ ایم آئی ایم ای" کے ارد گرد انٹرنیٹ پر تلاش کرتے ہیں، تو آپ مجموعہ دیکھ سکتے ہیں۔

BodyBuilder.ToMessageBodyآخر میں، طریقہ کال کریں اور اسے سیٹ MimeMessage.Body کریں۔

ایک ایس ایم ٹی پی پیش کار کی تخصیص کے بارے میں

ڈاک بھیجنے کے لیے ایس ایم ٹی پی پیش کار کی مختلف سیٹنگیں ہیں جو آپ کے استعمال کیے گئے ڈاک پیش کار پر منحصر ہیں۔ مندرجہ ذیل ایک مثال ہے، لہذا اگر ایسی کوئی چیز نہیں ہے، تو براہ کرم اس سرور کی مدد چیک کریں جو آپ استعمال کر رہے ہیں۔

اس کے علاوہ چونکہ یہ معلومات اپریل 2021 تک ہیں اس لیے فی الحال معلومات تبدیل ہو چکی ہوں گی۔

ایس ایم ٹی پی پیش کار اگر دو مرحلہ استعمال کر رہے
ڈاک خدمتدہانہ توثیقآپتصدیقی خفیہ کاریہیں
حصہ 1 Outlook.com smtp.office365.com 587 نام صارف اور پاس ورڈ ?? بی اے ٹی ٹی ایل ایس
حصہ 2 Outlook.com smtp-mail.outlook.com 587 نام صارف اور پاس ورڈ ایپ پاس ورڈ حاصل کریں اور اسے پاس ورڈ پر سیٹ کریں بی اے ٹی ٹی ایل ایس
جی میل smtp.gmail.com 465 (ایس ایس ایل) یا 587 (ٹی ایل ایس) نام صارف اور پاس ورڈ ایپ پاس ورڈ حاصل کریں اور اسے پاس ورڈ پر سیٹ کریں ایس ایس ایل یا ٹی ایل ایس یا ایس او ٹی ٹی ایل ایس
یاہو! ڈاک smtp.mail.yahoo.co.jp 465 نام صارف اور پاس ورڈ ?? نامعلوم قسم
او سی این smtp.ocn.ne.jp 465 نام صارف اور پاس ورڈ ?? ایس ایس ایل یا ٹی ایل ایس