From a2ccebf83e70e767acd25b940b5a1b19305569ea Mon Sep 17 00:00:00 2001 From: Srinivas-Saravanan Date: Fri, 17 Jan 2025 18:15:46 +0530 Subject: [PATCH] FIX_ZEPTO_MAIL_BCC_CC_NOT_SEND_ISSUE_SRINIVAS --- app/Helpers/MailHelper.php | 224 +++++++++++++++++++++---------------- 1 file changed, 127 insertions(+), 97 deletions(-) diff --git a/app/Helpers/MailHelper.php b/app/Helpers/MailHelper.php index 91e955b0..ecee92da 100755 --- a/app/Helpers/MailHelper.php +++ b/app/Helpers/MailHelper.php @@ -194,6 +194,11 @@ class MailHelper } else { $bcc = ''; } + if(isset($params['cc'])){ + $cc = $params['cc']; + }else{ + $cc = ''; + } $from_address = getenv('email.fromEmail'); @@ -255,7 +260,7 @@ class MailHelper } $apiResponse = json_decode($response, true); - + log_message('error',$apiResponse); if ($httpCode === 200) { return json_encode(['status' => 'success', 'code' => 200, 'message' => 'Email Sent Successfully...', 'data' => $emaill], 200); } else { @@ -289,116 +294,141 @@ class MailHelper } public static function send_email($params) - { - $myLogger = \Config\Services::mylogger(); +{ + $myLogger = \Config\Services::mylogger(); + + $emaill = $params['mail']; + $subject = $params['subject']; + $message = $params['message']; + $attachments = isset($params['attachments']) ? $params['attachments'] : []; + $common = isset($params['common']) ? $params['common'] : ''; + $bcc = isset($params['bcc']) ? $params['bcc'] : ''; + $cc = isset($params['cc']) ? $params['cc'] : ''; + + $from_address = getenv('email.fromEmail'); + try { + $curl = curl_init(); - $emaill = $params['mail']; - $subject = $params['subject']; - $message = $params['message']; - $attachments = isset($params['attachments']) ? $params['attachments'] : []; - $common = isset($params['common']) ? $params['common'] : ''; - - $from_address = getenv('email.fromEmail'); - try { - $curl = curl_init(); - - $postData = [ - 'from' => [ - 'address' => $from_address - ], - 'to' => [ - [ - 'email_address' => [ - 'address' => $emaill - ] + $postData = [ + 'from' => [ + 'address' => $from_address + ], + 'to' => [ + [ + 'email_address' => [ + 'address' => $emaill ] - ], - 'subject' => $subject, - 'htmlbody' => $message - ]; + ] + ], + 'subject' => $subject, + 'htmlbody' => $message + ]; - // 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, // Add mime_type field - ]; - } + // Add CC recipients if provided + if (!empty($cc)) { + $postData['cc'] = []; + // Handle both string and array inputs for CC + $ccEmails = is_array($cc) ? $cc : [$cc]; + foreach ($ccEmails as $ccEmail) { + $postData['cc'][] = [ + 'email_address' => [ + 'address' => $ccEmail + ] + ]; + } + } + + // 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, [ - CURLOPT_URL => "https://api.zeptomail.in/v1.1/email", - CURLOPT_RETURNTRANSFER => true, - CURLOPT_ENCODING => "", - CURLOPT_MAXREDIRS => 10, - CURLOPT_TIMEOUT => 30, - CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_CUSTOMREQUEST => "POST", - CURLOPT_POSTFIELDS => json_encode($postData), - CURLOPT_HTTPHEADER => [ - "accept: application/json", - "authorization: Zoho-enczapikey " . getenv('ZEPTO_API_KEY'), - "cache-control: no-cache", - "content-type: application/json", - ], - ]); + curl_setopt_array($curl, [ + CURLOPT_URL => "https://api.zeptomail.in/v1.1/email", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => json_encode($postData), + CURLOPT_HTTPHEADER => [ + "accept: application/json", + "authorization: Zoho-enczapikey " . getenv('ZEPTO_API_KEY'), + "cache-control: no-cache", + "content-type: application/json", + ], + ]); - $mail_result = curl_exec($curl); - $err = curl_error($curl); - curl_close($curl); - // log_message('error','inside mail helper'); - // log_message('error', $response.' error->'.$err);die(); - $res['params'] = $params; - $MailDataHelper = new GmailResponseHandler(); - $apiResponse = json_decode($mail_result, true); - $res['zepto_api'] = $apiResponse; - 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...' . $emaill, - 'data' => $res - ], 404); - } + $mail_result = curl_exec($curl); + $err = curl_error($curl); + curl_close($curl); - // $apiResponse = json_decode($response, true); - - // Check if request_id exists in response (indicates success) - 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; + $res['params'] = $params; + $MailDataHelper = new GmailResponseHandler(); + $apiResponse = json_decode($mail_result, true); + $res['zepto_api'] = $apiResponse; + + if (isset($apiResponse['error'])) { $response = $res; $MailDataHelper->receive_and_distribute_param_to_functions($response); return json_encode([ 'status' => 'failed', - 'code' => 500, - 'data' => $msg - ], 500); + 'code' => 404, + 'message' => 'Email Sent Failed...' . $emaill, + '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...' . $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 = []) { $model = new JobModel();