Compare commits
1 Commits
main
...
Brevo_Mail
Author | SHA1 | Date | |
---|---|---|---|
413c804a87 |
@ -3,6 +3,7 @@
|
||||
public class SmtpSettings
|
||||
{
|
||||
public string? SmtpServer { get; set; }
|
||||
public string? ApiKey { get; set; }
|
||||
public int Port { get; set; }
|
||||
public string? SenderName { get; set; }
|
||||
public string? SenderEmail { get; set; }
|
||||
|
@ -1,5 +1,10 @@
|
||||
using brevo_csharp.Api;
|
||||
using brevo_csharp.Model;
|
||||
using Marco.Pms.Services.Service;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Globalization;
|
||||
using System.Text;
|
||||
|
||||
|
||||
namespace MarcoBMS.Services.Controllers
|
||||
{
|
||||
@ -49,5 +54,155 @@ namespace MarcoBMS.Services.Controllers
|
||||
|
||||
//}
|
||||
|
||||
[HttpPost("send")]
|
||||
public async Task<IActionResult> SendEmail()
|
||||
{
|
||||
var apiKey = "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";
|
||||
// Configure API key authorization
|
||||
var config = new brevo_csharp.Client.Configuration();
|
||||
config.ApiKey.Add("api-key", apiKey);
|
||||
var apiInstance = new TransactionalEmailsApi(config);
|
||||
|
||||
var recipient = new List<SendSmtpEmailTo>
|
||||
{
|
||||
new SendSmtpEmailTo("ashutosh.nehete@marcoaiot.com")
|
||||
};
|
||||
var sender = new SendSmtpEmailSender
|
||||
{
|
||||
Name = "Kartik Sharma",
|
||||
Email = "kartik.sharma@marcoaiot.com"
|
||||
};
|
||||
|
||||
var team = new StringBuilder();
|
||||
team.Append("<tr style=\"vertical-align:middle\">");
|
||||
team.AppendFormat(
|
||||
"<td class=\"team\" style=\"text-align:center\">" +
|
||||
"<div style=\"border: 1px solid #d5d5d5; border-radius: 10px; margin: 10px; padding: 10px;\">" +
|
||||
"<div style=\"font-size: 15px; color: #525b75\">Admin</div>" +
|
||||
"<div style=\"font-size: 20px; color: #003cc7; margin: 20px !important; font-weight: bold;\">1</div>" +
|
||||
"</div></td>");
|
||||
team.AppendFormat(
|
||||
"<td class=\"team\" style=\"text-align:center\">" +
|
||||
"<div style=\"border: 1px solid #d5d5d5; border-radius: 10px; margin: 10px; padding: 10px;\">" +
|
||||
"<div style=\"font-size: 15px; color: #525b75\">Helper</div>" +
|
||||
"<div style=\"font-size: 20px; color: #003cc7; margin: 20px !important; font-weight: bold;\">5</div>" +
|
||||
"</div></td>");
|
||||
team.AppendFormat(
|
||||
"<td class=\"team\" style=\"text-align:center\">" +
|
||||
"<div style=\"border: 1px solid #d5d5d5; border-radius: 10px; margin: 10px; padding: 10px;\">" +
|
||||
"<div style=\"font-size: 15px; color: #525b75\">Welder</div>" +
|
||||
"<div style=\"font-size: 20px; color: #003cc7; margin: 20px !important; font-weight: bold;\">8</div>" +
|
||||
"</div></td>");
|
||||
|
||||
team.Append("</tr>");
|
||||
|
||||
var task = new StringBuilder();
|
||||
|
||||
task.AppendFormat("<tr>" +
|
||||
"<td style=\"text-align:left;\"><span style=\"padding-left: 10px;\">Activity</span><br />" +
|
||||
"<span style=\"color: gray; font-size: small; padding-left: 10px;\">Building > Floor > WorkArea > WorkItem</span></td>" +
|
||||
"<td style=\"text-align:center\">30 / 16</td>" +
|
||||
"<td style=\"text-align:center\">14</td>" +
|
||||
"<td style=\"text-align:center\">{0}</td>" +
|
||||
"<td style=\"padding-left: 10px; text-align: left;\">", DateTime.UtcNow.ToString("dd-MMM-yyyy"));
|
||||
|
||||
task.AppendFormat("Kartik Sharma <span style=\"color: gray; font-size: small; padding-left: 10px;\">(Welder)</span><br />");
|
||||
task.AppendFormat("Kartik Sharma <span style=\"color: gray; font-size: small; padding-left: 10px;\">(Helper)</span><br />");
|
||||
task.AppendFormat("Pramod Mahajan <span style=\"color: gray; font-size: small; padding-left: 10px;\">(Driver)</span><br />");
|
||||
|
||||
task.AppendFormat("</td><td style=\"padding-left: 10px; max-width: 150px; text-align: left;\">This is the test</td></tr>");
|
||||
|
||||
|
||||
var attendance = new StringBuilder();
|
||||
|
||||
attendance.AppendFormat("<tr>" +
|
||||
"<td style=\"text-align:left\"><span style=\"padding-left:10px;\">Kartik Sharma</span></td>" +
|
||||
"<td style=\"text-align:center\">Welder</td>" +
|
||||
"<td style=\"text-align:center\">{0}</td>" +
|
||||
"<td style=\"text-align:center\">{1}</td>" +
|
||||
"<td style=\"padding-left:10px; max-width:150px\">This is Test</td>" +
|
||||
"</tr>",
|
||||
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture),
|
||||
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture));
|
||||
|
||||
attendance.AppendFormat("<tr>" +
|
||||
"<td style=\"text-align:left\"><span style=\"padding-left:10px;\">Kartik Sharma</span></td>" +
|
||||
"<td style=\"text-align:center\">Helper</td>" +
|
||||
"<td style=\"text-align:center\">{0}</td>" +
|
||||
"<td style=\"text-align:center\">{1}</td>" +
|
||||
"<td style=\"padding-left:10px; max-width:150px\">This is Test</td>" +
|
||||
"</tr>",
|
||||
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture),
|
||||
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture));
|
||||
|
||||
attendance.AppendFormat("<tr>" +
|
||||
"<td style=\"text-align:left\"><span style=\"padding-left:10px;\">Pramod Mahajan</span></td>" +
|
||||
"<td style=\"text-align:center\">Driveer</td>" +
|
||||
"<td style=\"text-align:center\">{0}</td>" +
|
||||
"<td style=\"text-align:center\">{1}</td>" +
|
||||
"<td style=\"padding-left:10px; max-width:150px\">This is Test</td>" +
|
||||
"</tr>",
|
||||
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture),
|
||||
DateTime.UtcNow.ToString("dd-MMM-yyyy h:mm tt", CultureInfo.InvariantCulture));
|
||||
|
||||
var date = DateTime.UtcNow.Date.ToString("dd-MMM-yyyy", CultureInfo.InvariantCulture);
|
||||
var prams = new
|
||||
{
|
||||
date = date,
|
||||
project_name = "MarcoAIoT",
|
||||
timestamp = DateTime.UtcNow,
|
||||
todays_attendances = 1,
|
||||
total_Employees = 26,
|
||||
todays_planned = 1230,
|
||||
todays_completed = 1200,
|
||||
regularization_pernding = 3,
|
||||
checkout_pending = 25,
|
||||
total_planned = 1000000,
|
||||
total_completed = 24003,
|
||||
project_status = 70.44,
|
||||
todays_assigned = 2,
|
||||
report_pending = 10,
|
||||
team_on_site = team,
|
||||
performed_task = task,
|
||||
performed_attendance = attendance
|
||||
};
|
||||
|
||||
var sendSmtpEmail = new SendSmtpEmail
|
||||
{
|
||||
Sender = sender,
|
||||
To = recipient,
|
||||
TemplateId = 1, // Your Brevo template ID here
|
||||
Params = prams,
|
||||
Headers = new Dictionary<string, string>
|
||||
{
|
||||
{ "X-Mailin-custom", "custom_header_1:custom_value_1" }
|
||||
}
|
||||
//Subject = "Hello from Brevo this is test",
|
||||
//HtmlContent = "<h1>This is a test email</h1><p>Sent via .NET controller</p>"
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
var result = apiInstance.SendTransacEmail(sendSmtpEmail);
|
||||
var client = new HttpClient();
|
||||
client.DefaultRequestHeaders.Add("api-key", apiKey);
|
||||
var messageId = result.MessageId;
|
||||
|
||||
var response = await client.GetAsync($"https://api.brevo.com/v3/smtp/emails/{messageId}");
|
||||
Console.WriteLine(response);
|
||||
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
Console.WriteLine(content); // This includes status info
|
||||
}
|
||||
return Ok(Marco.Pms.Model.Utilities.ApiResponse<object>.SuccessResponse(result.MessageId, "Email sent successfully!", 200));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, Marco.Pms.Model.Utilities.ApiResponse<object>.ErrorResponse(ex.Message, ex.StackTrace, 500));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -13,6 +13,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||
<PackageReference Include="AWSSDK.S3" Version="3.7.416.13" />
|
||||
<PackageReference Include="brevo_csharp" Version="1.1.1" />
|
||||
<PackageReference Include="MailKit" Version="4.9.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.20" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="8.0.12" />
|
||||
|
@ -1,10 +1,13 @@
|
||||
using System.Globalization;
|
||||
using System.Text;
|
||||
using brevo_csharp.Api;
|
||||
using brevo_csharp.Model;
|
||||
using MailKit.Net.Smtp;
|
||||
using Marco.Pms.Model.Utilities;
|
||||
using Marco.Pms.Model.ViewModels.Report;
|
||||
using Microsoft.Extensions.Options;
|
||||
using MimeKit;
|
||||
using System.Globalization;
|
||||
using System.Text;
|
||||
using Task = System.Threading.Tasks.Task;
|
||||
|
||||
|
||||
namespace MarcoBMS.Services.Service
|
||||
@ -186,7 +189,7 @@ namespace MarcoBMS.Services.Service
|
||||
subject = CheckSubject(subject);
|
||||
await SendEmailAsync(toEmails, subject, emailBody);
|
||||
}
|
||||
public async Task SendEmailAsync(List<string> toEmails, string subject, string body)
|
||||
public async Task SendEmailOldAsync(List<string> toEmails, string subject, string body)
|
||||
{
|
||||
var email = new MimeMessage();
|
||||
email.From.Add(new MailboxAddress(_smtpSettings.SenderName, _smtpSettings.SenderEmail));
|
||||
@ -205,6 +208,42 @@ namespace MarcoBMS.Services.Service
|
||||
await smtp.SendAsync(email);
|
||||
await smtp.DisconnectAsync(true);
|
||||
}
|
||||
public async Task SendEmailAsync(List<string> toEmails, string subject, string body)
|
||||
{
|
||||
var apiKey = _smtpSettings.ApiKey;
|
||||
// Configure API key authorization
|
||||
var config = new brevo_csharp.Client.Configuration();
|
||||
config.ApiKey.Add("api-key", apiKey);
|
||||
var apiInstance = new TransactionalEmailsApi(config);
|
||||
|
||||
var recipient = toEmails.Select(e => new SendSmtpEmailTo(e)).ToList();
|
||||
var sender = new SendSmtpEmailSender
|
||||
{
|
||||
Name = _smtpSettings.SenderName,
|
||||
Email = _smtpSettings.SenderEmail
|
||||
};
|
||||
var sendSmtpEmail = new SendSmtpEmail
|
||||
{
|
||||
Sender = sender,
|
||||
To = recipient,
|
||||
Subject = subject,
|
||||
HtmlContent = body
|
||||
};
|
||||
|
||||
var result = apiInstance.SendTransacEmail(sendSmtpEmail);
|
||||
var client = new HttpClient();
|
||||
client.DefaultRequestHeaders.Add("api-key", apiKey);
|
||||
var messageId = result.MessageId;
|
||||
|
||||
var response = await client.GetAsync($"https://api.brevo.com/v3/smtp/emails/{messageId}");
|
||||
Console.WriteLine(response);
|
||||
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
var content = await response.Content.ReadAsStringAsync();
|
||||
Console.WriteLine(content); // This includes status info
|
||||
}
|
||||
}
|
||||
|
||||
private string CheckSubject(string subject)
|
||||
{
|
||||
|
@ -12,6 +12,7 @@
|
||||
"DefaultConnectionString": "Server=147.93.98.152;User ID=devuser;Password=AppUser@123$;Database=MarcoBMS1"
|
||||
},
|
||||
"SmtpSettings": {
|
||||
"ApiKey": "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",
|
||||
"SmtpServer": "smtp.gmail.com",
|
||||
"Port": 587,
|
||||
"SenderName": "MarcoAIOT",
|
||||
|
Loading…
x
Reference in New Issue
Block a user