Sent Email in C#:
//Option 1:
using System;
using System.Net.Mail;
using System.Security;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp
{
internal class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("Start....");
string password = "password"; //ConfigurationManager.AppSettings["EmailPassword"];
SecureString secure_passWord = new SecureString();
foreach (char c in
password.ToCharArray()) { secure_passWord.AppendChar(c); }
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
client.UseDefaultCredentials = false;
client.EnableSsl
= true;
//client.Credentials
= new NetworkCredential("abc@xyz.com", secure_passWord);
client.Credentials = new NetworkCredential("abc@xyz.com", "password");
client.Port =
587; //replace with actual value
client.Host = "smpt.mail.com"; //replace with actual value
//client.DeliveryMethod = SmtpDeliveryMethod.Network;
MailMessage mail = new MailMessage();
mail.From = new MailAddress("abc@xyz.com");
mail.To.Add("def@xyz.com");
mail.Subject = "Test
Mail";
mail.Body = "Test
body";
mail.BodyEncoding = Encoding.UTF8;
mail.IsBodyHtml = true;
client.Send(mail);
Console.WriteLine("End....");
}
}
}
//Option 2:
//https://learn.microsoft.com/en-us/azure/communication-services/quickstarts/email/send-email?tabs=windows%2Cconnection-string&pivots=programming-language-csharp
//Quickstart: How to send an email using Azure Communication Service
using Azure;
using Azure.Communication.Email;
namespace SendEmail
{
internal class Program
{
static async Task Main(string[] args)
{
string connectionString = "connectionString";
EmailClient emailClient = new EmailClient(connectionString);
var subject = "Welcome to Azure Communication Service Email APIs.";
var htmlContent = "<html><body><h1>Quick send email test</h1><br/><h4>This email message is sent from Azure Communication Service Email.</h4><p>This mail was sent using .NET SDK!!</p></body></html>";
var sender = "DoNotReply@fcc11977-0b46-46c9-a657-4216db032070.azurecomm.net";
var recipient = "abc@xyz.com";
try
{
Console.WriteLine("Sending email...");
EmailSendOperation emailSendOperation = await emailClient.SendAsync(Azure.WaitUntil.Completed, sender, recipient, subject, htmlContent);
EmailSendResult statusMonitor = emailSendOperation.Value;
Console.WriteLine($"Email Sent. Status = {emailSendOperation.Value.Status}");
string operationId = emailSendOperation.Id;
Console.WriteLine($"Email operation id = {operationId}");
}
catch (RequestFailedException ex)
{
Console.WriteLine($"Email send operation failed with error code: {ex.ErrorCode}, message: {ex.Message}");
}
}
}
}
//Option 3:
using Microsoft.Identity.Client;
using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp
{
internal class Program
{
static async Task Main(string[] args)
{
//Required Azure Application Permissions : Mail.Send
string clientId = "clientId";
string clientSecret = "clientSecret";
string tenantId = "tenantId";
string userEmail = "abc@xyz.com"; // The user on behalf of whom you want to send the email
var confidentialClient = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(new Uri($"https://login.microsoftonline.com/{tenantId}"))
.Build();
var authResult = await confidentialClient.
AcquireTokenForClient(new[] { "https://graph.microsoft.com/.default" })
.ExecuteAsync();
string accessToken = authResult.AccessToken;
using (var httpClient = new HttpClient())
{
//Required Azure Application Permissions : Mail.Send
var apiUrl = $"https://graph.microsoft.com/v1.0/users/{userEmail}/sendMail"; //Mail.Send
var message = new
{
message = new
{
subject = "Subject of the email",
body = new
{
content = "Body of the email",
contentType = "Text"
},
toRecipients = new[]
{
new { emailAddress = new { address = "def@xyz.com" } }
}
}
};
var jsonContent = new StringContent(JsonConvert.SerializeObject(message), Encoding.UTF8, "application/json");
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var response = await httpClient.PostAsync(apiUrl, jsonContent);
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Email sent successfully.");
}
else
{
Console.WriteLine($"Error: {response.StatusCode} - {await response.Content.ReadAsStringAsync()}");
}
}
}
}
}
//Option 4:
//https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth-ropc
Microsoft identity platform and OAuth 2.0 Resource Owner Password Credentials
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp
{
internal class Program
{
static async Task Main(string[] args)
{
var clientId = "clientId";
var tenantId = "tenantId";
var clientSecret = "clientSecret";
var userName = "userName";
var userPassword = "userPassword";
var requestUri = "https://login.microsoftonline.com/" + tenantId + "/oauth2/v2.0/token";
var apiUrl = "https://graph.microsoft.com/v1.0/me/sendmail";
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUri);
request.Headers.Add("Cookie", "fpc=AohS41ndFd5KswGP3EyyEk11dsNQAQAAADIbQ90OAAAA; stsservicecookie=estsfd; x-ms-gateway-slice=estsfd");
List<KeyValuePair<string, string>> collection = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("client_id", clientId),
new KeyValuePair<string, string>("client_secret", clientSecret),
new KeyValuePair<string, string>("username", userName),
new KeyValuePair<string, string>("password", userPassword),
new KeyValuePair<string, string>("grant_type", "password"),
new KeyValuePair<string, string>("scope", "mail.send")
};
FormUrlEncodedContent content = new FormUrlEncodedContent(collection);
request.Content = content;
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseContent = await response.Content.ReadAsStringAsync();
//Console.WriteLine(responseContent);
dynamic jsonData = JsonConvert.DeserializeObject(responseContent);
string accessToken = jsonData.access_token;
Console.WriteLine(accessToken);
var message = new
{
message = new
{
subject = "Subject of the email",
body = new
{
content = "Body of the email",
contentType = "Text"
},
toRecipients = new[]
{
new { emailAddress = new { address = "user1@gmail.com" } }
}
}
};
var jsonContent = new StringContent(JsonConvert.SerializeObject(message), Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
HttpResponseMessage response1 = await client.PostAsync(apiUrl, jsonContent);
if (response1.IsSuccessStatusCode)
{
Console.WriteLine("Email sent successfully.");
}
else
{
Console.WriteLine($"Error: {response1.StatusCode} - {await response1.Content.ReadAsStringAsync()}");
}
Console.ReadKey();
}
}
}
internal class Program
{
static async Task Main(string[] args)
Console.WriteLine("Start....");
SecureString secure_passWord = new SecureString();
client.Credentials = new NetworkCredential("abc@xyz.com", "password");
client.Host = "smpt.mail.com"; //replace with actual value
//client.DeliveryMethod = SmtpDeliveryMethod.Network;
MailMessage mail = new MailMessage();
mail.IsBodyHtml = true;
Console.WriteLine("End....");
}
}
//Option 2:
//https://learn.microsoft.com/en-us/azure/communication-services/quickstarts/email/send-email?tabs=windows%2Cconnection-string&pivots=programming-language-csharp
//Quickstart: How to send an email using Azure Communication Service
using Azure;
using Azure.Communication.Email;
namespace SendEmail
{
internal class Program
{
static async Task Main(string[] args)
{
string connectionString = "connectionString";
EmailClient emailClient = new EmailClient(connectionString);
var subject = "Welcome to Azure Communication Service Email APIs.";
var htmlContent = "<html><body><h1>Quick send email test</h1><br/><h4>This email message is sent from Azure Communication Service Email.</h4><p>This mail was sent using .NET SDK!!</p></body></html>";
var sender = "DoNotReply@fcc11977-0b46-46c9-a657-4216db032070.azurecomm.net";
var recipient = "abc@xyz.com";
try
{
Console.WriteLine("Sending email...");
EmailSendOperation emailSendOperation = await emailClient.SendAsync(Azure.WaitUntil.Completed, sender, recipient, subject, htmlContent);
EmailSendResult statusMonitor = emailSendOperation.Value;
Console.WriteLine($"Email Sent. Status = {emailSendOperation.Value.Status}");
string operationId = emailSendOperation.Id;
Console.WriteLine($"Email operation id = {operationId}");
}
catch (RequestFailedException ex)
{
Console.WriteLine($"Email send operation failed with error code: {ex.ErrorCode}, message: {ex.Message}");
}
}
}
}
//Option 3:
using Microsoft.Identity.Client;
using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp
{
internal class Program
{
static async Task Main(string[] args)
{
//Required Azure Application Permissions : Mail.Send
string clientId = "clientId";
string clientSecret = "clientSecret";
string tenantId = "tenantId";
string userEmail = "abc@xyz.com"; // The user on behalf of whom you want to send the email
var confidentialClient = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(new Uri($"https://login.microsoftonline.com/{tenantId}"))
.Build();
var authResult = await confidentialClient.
AcquireTokenForClient(new[] { "https://graph.microsoft.com/.default" })
.ExecuteAsync();
string accessToken = authResult.AccessToken;
using (var httpClient = new HttpClient())
{
//Required Azure Application Permissions : Mail.Send
var apiUrl = $"https://graph.microsoft.com/v1.0/users/{userEmail}/sendMail"; //Mail.Send
var message = new
{
message = new
{
subject = "Subject of the email",
body = new
{
content = "Body of the email",
contentType = "Text"
},
toRecipients = new[]
{
new { emailAddress = new { address = "def@xyz.com" } }
}
}
};
var jsonContent = new StringContent(JsonConvert.SerializeObject(message), Encoding.UTF8, "application/json");
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var response = await httpClient.PostAsync(apiUrl, jsonContent);
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Email sent successfully.");
}
else
{
Console.WriteLine($"Error: {response.StatusCode} - {await response.Content.ReadAsStringAsync()}");
}
}
}
}
}
//Option 4:
//https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth-ropc
Microsoft identity platform and OAuth 2.0 Resource Owner Password Credentials
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp
{
internal class Program
{
static async Task Main(string[] args)
{
var clientId = "clientId";
var tenantId = "tenantId";
var clientSecret = "clientSecret";
var userName = "userName";
var userPassword = "userPassword";
var requestUri = "https://login.microsoftonline.com/" + tenantId + "/oauth2/v2.0/token";
var apiUrl = "https://graph.microsoft.com/v1.0/me/sendmail";
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUri);
request.Headers.Add("Cookie", "fpc=AohS41ndFd5KswGP3EyyEk11dsNQAQAAADIbQ90OAAAA; stsservicecookie=estsfd; x-ms-gateway-slice=estsfd");
List<KeyValuePair<string, string>> collection = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("client_id", clientId),
new KeyValuePair<string, string>("client_secret", clientSecret),
new KeyValuePair<string, string>("username", userName),
new KeyValuePair<string, string>("password", userPassword),
new KeyValuePair<string, string>("grant_type", "password"),
new KeyValuePair<string, string>("scope", "mail.send")
};
FormUrlEncodedContent content = new FormUrlEncodedContent(collection);
request.Content = content;
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseContent = await response.Content.ReadAsStringAsync();
//Console.WriteLine(responseContent);
dynamic jsonData = JsonConvert.DeserializeObject(responseContent);
string accessToken = jsonData.access_token;
Console.WriteLine(accessToken);
var message = new
{
message = new
{
subject = "Subject of the email",
body = new
{
content = "Body of the email",
contentType = "Text"
},
toRecipients = new[]
{
new { emailAddress = new { address = "user1@gmail.com" } }
}
}
};
var jsonContent = new StringContent(JsonConvert.SerializeObject(message), Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
HttpResponseMessage response1 = await client.PostAsync(apiUrl, jsonContent);
if (response1.IsSuccessStatusCode)
{
Console.WriteLine("Email sent successfully.");
}
else
{
Console.WriteLine($"Error: {response1.StatusCode} - {await response1.Content.ReadAsStringAsync()}");
}
Console.ReadKey();
}
}
}