CHANGE_MULTIPL_TO_MAIL : RV

This commit is contained in:
VENKATESHWARAN 2025-04-22 16:31:32 +05:30
parent bf3a19addf
commit 70721df23c
5 changed files with 197 additions and 163 deletions

View File

@ -32,6 +32,7 @@ $routes->get("sendextraparam", "ClientController::sendextraparam");
$routes->get("updateRenewalData", "ClientController::updateRenewalData"); $routes->get("updateRenewalData", "ClientController::updateRenewalData");
$routes->get("updateRenewalDataNotExistingClient", "ClientController::updateRenewalDataNotExistingClient"); $routes->get("updateRenewalDataNotExistingClient", "ClientController::updateRenewalDataNotExistingClient");
$routes->get("updateRenewalInsurerData", "ClientController::updateRenewalInsurerData"); $routes->get("updateRenewalInsurerData", "ClientController::updateRenewalInsurerData");
$routes->get("sendMutipleToEmails", "MasterController::sendMutipleToEmails");
// $routes->post("iAgreeForAddOn", "EmployeeRestController::iAgreeForAddOn"); // $routes->post("iAgreeForAddOn", "EmployeeRestController::iAgreeForAddOn");
// $routes->get("sendCroneRemainderMail", "DashboardController::sendCroneRemainderMail"); // $routes->get("sendCroneRemainderMail", "DashboardController::sendCroneRemainderMail");
// $routes->post("employeeUpload", "EmployeeRestController::employeeUpload"); // $routes->post("employeeUpload", "EmployeeRestController::employeeUpload");

View File

@ -1829,4 +1829,22 @@ class MasterController extends AdminController
echo "################################################################\n\n"; echo "################################################################\n\n";
} }
public function sendMutipleToEmails()
{
$message = '<style>body{font-family:Arial,sans-serif;color:#333;line-height:1.6;margin:0;padding:0}.email-container{width:100%;max-width:600px;margin:0 auto;padding:20px;border:1px solid #e0e0e0;background-color:#f9f9f9}.header{background-color:#4a90e2;color:#fff;padding:15px;text-align:center}.header h1{margin:0;font-size:24px}.content{padding:20px;background-color:#fff}.content h2{color:#4a90e2;font-size:20px;margin-top:0}.content p{margin:10px 0}.details-table{width:100%;border-collapse:collapse;margin-top:20px}.details-table td,.details-table th{border:1px solid #ddd;padding:10px;text-align:left}.details-table th{background-color:#f2f2f2}.footer{margin-top:20px;font-size:12px;color:#777;text-align:center}.attachment-note{margin-top:20px;padding:10px;background-color:#f7f7f7;border-left:4px solid #4a90e2;font-style:italic}</style><div class=email-container><div class=header><h1>Request for Quotation (RFQ)</h1></div><div class=content><h2>Dear {{RECIPIENT_NAME}},</h2><p>We are reaching out to request a quotation for the following insurance coverage. Please review the details below and provide your quote at your earliest convenience.<h2>RFQ Details</h2><table class=details-table><tr><th>Client name<td>{{CLIENT_NAME}}<tr><th>Coverage Type<td>{{POLICY_LONG_NAME}}<tr><th>Policy Start Date<td>{{POLICY_START_DATE}}<tr><th>Policy Duration<td>{{DURATION}}</table><div class=attachment-note>Please note: Additional terms and details are included in the attachment for your reference.</div><p>Please feel free to reach out if you require any further information to prepare the quote. We look forward to receiving your proposal.<p>Best regards,<p><strong>Nhance India Pvt Ltd</strong><br></div><div class=footer><p>© Nhance India Pvt Ltd. All rights reserved.</div></div>';
$attachments = [
["filePath" => ROOTPATH."public/sample_excel/sample_addition.xls","fileName" => "sample_addition.xls"],
["filePath" => ROOTPATH."public/sample_excel/sample_inception.xls","fileName" => "sample_inception.xls"],
["filePath" => ROOTPATH."public/assets/images/login_bg.jpg","fileName" => "login_bg.jpg"]
];
$email_id = 'venkateshraman786@gmail.com';
$params = ['mail'=>$email_id];
$multi_mails = ['venkateshraman786@gmail.com', 'gowtham.manavalan.la@gmail.com', 'venkatesh.r@venbainfotech.com'];
$common = ['mail_type'=>'test_mail_cli'];
$bcc = "vitvelz@gmail.com,velmurugan.s@venbainfotech.com,srinivas.saravanan@venbainfotech.com";
$result = MailHelper::send_email(['mail' => $multi_mails, 'bcc'=>$bcc, 'params'=>$params,'subject' => 'Send Multiple " To " emails','message' => $message,'attachments' => $attachments,'common'=>$common]);
dd($result);
}
} }

View File

@ -878,24 +878,24 @@ class TicketController extends BaseController
} }
// Construct Mail Data // Construct Mail Data
$mailData[] = [ $mailData = [
'mail' => $ticket_data['emp_mail'], 'mail' => [$ticket_data['emp_mail'], $ticket_data['emp_personal_mail'] ?? ""],
'subject' => $subject, 'subject' => $subject,
'message' => $message, 'message' => $message,
'cc' => $ticket_data['common_mails'] ?? '', 'cc' => $ticket_data['common_mails'] ?? '',
'attachments' => [] 'attachments' => []
]; ];
// if the employee personal mail is not empty then send the mail to the employee personal mail // // if the employee personal mail is not empty then send the mail to the employee personal mail
if(!empty($ticket_data['emp_personal_mail'])){ // if(!empty($ticket_data['emp_personal_mail'])){
$mailData[] = [ // $mailData[] = [
'mail' => $ticket_data['emp_personal_mail'], // 'mail' => [$ticket_data['emp_mail'], $ticket_data['emp_personal_mail'] ?? ""],
'subject' => $subject, // 'subject' => $subject,
'message' => $message, // 'message' => $message,
'cc' => $ticket_data['common_mails'] ?? '', // 'cc' => $ticket_data['common_mails'] ?? '',
'attachments' => [] // 'attachments' => []
]; // ];
} // }
// print_r($mailData); die; // print_r($mailData); die;
@ -986,28 +986,28 @@ class TicketController extends BaseController
$this->myLogger->logme('error', "Fetched ACM emails"); $this->myLogger->logme('error', "Fetched ACM emails");
if(!empty($ticket_data['emp_personal_mail'])){ // if(!empty($ticket_data['emp_personal_mail'])){
$this->myLogger->logme('error', "Send employee personal mail start"); // $this->myLogger->logme('error', "Send employee personal mail start");
$emailPersonalData = [ // $emailPersonalData = [
'mail' => $ticket_data['emp_personal_mail'], // 'mail' => $ticket_data['emp_personal_mail'],
'subject' => $mail_data['mail_subject'], // 'subject' => $mail_data['mail_subject'],
'message' => $mail_data['mail_content'], // 'message' => $mail_data['mail_content'],
'common' => [], // 'common' => [],
'cc' => $acm_mails['common_mails'], // 'cc' => $acm_mails['common_mails'],
'attachments' => [] // 'attachments' => []
]; // ];
$this->sendTrigger($emailPersonalData); // $this->sendTrigger($emailPersonalData);
$this->myLogger->logme('error', "Send employee personal mail successfully"); // $this->myLogger->logme('error', "Send employee personal mail successfully");
}else{ // }else{
$this->myLogger->logme('error', "Send employee personal mail is empty"); // $this->myLogger->logme('error', "Send employee personal mail is empty");
} // }
$emailData = [ $emailData = [
'mail' => $mail_data['emp_mail'], 'mail' => [$mail_data['emp_mail'], $ticket_data['emp_personal_mail'] ?? ""],
'subject' => $mail_data['mail_subject'], 'subject' => $mail_data['mail_subject'],
'message' => $mail_data['mail_content'], 'message' => $mail_data['mail_content'],
'common' => [], 'common' => [],
@ -1029,10 +1029,11 @@ class TicketController extends BaseController
if (!empty($auto_mail_enable) && $auto_mail_enable['is_auto_mail'] == 1) { if (!empty($auto_mail_enable) && $auto_mail_enable['is_auto_mail'] == 1) {
$mail_content = $this->constructMailContent($ticket_id); $mail_content = $this->constructMailContent($ticket_id);
// print_r($mail_content); die; // print_r($mail_content); die;
foreach ($mail_content as $key => $value) { // foreach ($mail_content as $key => $value) {
$mail_responce = $this->sendTrigger($value); $mail_responce = $this->sendTrigger($mail_content);
$this->myLogger->logme('error', '{data} - Auto Mail Sent, Successfully', ['data' => $key + 1]); // $this->myLogger->logme('error', '{data} - Auto Mail Sent, Successfully', ['data' => $key + 1]);
} $this->myLogger->logme('error', 'Auto Mail Sent, Successfully');
// }
} elseif (!empty($auto_mail_enable) && $auto_mail_enable['is_auto_mail'] == 0) { } elseif (!empty($auto_mail_enable) && $auto_mail_enable['is_auto_mail'] == 0) {
$this->myLogger->logme('error', 'Auto Mail Not Sent, Reason: Automail Not Enabled'); $this->myLogger->logme('error', 'Auto Mail Not Sent, Reason: Automail Not Enabled');
} else { } else {
@ -1543,7 +1544,7 @@ class TicketController extends BaseController
$sent_message_data['ticket_id'] = $ticket_id; $sent_message_data['ticket_id'] = $ticket_id;
$sent_message_data['sender'] = 'staff'; $sent_message_data['sender'] = 'staff';
$sent_message_data['emp_mail'] = $mail_sent_status->data->params->mail; $sent_message_data['emp_mail'] = isset($mail_sent_status->data->params->mail[0]) ? $mail_sent_status->data->params->mail[0] ?? null : $mail_sent_status->data->params->mail ?? null;
$sent_message_data['mail_subject'] = $mail_sent_status->data->params->subject; $sent_message_data['mail_subject'] = $mail_sent_status->data->params->subject;
$sent_message_data['mail_content'] = $mail_sent_status->data->params->message; $sent_message_data['mail_content'] = $mail_sent_status->data->params->message;

View File

@ -74,7 +74,11 @@ class GmailResponseHandler{
if(in_array($key,$arr)){ if(in_array($key,$arr)){
$data[$key] = isset($value)?json_encode($value):null; $data[$key] = isset($value)?json_encode($value):null;
}else{ }else{
$data[$key] = isset($value)?$value:null; if($key == "mail" && is_array($value)){
$data[$key] = isset($value)?json_encode($value):null;
}else{
$data[$key] = isset($value)?$value:null;
}
} }
} }
} }

View File

@ -292,154 +292,164 @@ class MailHelper
} }
} }
public static function send_email($params) public static function send_email($params)
{ {
$myLogger = \Config\Services::mylogger(); $myLogger = \Config\Services::mylogger();
if (is_array($params['mail'])) {
$emaill = $params['mail']; $emails = [];
$subject = $params['subject'];
$message = $params['message']; foreach ($params['mail'] as $key => $emaill) {
$attachments = isset($params['attachments']) ? $params['attachments'] : []; $emails[] = [
$common = isset($params['common']) ? $params['common'] : '';
$bcc = isset($params['bcc']) ? $params['bcc'] : '';
$cc = isset($params['cc']) ? $params['cc'] : '';
$from_address = isset($params['from_mail']) && !empty($params['from_mail']) ? $params['from_mail'] : getenv('email.fromEmail');
// $from_address = "claims@nhanceindia.in";
try {
$curl = curl_init();
$postData = [
'from' => [
'address' => $from_address
],
'to' => [
[
'email_address' => [ 'email_address' => [
'address' => $emaill 'address' => $emaill
] ]
];
}
} else {
$emails[] = [
'email_address' => [
'address' => $params['mail']
] ]
], ];
'subject' => $subject,
'htmlbody' => $message
];
// Add CC recipients if provided
if (!empty($cc)) {
$ccList = explode(',', $cc);
$ccList = array_map('trim', $ccList);
$postData['cc'] = array_map(function($email) {
return [
'email_address' => [
'address' => $email
]
];
}, $ccList);
}
// Add BCC if present
if (!empty($bcc)) {
$bccList = explode(',', $bcc);
$bccList = array_map('trim', $bccList);
$postData['bcc'] = array_map(function($email) {
return [
'email_address' => [
'address' => $email
]
];
}, $bccList);
} }
// Add BCC recipients if provided $subject = $params['subject'];
// if (!empty($bcc)) { $message = $params['message'];
// $postData['bcc'] = []; $attachments = isset($params['attachments']) ? $params['attachments'] : [];
// // Handle both string and array inputs for BCC $common = isset($params['common']) ? $params['common'] : '';
// $bccEmails = is_array($bcc) ? $bcc : [$bcc]; $bcc = isset($params['bcc']) ? $params['bcc'] : '';
// foreach ($bccEmails as $bccEmail) { $cc = isset($params['cc']) ? $params['cc'] : '';
// $postData['bcc'][] = [
// 'email_address' => [
// 'address' => $bccEmail
// ]
// ];
// }
// }
// Handle attachments $from_address = isset($params['from_mail']) && !empty($params['from_mail']) ? $params['from_mail'] : getenv('email.fromEmail');
if (!empty($attachments)) { // $from_address = "claims@nhanceindia.in";
$postData['attachments'] = []; try {
foreach ($attachments as $attachment) { $curl = curl_init();
if (isset($attachment['filePath']) && file_exists($attachment['filePath'])) {
// Determine MIME type dynamically $postData = [
$fileMimeType = mime_content_type($attachment['filePath']); 'from' => [
'address' => $from_address
$postData['attachments'][] = [ ],
'content' => base64_encode(file_get_contents($attachment['filePath'])), 'to' => $emails,
'name' => $attachment['fileName'], 'subject' => $subject,
'mime_type' => $fileMimeType, 'htmlbody' => $message
];
// Add CC recipients if provided
if (!empty($cc)) {
$ccList = explode(',', $cc);
$ccList = array_map('trim', $ccList);
$postData['cc'] = array_map(function ($email) {
return [
'email_address' => [
'address' => $email
]
]; ];
}, $ccList);
}
// Add BCC if present
if (!empty($bcc)) {
$bccList = explode(',', $bcc);
$bccList = array_map('trim', $bccList);
$postData['bcc'] = array_map(function ($email) {
return [
'email_address' => [
'address' => $email
]
];
}, $bccList);
}
// Add BCC recipients if provided
// if (!empty($bcc)) {
// $postData['bcc'] = [];
// // Handle both string and array inputs for BCC
// $bccEmails = is_array($bcc) ? $bcc : [$bcc];
// foreach ($bccEmails as $bccEmail) {
// $postData['bcc'][] = [
// 'email_address' => [
// 'address' => $bccEmail
// ]
// ];
// }
// }
// Handle attachments
if (!empty($attachments)) {
$postData['attachments'] = [];
foreach ($attachments as $attachment) {
if (isset($attachment['filePath']) && file_exists($attachment['filePath'])) {
// Determine MIME type dynamically
$fileMimeType = mime_content_type($attachment['filePath']);
$postData['attachments'][] = [
'content' => base64_encode(file_get_contents($attachment['filePath'])),
'name' => $attachment['fileName'],
'mime_type' => $fileMimeType,
];
}
} }
} }
}
curl_setopt_array($curl, [ curl_setopt_array($curl, [
CURLOPT_URL => "https://api.zeptomail.in/v1.1/email", CURLOPT_URL => "https://api.zeptomail.in/v1.1/email",
CURLOPT_RETURNTRANSFER => true, CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "", CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10, CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30, CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($postData), CURLOPT_POSTFIELDS => json_encode($postData),
CURLOPT_HTTPHEADER => [ CURLOPT_HTTPHEADER => [
"accept: application/json", "accept: application/json",
"authorization: Zoho-enczapikey " . getenv('ZEPTO_API_KEY'), "authorization: Zoho-enczapikey " . getenv('ZEPTO_API_KEY'),
"cache-control: no-cache", "cache-control: no-cache",
"content-type: application/json", "content-type: application/json",
], ],
]); ]);
$mail_result = curl_exec($curl); $mail_result = curl_exec($curl);
$err = curl_error($curl); $err = curl_error($curl);
curl_close($curl); curl_close($curl);
$res['params'] = $params; $res['params'] = $params;
$MailDataHelper = new GmailResponseHandler(); $MailDataHelper = new GmailResponseHandler();
$apiResponse = json_decode($mail_result, true); $apiResponse = json_decode($mail_result, true);
$res['zepto_api'] = $apiResponse; $res['zepto_api'] = $apiResponse;
if (isset($apiResponse['error'])) { if (isset($apiResponse['error'])) {
$response = $res;
$MailDataHelper->receive_and_distribute_param_to_functions($response);
return json_encode([
'status' => 'failed',
'code' => 404,
'message' => 'Email Sent Failed...' . json_encode($params['mail']),
'data' => $res
], 404);
}
if (isset($apiResponse['data'])) {
$response = $res;
$MailDataHelper->receive_and_distribute_param_to_functions($response);
return json_encode([
'status' => 'success',
'code' => 200,
'message' => 'Email Sent Successfully...' . json_encode($params['mail']),
'data' => $res
], 200);
}
} catch (\Exception $e) {
$msg['error'] = $e->getMessage();
$msg['params'] = $params;
$response = $res; $response = $res;
$MailDataHelper->receive_and_distribute_param_to_functions($response); $MailDataHelper->receive_and_distribute_param_to_functions($response);
return json_encode([ return json_encode([
'status' => 'failed', 'status' => 'failed',
'code' => 404, 'code' => 500,
'message' => 'Email Sent Failed...' . $emaill, 'data' => $msg
'data' => $res ], 500);
], 404);
} }
if (isset($apiResponse['data'])) {
$response = $res;
$MailDataHelper->receive_and_distribute_param_to_functions($response);
return json_encode([
'status' => 'success',
'code' => 200,
'message' => 'Email Sent Successfully...' . $emaill,
'data' => $res
], 200);
}
} catch (\Exception $e) {
$msg['error'] = $e->getMessage();
$msg['params'] = $params;
$response = $res;
$MailDataHelper->receive_and_distribute_param_to_functions($response);
return json_encode([
'status' => 'failed',
'code' => 500,
'data' => $msg
], 500);
} }
}
public static function bulk_mail(array $mails = []) public static function bulk_mail(array $mails = [])
{ {
$model = new JobModel(); $model = new JobModel();