আপডেট উত্তর :
SmtpClient
এই উত্তরের জন্য ব্যবহৃত ক্লাসটির জন্য ডকুমেন্টেশন , এখন পড়েছে, 'অপ্রচলিত ("শ্রীমতিপ্লেটিয়েন্ট এবং এর ধরণের নেটওয়ার্কগুলি খারাপভাবে ডিজাইন করা হয়েছে, আমরা আপনাকে দৃ strongly ়ভাবে https://github.com/jstedfast/MailKit এবং https: // github ব্যবহার করার পরামর্শ দিচ্ছি) .com / jsted ব্রেকফাস্ট / মাইমকিট পরিবর্তে ") '।
সূত্র: https://www.infoq.com/news/2017/04/MailKit-MimeKit- অফিসিয়াল
আসল উত্তর :
মেলডিফিনিশন ক্লাস ব্যবহার করা ভুল পদ্ধতি। হ্যাঁ, এটি সুবিধাজনক, তবে এটি আদিম এবং ওয়েব ইউআই নিয়ন্ত্রণের উপর নির্ভর করে - এটি সাধারণত কোনও সার্ভার-সাইড টাস্ক এমন কোনও কিছুর জন্য অর্থবোধ করে না।
নীচে উপস্থাপিত পদ্ধতিটি এমএসডিএন ডকুমেন্টেশন এবং কোডপ্রজেক্ট ডটকমের কুরেশির পোস্টের ভিত্তিতে তৈরি ।
দ্রষ্টব্য: এই উদাহরণটি এম্বেড থাকা সংস্থানগুলি থেকে এইচটিএমএল ফাইল, চিত্র এবং সংযুক্তিগুলি বের করে, তবে এই উপাদানগুলির স্ট্রিম পেতে অন্যান্য বিকল্পগুলি ব্যবহার করা ভাল, যেমন হার্ড-কোডিং স্ট্রিং, স্থানীয় ফাইল এবং।
Stream htmlStream = null;
Stream imageStream = null;
Stream fileStream = null;
try
{
// Create the message.
var from = new MailAddress(FROM_EMAIL, FROM_NAME);
var to = new MailAddress(TO_EMAIL, TO_NAME);
var msg = new MailMessage(from, to);
msg.Subject = SUBJECT;
msg.SubjectEncoding = Encoding.UTF8;
// Get the HTML from an embedded resource.
var assembly = Assembly.GetExecutingAssembly();
htmlStream = assembly.GetManifestResourceStream(HTML_RESOURCE_PATH);
// Perform replacements on the HTML file (if you're using it as a template).
var reader = new StreamReader(htmlStream);
var body = reader
.ReadToEnd()
.Replace("%TEMPLATE_TOKEN1%", TOKEN1_VALUE)
.Replace("%TEMPLATE_TOKEN2%", TOKEN2_VALUE); // and so on...
// Create an alternate view and add it to the email.
var altView = AlternateView.CreateAlternateViewFromString(body, null, MediaTypeNames.Text.Html);
msg.AlternateViews.Add(altView);
// Get the image from an embedded resource. The <img> tag in the HTML is:
// <img src="pid:IMAGE.PNG">
imageStream = assembly.GetManifestResourceStream(IMAGE_RESOURCE_PATH);
var linkedImage = new LinkedResource(imageStream, "image/png");
linkedImage.ContentId = "IMAGE.PNG";
altView.LinkedResources.Add(linkedImage);
// Get the attachment from an embedded resource.
fileStream = assembly.GetManifestResourceStream(FILE_RESOURCE_PATH);
var file = new Attachment(fileStream, MediaTypeNames.Application.Pdf);
file.Name = "FILE.PDF";
msg.Attachments.Add(file);
// Send the email
var client = new SmtpClient(...);
client.Credentials = new NetworkCredential(...);
client.Send(msg);
}
finally
{
if (fileStream != null) fileStream.Dispose();
if (imageStream != null) imageStream.Dispose();
if (htmlStream != null) htmlStream.Dispose();
}