Search code examples
excelqcubed

How to send a excel attachment in QCubed


This is what i am trying

$attach is the path to my excel => c:/xampp/htdocs/project/excel.xlsx

Notification::SendEmail('[email protected]', '[email protected]', "Subject","message", $attach);

If the$attach is removed then the email will go. But it fails if i add the attachment

SendEmail function

    public static function SendEmail($mixFrom, $mixTo, $strSubject, $strMessage, $mixAttachment = null, $mixCc = null, $mixBcc = null) {
    // Declaration of Local Variables
    $strSMTPHost = QApplication::getSettingValue(Mssetting::SMTP_HOST);
    $strSMTPPort = QApplication::getSettingValue(Mssetting::SMTP_PORT);
    $objMessage = Swift_Message::newInstance($strSubject, $strMessage, 'text/html');

    // Set the source/destination data
    $objMessage->setFrom($mixFrom);
    $objMessage->setTo($mixTo);
    $objMessage->setCc($mixCc);
    $objMessage->setBcc($mixBcc);

    // Check for attachments
    if(is_array($mixAttachment)) {
        foreach($mixAttachment as $strFilePath)
            $objMessage->attach (Swift_Attachment::fromPath ($strFilePath));
    }
    elseif(is_string($mixAttachment)) {
        $objMessage->attach(Swift_Attachment::fromPath($mixAttachment));
    }

    // Setup the transport
    $objTransport = Swift_SmtpTransport::newInstance();
    if($strSMTPHost) $objTransport->setHost ($strSMTPHost);
    if($strSMTPPort) $objTransport->setPort($strSMTPPort);

    // Setup the mailer
    $objMailer = Swift_Mailer::newInstance($objTransport);

    // Send the message
    $objMailer->send($objMessage, $arrFailures);

    if($arrFailures)
        return $arrFailures;

    return true;
}

Solution

  • I got the answer for this, use this code:

    $Attachment = $file_path;  // path to your excel
    Notification::SendEmail('[email protected]',to@abc,com, "Subject", "Message", $Attachment);
    

    in Notification.php

    class Notification {
    
        public static function SendEmail($mixFrom, $mixTo, $strSubject, $strMessage, $mixAttachment, $mixCc = null, $mixBcc = null) {
        // Declaration of Local Variables
        $strSMTPHost = QApplication::getSettingValue(Mssetting::SMTP_HOST);
        $strSMTPPort = QApplication::getSettingValue(Mssetting::SMTP_PORT);
        $objMessage = Swift_Message::newInstance($strSubject, $strMessage, 'text/html');
    
    
        // Set the source/destination data
        $objMessage->setFrom($mixFrom);
        $objMessage->setTo($mixTo);
        $objMessage->setCc($mixCc);
        $objMessage->setBcc($mixBcc);
    
        // Check for attachments
        if(is_array($mixAttachment)) {
            foreach($mixAttachment as $strFilePath)
                $objMessage->attach (Swift_Attachment::fromPath ($strFilePath));
        }
        elseif(is_string($mixAttachment)) {
            $objMessage->attach(Swift_Attachment::fromPath($mixAttachment));
    
        }
    
        // Setup the transport
        $objTransport = Swift_SmtpTransport::newInstance();
        if($strSMTPHost) $objTransport->setHost ($strSMTPHost);
        if($strSMTPPort) $objTransport->setPort($strSMTPPort);
    
        // Setup the mailer
        $objMailer = Swift_Mailer::newInstance($objTransport);
    
        // Send the message
        $objMailer->send($objMessage, $arrFailures);
    
        if($arrFailures)
            return $arrFailures;
    
        return true;
    }
    

    This will do the work.