ম্যাজেন্টো: ইমেলগুলিতে ফাইল সংযুক্তি প্রেরণ করুন


9

একটি কাস্টম মডিউলে, আমি ইমেলগুলি প্রেরণে এই ফাংশনটি ব্যবহার করি:

public function sendMail($errorCod, $errorMsg) {

    $mail = Mage::getModel('core/email');

    $recipients = array(
            Mage::getStoreConfig('trans_email/ident_custom1/name') => Mage::getStoreConfig('trans_email/ident_custom1/email'),  
            Mage::getStoreConfig('trans_email/ident_custom2/name') => Mage::getStoreConfig('trans_email/ident_custom2/email')
    );

    foreach ($recipients as $recipient):
        $mail->setToEmail($recipient);

        $mailBody  = "<b>Error Code: </b>".$errorCod."<br />";
        $mailBody .= "<b>Error Massage: </b>".$errorMsg."<br />";

        $mail->setBody($mailBody);
        $mail->setSubject('Lorem Ipsum');
        $mail->setFromEmail(Mage::getStoreConfig('trans_email/ident_general/email'));
        $mail->setFromName("Lorem Ipsum");
        $mail->setType('html');

        try {
            $mail->send();
        }
        catch (Exception $e) {
    }

    endforeach;

}

আমি একই ইমেলটিতে 2 টি সংযুক্তি ফাইল প্রেরণের চেষ্টা করি।

আমি কীভাবে এটি করতে পারি, ম্যাগ_কোড়_মোডেল_ ইমেইল_এম্পলেট মডেলটি ব্যবহার না করে।

ধন্যবাদ সাহায্যের জন্য অনেক।

উত্তর:


14

Zend_Mail ব্যবহার করার চেষ্টা করুন। দেখা:

public function sendMail($errorCod = "", $errorMsg = "")
{

    $mail = new Zend_Mail('utf-8');

    $recipients = array(
        Mage::getStoreConfig('trans_email/ident_custom1/name') => Mage::getStoreConfig('trans_email/ident_custom1/email'),
        Mage::getStoreConfig('trans_email/ident_custom2/name') => Mage::getStoreConfig('trans_email/ident_custom2/email'),
    );
    $mailBody   = "<b>Error Code: </b>" . $errorCod . "<br />";
    $mailBody .= "<b>Error Massage: </b>" . $errorMsg . "<br />";
    $mail->setBodyHtml($mailBody)
        ->setSubject('Lorem Ipsum')
        ->addTo($recipients)
        ->setFrom(Mage::getStoreConfig('trans_email/ident_general/email'), "FromName");

    //file content is attached
    $file       = Mage::getBaseDir('var') . DS . 'log' . DS . 'exception.log';
    $attachment = file_get_contents($file);
    $mail->createAttachment(
        $attachment,
        Zend_Mime::TYPE_OCTETSTREAM,
        Zend_Mime::DISPOSITION_ATTACHMENT,
        Zend_Mime::ENCODING_BASE64,
        'attachment_1.log'
    );
    $file       = Mage::getBaseDir('var') . DS . 'log' . DS . 'system.log';
    $attachment = file_get_contents($file);
    $mail->createAttachment(
        $attachment,
        Zend_Mime::TYPE_OCTETSTREAM,
        Zend_Mime::DISPOSITION_ATTACHMENT,
        Zend_Mime::ENCODING_BASE64,
        'attachment_2.log'
    );

    try {
        $mail->send();
    } catch (Exception $e) {
        Mage::logException($e);
    }
}

হুবহু, আমি কিছুক্ষণ আগে Zend_Mail এর সাথে এই কার্যকারিতাটি বাস্তবায়ন করেছি।
আন্না ভলক্ল

শুধুমাত্র ইস্যু আমি এই সাথে আছে এটা অনুমতি নেই সার্ভার নিজেই প্রেরককে (যদি আপনি জন্য ইমেল হেডার তাকান হলে আপনি একটি শেয়ার্ড হোস্টিং সার্ভারে করছি, যদি আপনি একটি প্রেরক সেট নির্বিশেষেReceived-SPF:
আমেরিকার হরিণবিশেষ

ম্যাজেন্টো ইতিমধ্যে সংযুক্তি সহ ইমেল প্রেরণা পরিচালনা করে, আমি এর কার্যাদি বাইপাস করার জন্য এটি প্রাসঙ্গিক বলে মনে করি না
নির্ভরতাহেল

6

এখানে অন্য একটি উত্তর পেতে আপনি আবারও লিখতে পারেন এবং Mage/Core/Model/Email/Template.phpএকটি addAttachmentফাংশন তৈরি করতে পারেন । এই উদাহরণটি একটি পিডিএফ যুক্ত করবে তবে এটিকে যে কোনও ফাইল টাইপের সাথে কাজ করতে আপনি এটি প্রসারিত করতে পারেন।

public function addAttachment(Zend_Pdf $pdf){
    $file = $pdf->render();
    $attachment = $this->getMail()->createAttachment($file);
    $attachment->type = 'application/pdf';
    $attachment->filename = 'yourfile.pdf';
}

3

সংযুক্তি ফাইল সহ মেল প্রেরণের জন্য এই কোডটি কোনও পিএইচটিএমএল বা নিয়ামকটিতে অনুলিপি করুন:

  $mailTemplate = Mage::getModel('core/email_template');
  $mailTemplate->setSenderName('Sender Name'); 
  $mailTemplate->setSenderEmail('sender@sender.email');
  $mailTemplate->setTemplateSubject('Subject Title');
  $mailTemplate->setTemplateText('Body Text');
  // add attachment
  $mailTemplate->getMail()->createAttachment(
          file_get_contents(Mage::getBaseDir('base') . '/media/file/file.pdf'), //location of file
          Zend_Mime::TYPE_OCTETSTREAM,
          Zend_Mime::DISPOSITION_ATTACHMENT,
          Zend_Mime::ENCODING_BASE64,
          'file.pdf'
  );
  $mailTemplate->send('toemail@email.com','subject','set message');

ধন্যবাদ এটি কাজ করছে। তবে শেষ লাইনে 'সাবজেক্ট' এবং 'সেট মেসেজ' এর ব্যবহার কী? কারণ আমি দেখতে পাচ্ছি যে সাবজেক্টটি ইতিমধ্যে 4 লাইন সেট করেছে এবং বার্তাটি 5 নং লাইনে সেট করা আছে?
সর্বজ্ঞ

ধন্যবাদ @ আমাকে আপনার কোডটি পর্যবেক্ষক হিসাবে ব্যবহার করুন প্রিন্ট করুন :)
রাকেশ দোঙ্গা

হ্যাঁ, সরাসরি জেন্ড_মেল ব্যবহার করার দরকার নেই
নির্ভরতাহেল

2

// 1 আমি // আপলোড করা চিত্রগুলি সংরক্ষণের জন্য মিডিয়া ডিরেক্টরিতে অনুরোধের উদ্ধৃতি ফোল্ডারটি ব্যবহার করেছি

// 2 লেনদেনের ইমেলটি পাস করার জন্য কাস্টম ভেরিয়েবলের একটি অ্যারে রয়েছে // ম্যাগেন্টো অ্যাডমিনে ইমেইল টেম্পলেট তৈরি করা হয়েছিল এবং এর টেম্পলেট আইডি 3

// কোড ম্যাজেন্টো 1.9.1.0 এ পরীক্ষা করা হয়েছে

// কোড নীচে শুরু হয়

$uploadfilename = '';

if( !empty($_FILES["rfloorplanattachment"]["name"])  )
{

    $image_ext = end(explode('.',$_FILES["rfloorplanattachment"]["name"]));
    $allowed_ext =  array('gif','png' ,'jpg','jpeg','pdf','doc','docx','rtf','odt');

    $uploadfilename = md5(substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, rand(1,100).rand(1,100))).str_replace(" ","_",$_FILES["rfloorplanattachment"]["name"]); 
    $source_upl         = $_FILES["rfloorplanattachment"]["tmp_name"];
    $target_path_upl = Mage::getBaseDir('media').DS.'requestquote'.DS.$uploadfilename;  
    if(in_array($image_ext ,$allowed_ext ) ) {
        @move_uploaded_file($source_upl, $target_path_upl);
    }
}


$senderName = Mage::getStoreConfig('trans_email/ident_general/name');
$senderEmail = Mage::getStoreConfig('trans_email/ident_general/email');

$templateId = 3;
$sender = Array('name' => $senderName,'email' => $senderEmail);


$requestquotesvars = array(
            'firmname'     =>  $customer->getFirstname()
        );


$emaiName = 'Request Quote Firms';

$storeId = Mage::app()->getStore()->getId();

$translate = Mage::getSingleton('core/translate');
$transactionalEmail = Mage::getModel('core/email_template');
if(file_exists(Mage::getBaseDir('media').DS.'requestquote'.DS.$uploadfilename) )
{
$transactionalEmail->getMail()
                ->createAttachment(
        file_get_contents(Mage::getBaseDir('media').DS.'requestquote'.DS.$uploadfilename),
        Zend_Mime::TYPE_OCTETSTREAM,
        Zend_Mime::DISPOSITION_ATTACHMENT,
        Zend_Mime::ENCODING_BASE64,
        basename($uploadfilename)
    );
}
$transactionalEmail->sendTransactional($templateId, $sender, $companymail, $emailName, $requestquotesvars, $storeId);
$translate->setTranslateInline(true);

   unlink(Mage::getBaseDir('media').DS.'requestquote'.DS.$uploadfilename);

2

উপভোগ করুন: কাজের উদাহরণ

$mail = new Zend_Mail();
$mail->setType(Zend_Mime::MULTIPART_RELATED);
$mail->setBodyHtml($html_body);
$mail->setFrom('support@example.com', 'Example');
$mail->addTo('your_email@gmail.com', 'Arslan');
$mail->setSubject('Sending email using Zend Framework');
$dir = Mage::getBaseDir();
$path = "test.html";  // any file named test.html at root
$file = $mail->createAttachment(file_get_contents($path));
$file ->type        = 'text/csv';
$file ->disposition = Zend_Mime::DISPOSITION_INLINE;
$file ->encoding    = Zend_Mime::ENCODING_BASE64;
$file ->filename    = 'test.html';
try {
    //Confimation E-Mail Send
    $mail->send();
}
catch(Exception $error) {
    Mage::getSingleton('core/session')->addError($error->getMessage());
    return false;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.