মেলমেসেজ সহ একাধিক প্রাপকদের ইমেল প্রেরণ করবেন?


87

আমার এসকিউএল সার্ভারে একাধিক ইমেল প্রাপক সঞ্চয় রয়েছে। আমি যখন ওয়েবপৃষ্ঠায় প্রেরণ ক্লিক করি তখন এটি সমস্ত প্রাপকদের ইমেল প্রেরণ করা উচিত। আমি ব্যবহার করে ইমেল পৃথক করেছি ;

নিম্নলিখিত একক প্রাপক কোড।

MailMessage Msg = new MailMessage();
MailAddress fromMail = new MailAddress(fromEmail);
Msg.From = fromMail;
Msg.To.Add(new MailAddress(toEmail));

if (ccEmail != "" && bccEmail != "")
{
    Msg.CC.Add(new MailAddress(ccEmail));
    Msg.Bcc.Add(new MailAddress(bccEmail));
}

SmtpClient a = new SmtpClient("smtp server name");
a.Send(Msg);
sreader.Dispose();

এতক্ষণ আপনি কী চেষ্টা করেছেন? আপনার কি একক প্রাপকের জন্য এটি কাজ করছে?
ব্রেন্ডন গ্রিন

@ ব্রেন্ডনগ্রিন হ্যাঁ আমি একক প্রাপকের জন্য কাজ করছি।
চেতন গোয়েঙ্কা

4
এছাড়াও, এফওয়াইআই, আপনার MailMessageএবং SmtpClientদৃষ্টান্তগুলি usingব্লক হওয়া দরকার ।
জন স্যান্ডার্স

4
@ জনসন্ডারদের তাদের উচিত, তবে অবশ্যই এটির দরকার নেই
সংখ্যা লক

4
@ জনসন্ডার্স প্রথমত, আপনার শব্দটি খুব বিভ্রান্তিকর: আপনি সম্ভবত এটি নিয়ে তর্ক করবেন, তবে " usingব্লকগুলিতে থাকা দরকার" "নিষ্পত্তি করা দরকার" সমান হয় না। দ্বিতীয়ত, ওয়েব অ্যাপ্লিকেশনগুলির মতো প্রোডাকশন কোডে আপনি সাধারণত SendAsyncযেভাবেই ব্যবহার করতে চান , যা SnmpClientউদাহরণটি নিষ্পত্তি না করে উদ্দেশ্য হিসাবে কাজ করে ।
সংখ্যা লক

উত্তর:


182

সহজ!

কেবলমাত্র ";" এ আগত ঠিকানা তালিকা বিভক্ত করুন চরিত্রটি, এবং এগুলি মেল বার্তায় যুক্ত করুন:

foreach (var address in addresses.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries))
{
    mailMessage.To.Add(address);    
}

এই উদাহরণে, addresses" address1@example.com;address2@example.com" রয়েছে ।


56
আমি পার্টিতে দেরি করছি কিন্তু মেইলমেসেজ (স্ট্রিং থেকে স্ট্রিং) কনস্ট্রাক্টর অ্যাড্রেসের কমা-বিচ্ছিন্ন তালিকা গ্রহণ করে। সুতরাং, আপনি নতুন মেইলমেসেজের মতো কিছু করতে পারতেন (মেল, অ্যাড্রেস.রেপ্লেস (";", ",")) বদলে ব্যবহার করা ভাল নাও হতে পারে তবে অন্য লোকেরা ইতিমধ্যে কমা বিচ্ছিন্ন হয়ে গেলে আমার এই মন্তব্য করা উচিত বলে মনে হচ্ছে স্ট্রিং! তারপরে বিভক্তকরণ বা প্রতিস্থাপনের প্রয়োজন হবে না।
21

@ আরকস, আপনি যদি ব্রেন্ডনের অনুরূপ নমুনা কোডের একটি লাইন একসাথে রাখতে পারেন তবে অবশ্যই আপনাকে উত্তর হিসাবে এটি যুক্ত করা উচিত।
অ্যাডাম মিলার

@ এই মন্তব্যের জন্য ধন্যবাদ জানাই, আমি আপনার মন্তব্যটি না পড়া পর্যন্ত আমি অ্যাড্রেসগুলি বিভক্ত করে রেখেছিলাম। এটাই আমি চাই!
জিরোইন

এটি কি প্রয়োজনীয়? আপনি কি কেবল একাধিক ঠিকানার জন্য ইতিমধ্যে ফর্ম্যাট করা স্ট্রিংটি নিচ্ছেন না এবং এগুলি বিভাজন করছেন, তারপরে তাদের পুনরায় নিয়োগ দিচ্ছেন? আপনি যদি () তে বর্ণিত একটি স্ট্রিং ("a1; a2; a3") প্রেরণ করেন তবে কেন আপনাকে সেগুলি বিভক্ত করার এবং তারপরে স্বতন্ত্রভাবে নির্ধারিত হওয়া দরকার? যেহেতু এটি ঠিকানা সংকলনে বা একটি ডিলিমিনেটর স্ট্রিংয়ে একাধিক ঠিকানা ব্যতীত।
কেসি

85

মন্তব্যগুলিতে অ্যাডাম মিলার দ্বারা পরামর্শিত হিসাবে, আমি আরও একটি সমাধান যুক্ত করব।

মেইলমেসেজ (স্ট্রিং থেকে স্ট্রিং থেকে) কনস্ট্রাক্টর অ্যাড্রেসের কমা দ্বারা পৃথক করা তালিকা গ্রহণ করে। সুতরাং আপনার যদি ইতিমধ্যে কমা (',') পৃথক তালিকা রয়েছে বলে মনে হয় তবে ব্যবহারটি তত সহজ:

MailMessage Msg = new MailMessage(fromMail, addresses);

এই বিশেষ ক্ষেত্রে, আমরা ';' প্রতিস্থাপন করতে পারি ',' এর জন্য এবং এখনও কনস্ট্রাক্টর ব্যবহার করুন।

MailMessage Msg = new MailMessage(fromMail, addresses.replace(";", ","));

আপনি এটি পছন্দ করেন বা গৃহীত উত্তর এটি আপনার উপর নির্ভর করে। তাত্ক্ষণিকভাবে লুপটি অভিপ্রায়কে আরও পরিষ্কার করে তোলে তবে এটি খাটো এবং অস্পষ্ট নয়। তবে আপনার যদি ইতিমধ্যে কমা দ্বারা পৃথক করা তালিকা থাকে তবে আমার মনে হয় এটিই যাওয়ার উপায়।


4
যেহেতু এটি এমন একটি অ্যাপ্লিকেশন নিয়ে সমস্যা সৃষ্টি করেছে যেটি আমি এটি কার্যকর করেছিলাম তাই আপনার চলমান চরিত্রটি একটি আধা কোলন কিনা তা পরীক্ষা করে দেখুন এবং প্রতিস্থাপন কমান্ড চালানোর আগে এটি সরিয়ে ফেলুন। আমি নিশ্চিত না যে পেছনের অর্ধকোলনটিকে বৈধ প্রাপক তালিকা হিসাবে বিবেচনা করা হয় তবে লোকেরা আউটলুকের মতো অ্যাপ্লিকেশনগুলির মাধ্যমে একটি অনুবর্তনশীল সেমিকোলনটি দেখতে অভ্যস্ত হতে পারে। মেইলম্যাসেজে পাস করা কমা বিভাজিত তালিকায় আপনার পিছনে থাকা কমা থাকতে পারে না।
ডেভিড জ্যাকবসন

4
আমার বোধগম্যতার পরে কিছুই না থাকলে ট্রেলিং কমা / সেমিকোলন হওয়া উচিত নয় ... তবে অবশ্যই এটি একটি ভাল মন্তব্য যাতে এটি পড়ার লোকেরা এটি সম্পর্কে সচেতন হয়। ধন্যবাদ!
'45-এ

4
এটি কোথাও নথিভুক্ত করা হয়? কনস্ট্রাক্টর ডক্স কেবলমাত্র toপরমকে "একটি স্ট্রিং হিসাবে ইমেল বার্তার প্রাপকের ঠিকানা সম্বলিত" হিসাবে বর্ণনা করে । আমি এটি ব্যবহার করতে চাই তবে এটির সমর্থন সরিয়ে দেওয়া হতে পারে না।
xr280xr

4
দুঃখজনকভাবে ফর্ম্যাটটি নথিভুক্ত নয় বলে মনে হচ্ছে তবে কনস্ট্রাক্টর জানিয়েছে যে এটি একাধিক প্রাপকের জন্য হতে পারে: এমএসডিএন.মাইক্রোসফট.ফেন / লিবেরি / 14k9fb7t ( v=vs.110 ) .aspx একটি স্ট্রিং যাতে ঠিকানাগুলি রয়েছে ইমেল বার্তা প্রাপকদের। এটি "ঠিকানা" এবং "প্রাপক" উভয়ের জন্য বহুবচন।
Areks

4
অবশ্যই একটি বৈশিষ্ট্য, তবে ডকুমেন্টেশন হয় বিরল বা অস্তিত্বহীন। এটি প্রায় সত্যই প্রথম ইঙ্গিতটি পেতে আমাকে প্রায় 5 টি পদ্ধতিতে কল করতে হয়েছিল। রেফারেন্সসোর্স.মাইক্রোসফট
সিস্টেমেট /

1

ডকুমেন্টেশন অনুযায়ী:

MailMessage.To সম্পত্তি - এই ইমেল বার্তার প্রাপকদের তালিকা থাকা মেলএড্রেস সংগ্রহ সংগ্রহ করে

এখানে মেলএড্রেসক্লিকেশনটির একটি অন্তর্নির্মিত পদ্ধতি রয়েছে

   public void Add(string addresses)

   1. Summary:
          Add a list of email addresses to the collection.

   2. Parameters:
          addresses: 
                *The email addresses to add to the System.Net.Mail.MailAddressCollection. Multiple
                *email addresses must be separated with a comma character (",").     

একাধিক প্রাপকদের ক্ষেত্রে প্রয়োজন: কমা দ্বারা পৃথক ইমেল ঠিকানা রয়েছে এমন একটি স্ট্রিং পাস করুন

তোমার ক্ষেত্রে :

কেবল সমস্ত প্রতিস্থাপন; সঙ্গে ,

Msg.To.Add(toEmail.replace(";", ","));

রেফারেন্সের জন্য:

  1. https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.mailmessage?view=netframework-4.8
  2. https://www.geeksforgeeks.org/c-sharp-replace-method/

-4

আমি এটি নিম্নলিখিত পাওয়ারশেল স্ক্রিপ্ট ব্যবহার করে এবং ঠিকানাগুলির মধ্যে (,) ব্যবহার করে পরীক্ষা করেছি। এটা আমার জন্য কাজ!

$EmailFrom = "<from@any.com>";
$EmailPassword = "<password>";
$EmailTo = "<to1@any.com>,<to2@any.com>";
$SMTPServer = "<smtp.server.com>";
$SMTPPort = <port>;
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer,$SMTPPort);
$SMTPClient.EnableSsl = $true;
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($EmailFrom, $EmailPassword);
$Subject = "Notification from XYZ";
$Body = "this is a notification from XYZ Notifications..";
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body);

4
এটি এমন একটি ট্যাগ যা একটি প্রশ্ন C#, পাওয়ারশেলের সাথে মোটেই সম্পর্কিত নয়
জের্মেল মেভেল

শেষে একই লাইব্রেরি। কোনও ভার্সনবিহীন মেশিনে পাওয়ারশেল ব্যবহার করে পরীক্ষা করা সহজতর easier আপনি পাওয়ারসেল স্ক্রিপ্টটি কাজ করার পরে এটি সি # সমতুল্যে "অনুবাদ" করার বিষয় মাত্র।
হিটার মার্কোস

4
এই প্রশ্নটি এমনকি ট্যাগ করা হয় না .NET Frameworkশুধুমাত্র C#। যদি প্রত্যেকে আপনার মত একই কাজ করে থাকে তবে আমাদের সম্পর্কিত VB.NET, F # বা এমনকি সি ++ সম্পর্কিত সমস্ত প্রশ্নের উত্তর থাকবে .NET Framework। সব মিলিয়ে এটি একই ফ্রেমওয়ার্ক, এটি কেবল অনুবাদ করার বিষয় ... আপনি এখানে আমার বক্তব্যটি দেখছেন? স্ট্যাকওভারফ্লো তথ্যের সত্যিকারের আবর্জনার উত্স হয়ে উঠবে
জেরমে মেভেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.