[c#] MailMessage를 사용하여 여러 수신자에게 이메일을 보내시겠습니까?

SQL Server에 여러 전자 메일 수신자가 저장되어 있습니다. 웹 페이지에서 보내기를 클릭하면 모든 수신자에게 이메일을 보내야합니다. 을 사용하여 이메일을 분리했습니다 ;.

다음은 단일 수신자 코드입니다.

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();



답변

쉬운!

수신 주소 목록을 “;”로 나누기 만하면됩니다. 문자, 메일 메시지에 추가 :

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

이 예에서는 addressesaddress1@example.com;address2@example.com“를 포함 합니다.


답변

Adam Miller가 의견에서 제안했듯이 다른 솔루션을 추가하겠습니다.

MailMessage (String from, String to) 생성자는 쉼표로 구분 된 주소 목록을 허용합니다. 따라서 이미 쉼표 ( ‘,’)로 구분 된 목록이있는 경우 사용법은 다음과 같이 간단합니다.

MailMessage Msg = new MailMessage(fromMail, addresses);

이 특별한 경우 ‘;’를 대체 할 수 있습니다. ‘,’에 대해 여전히 생성자를 사용하십시오.

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

당신이 이것을 선호하든 수용된 대답을 선호하든 그것은 당신에게 달려 있습니다. 틀림없이 루프는 의도를 더 명확하게하지만 이것은 더 짧고 모호하지 않습니다. 그러나 이미 쉼표로 구분 된 목록이 있다면 이것이 갈 길이라고 생각합니다.


답변

문서에 따르면 :

MailMessage.To 속성- 이 전자 메일 메시지의받는 사람 목록이 포함 된 MailAddressCollection 을 반환 합니다.

여기 MailAddressCollection 에는

   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/


답변

다음 powershell 스크립트를 사용하고 주소 사이에 (,)를 사용하여 이것을 테스트했습니다. 그것은 나를 위해 일했습니다!

$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);


답변