/** * Execute notification * * @return bool */ public function notify() { global $ilSetting; if (!$this->email) { return false; } $this->mailer->To($this->email); $from = $ilSetting->get('mail_external_sender_noreply'); if ($from) { $this->mailer->From($from); } $this->mailer->Subject($this->getSubject()); $this->mailer->Body($this->getBody()); if ($this->attach_certificate) { $this->mailer->Attach($this->certificate->getFilePath()); } $this->mailer->Send(); return true; }
function sendMail($sid, $to, $cc, $bcc, $sender, $subject, $message, $attach) { $this->initAuth($sid); $this->initIlias(); if (!$this->__checkSession($sid)) { return $this->__raiseError($this->__getMessage(), $this->__getMessageCode()); } global $ilLog; include_once 'Services/Mail/classes/class.ilMimeMail.php'; $mmail = new ilMimeMail(); $mmail->autoCheck(false); $mmail->From($sender); $mmail->To(explode(',', $to)); $mmail->Subject($subject); $mmail->Body($message); if ($cc) { $mmail->Cc(explode(',', $cc)); } if ($bcc) { $mmail->Bcc(explode(',', $bcc)); } if ($attach) { // mjansen: switched separator from "," to "#:#" because of mantis bug #6039 // for backward compatibility we have to check if the substring "#:#" exists as leading separator // otherwise we should use ";" if (strpos($attach, '#:#') === 0) { $attach = substr($attach, strlen('#:#')); $attachments = explode('#:#', $attach); } else { $attachments = explode(',', $attach); } foreach ($attachments as $attachment) { $mmail->Attach($attachment); } } $mmail->Send(); $ilLog->write('SOAP: sendMail(): ' . $to . ', ' . $cc . ', ' . $bcc); return true; }
/** * send mime mail using class.ilMimeMail.php * All external mails are send to SOAP::sendMail starting a kind of background process * @param string of recipients * @param string of recipients * @param string of recipients * @param string subject * @param string message * @param array attachments * @param bool prevent soap * @access public * @return array of saved data */ function sendMimeMail($a_rcp_to, $a_rcp_cc, $a_rcp_bcc, $a_m_subject, $a_m_message, $a_attachments, $a_no_soap = false) { include_once "Services/Mail/classes/class.ilMimeMail.php"; #var_dump("<pre>",$a_rcp_to,$a_rcp_cc,$a_rcp_bcc,$a_m_subject,$a_m_message,$a_attachments,"<pre>"); #$inst_name = $this->ilias->getSetting("inst_name") ? $this->ilias->getSetting("inst_name") : "ILIAS 4"; #$a_m_subject = "[".$inst_name."] ".$a_m_subject; $a_m_subject = self::getSubjectPrefix() . ' ' . $a_m_subject; $sender = $this->getMimeMailSender(); // #10854 if ($this->isSOAPEnabled() && !$a_no_soap) { // Send per soap include_once 'Services/WebServices/SOAP/classes/class.ilSoapClient.php'; $soap_client = new ilSoapClient(); $soap_client->setResponseTimeout(1); $soap_client->enableWSDL(true); $soap_client->init(); $attachments = array(); $a_attachments = $a_attachments ? $a_attachments : array(); foreach ($a_attachments as $attachment) { $attachments[] = $this->mfile->getAbsolutePath($attachment); } // mjansen: switched separator from "," to "#:#" because of mantis bug #6039 $attachments = implode('#:#', $attachments); // mjansen: use "#:#" as leading delimiter if (strlen($attachments)) { $attachments = "#:#" . $attachments; } $soap_client->call('sendMail', array($_COOKIE['PHPSESSID'] . '::' . $_COOKIE['ilClientId'], $a_rcp_to, $a_rcp_cc, $a_rcp_bcc, $sender, $a_m_subject, $a_m_message, $attachments)); return true; } else { // send direct include_once "Services/Mail/classes/class.ilMimeMail.php"; $mmail = new ilMimeMail(); $mmail->autoCheck(false); $mmail->From($sender); $mmail->To($a_rcp_to); // Add installation name to subject $mmail->Subject($a_m_subject); $mmail->Body($a_m_message); if ($a_rcp_cc) { $mmail->Cc($a_rcp_cc); } if ($a_rcp_bcc) { $mmail->Bcc($a_rcp_bcc); } if (is_array($a_attachments)) { foreach ($a_attachments as $attachment) { $mmail->Attach($this->mfile->getAbsolutePath($attachment)); } } $mmail->Send(); } }
public function __sendBill($bookings) { global $tpl, $ilSetting; $i = 0; include_once './Services/UICore/classes/class.ilTemplate.php'; include_once './Services/Utilities/classes/class.ilUtil.php'; include_once './Services/Payment/classes/class.ilPaymentSettings.php'; include_once './Services/Payment/classes/class.ilPaymentShoppingCart.php'; include_once 'Services/Mail/classes/class.ilMimeMail.php'; // $psc_obj = new ilPaymentShoppingCart($this->user_obj); $genSet = ilPaymentSettings::_getInstance(); $currency = $genSet->get('currency_unit'); // $tpl = new ilTemplate('./Services/Payment/templates/default/tpl.pay_bill.html', true, true, true); $tpl = new ilTemplate('tpl.pay_bill.html', true, true, 'Services/Payment'); if ($tpl->placeholderExists('HTTP_PATH')) { $http_path = ilUtil::_getHttpPath(); $tpl->setVariable('HTTP_PATH', $http_path); } ilDatePresentation::setUseRelativeDates(false); $tpl->setVariable('DATE', utf8_decode(ilDatePresentation::formatDate(new ilDate($bookings['list'][$i]['order_date'], IL_CAL_UNIX)))); $tpl->setVariable('TXT_CREDIT', utf8_decode($this->lng->txt('credit'))); $tpl->setVariable('TXT_DAY_OF_SERVICE_PROVISION', $this->lng->txt('day_of_service_provision')); include_once './Services/Payment/classes/class.ilPayMethods.php'; $str_paymethod = ilPayMethods::getStringByPaymethod($bookings['list'][$i]['b_pay_method']); if (strlen(trim($bookings['transaction_extern']))) { $tpl->setVariable('TXT_EXTERNAL_BILL_NO', str_replace('%s', $str_paymethod, utf8_decode($this->lng->txt('external_bill_no')))); $tpl->setVariable('EXTERNAL_BILL_NO', $bookings['transaction_extern']); } $tpl->setVariable('TXT_POSITION', $this->lng->txt('position')); $tpl->setVariable('TXT_AMOUNT', $this->lng->txt('amount')); $tpl->setVariable('TXT_UNIT_PRICE', utf8_decode($this->lng->txt('unit_price'))); $tpl->setVariable('VENDOR_ADDRESS', nl2br(utf8_decode($genSet->get('address')))); $tpl->setVariable('VENDOR_ADD_INFO', nl2br(utf8_decode($genSet->get('add_info')))); $tpl->setVariable('VENDOR_BANK_DATA', nl2br(utf8_decode($genSet->get('bank_data')))); $tpl->setVariable('TXT_BANK_DATA', utf8_decode($this->lng->txt('pay_bank_data'))); $tpl->setVariable('CUSTOMER_FIRSTNAME', utf8_decode($this->user_obj->getFirstname())); $tpl->setVariable('CUSTOMER_LASTNAME', utf8_decode($this->user_obj->getLastname())); if ($bookings['po_box'] == '') { $tpl->setVariable('CUSTOMER_STREET', utf8_decode($bookings['street'])); // contains also housenumber } else { $tpl->setVariable('CUSTOMER_STREET', utf8_decode($bookings['po_box'])); } $tpl->setVariable('CUSTOMER_ZIPCODE', utf8_decode($bookings['zipcode'])); $tpl->setVariable('CUSTOMER_CITY', utf8_decode($bookings['city'])); $tpl->setVariable('CUSTOMER_COUNTRY', utf8_decode($bookings['country'])); $tpl->setVariable('BILL_NO', $bookings['transaction']); $tpl->setVariable('DATE', date('d.m.Y')); $tpl->setVariable('TXT_BILL', utf8_decode($this->lng->txt('pays_bill'))); $tpl->setVariable('TXT_BILL_NO', utf8_decode($this->lng->txt('pay_bill_no'))); $tpl->setVariable('TXT_DATE', utf8_decode($this->lng->txt('date'))); $tpl->setVariable('TXT_ARTICLE', utf8_decode($this->lng->txt('pay_article'))); $tpl->setVariable('TXT_VAT_RATE', utf8_decode($this->lng->txt('vat_rate'))); $tpl->setVariable('TXT_VAT_UNIT', utf8_decode($this->lng->txt('vat_unit'))); $tpl->setVariable('TXT_PRICE', utf8_decode($this->lng->txt('price_a'))); for ($i = 0; $i < count($bookings['list']); $i++) { $tmp_pobject = new ilPaymentObject($this->user_obj, $bookings['list'][$i]['pobject_id']); $assigned_coupons = ''; if (!empty($_SESSION['coupons'][$this->session_var])) { foreach ($_SESSION['coupons'][$this->session_var] as $coupon) { $this->coupon_obj->setId($coupon['pc_pk']); $this->coupon_obj->setCurrentCoupon($coupon); if ($this->coupon_obj->isObjectAssignedToCoupon($tmp_pobject->getRefId())) { $assigned_coupons .= '<br />' . $this->lng->txt('paya_coupons_coupon') . ': ' . $coupon['pcc_code']; } } } $tpl->setCurrentBlock('loop'); $tpl->setVariable('LOOP_POSITION', $i + 1); $tpl->setVariable('LOOP_AMOUNT', '1'); $tpl->setVariable('LOOP_TXT_PERIOD_OF_SERVICE_PROVISION', utf8_decode($this->lng->txt('period_of_service_provision'))); $tpl->setVariable('LOOP_OBJ_TYPE', utf8_decode($this->lng->txt($bookings['list'][$i]['type']))); $tpl->setVariable('LOOP_TITLE', $tmp = utf8_decode($bookings['list'][$i]['title'])); $tpl->setVariable('LOOP_COUPON', utf8_decode($assigned_coupons)); $tpl->setVariable('LOOP_TXT_ENTITLED_RETRIEVE', utf8_decode($this->lng->txt('pay_entitled_retrieve'))); if ($bookings['list'][$i]['duration'] == 0 && $bookings['list'][$i]['access_enddate'] == NULL) { $tpl->setVariable('LOOP_DURATION', utf8_decode($this->lng->txt('unlimited_duration'))); } else { $access_startdate = utf8_decode(ilDatePresentation::formatDate(new ilDate($bookings['list'][$i]['access_startdate'], IL_CAL_DATE))); $access_enddate = utf8_decode(ilDatePresentation::formatDate(new ilDate($bookings['list'][$i]['access_enddate'], IL_CAL_DATE))); $tmp_duration = $access_startdate . ' - ' . $access_enddate; if ($bookings['list'][$i]['duration'] > 0) { $tmp_duration .= ' / ' . $bookings['list'][$i]['duration'] . ' ' . utf8_decode($this->lng->txt('paya_months')); } $tpl->setVariable('LOOP_DURATION', $tmp_duration); } #$currency = $bookings['list'][$i]['currency_unit']; $tpl->setVariable('LOOP_VAT_RATE', number_format($bookings['list'][$i]['vat_rate'], 2, ',', '.') . ' %'); $tpl->setVariable('LOOP_VAT_UNIT', number_format($bookings['list'][$i]['vat_unit'], 2, ',', '.') . ' ' . $currency); $tpl->setVariable('LOOP_PRICE', number_format($bookings['list'][$i]['price'], 2, ',', '.') . ' ' . $currency); $tpl->setVariable('LOOP_UNIT_PRICE', number_format($bookings['list'][$i]['price'], 2, ',', '.') . ' ' . $currency); $tpl->parseCurrentBlock('loop'); $bookings['total'] += (double) $bookings[$i]['price']; $bookings['total_vat'] += (double) $bookings[$i]['vat_unit']; #$bookings['total_discount'] +=(float) $bookings[$i]['discount']; unset($tmp_pobject); $sub_total_amount = $bookings['total']; } $bookings['total'] += $bookings['total_discount']; if ($bookings['total_discount'] < 0) { $tpl->setCurrentBlock('cloop'); $tpl->setVariable('TXT_SUBTOTAL_AMOUNT', utf8_decode($this->lng->txt('pay_bmf_subtotal_amount'))); $tpl->setVariable('SUBTOTAL_AMOUNT', number_format($sub_total_amount, 2, ',', '.') . ' ' . $currency); $tpl->setVariable('TXT_COUPON', utf8_decode($this->lng->txt('paya_coupons_coupon'))); $tpl->setVariable('BONUS', number_format($bookings['total_discount'], 2, ',', '.') . ' ' . $currency); $tpl->parseCurrentBlock(); } if ($bookings['total'] < 0) { $bookings['total'] = 0.0; // $bookings['total_vat'] = 0.0; } $total_net_price = $sub_total_amount - $bookings['total_vat']; $tpl->setVariable('TXT_TOTAL_NETPRICE', utf8_decode($this->lng->txt('total_netprice'))); $tpl->setVariable('TOTAL_NETPRICE', number_format($total_net_price, 2, ',', '.') . ' ' . $currency); $tpl->setVariable('TXT_TOTAL_AMOUNT', utf8_decode($this->lng->txt('pay_bmf_total_amount'))); $tpl->setVariable('TOTAL_AMOUNT', number_format($bookings['total'], 2, ',', '.') . ' ' . $currency); if ($bookings['total_vat'] > 0) { $tpl->setVariable('TOTAL_VAT', number_format($bookings['total_vat'], 2, ',', '.') . ' ' . $currency); $tpl->setVariable('TXT_TOTAL_VAT', utf8_decode($this->lng->txt('plus_vat'))); } if (1 == $bookings['list'][0]['b_pay_method']) { $tpl->setVariable('TXT_PAYMENT_TYPE', utf8_decode($this->lng->txt('pay_unpayed_bill'))); } else { $tpl->setVariable('TXT_PAYMENT_TYPE', utf8_decode($this->lng->txt('pay_payed_bill'))); } if (!@file_exists($genSet->get('pdf_path'))) { ilUtil::makeDir($genSet->get('pdf_path')); } $file_name = time(); if (@file_exists($genSet->get('pdf_path'))) { ilUtil::html2pdf($tpl->get(), $genSet->get('pdf_path') . '/' . $file_name . '.pdf'); } if (@file_exists($genSet->get('pdf_path') . '/' . $file_name . '.pdf') && $this->user_obj->getEmail() != '' && $ilSetting->get('admin_email') != '') { $m = new ilMimeMail(); // create the mail $m->From($ilSetting->get('admin_email')); $m->To($this->user_obj->getEmail()); $m->Subject($this->lng->txt('pay_message_subject')); // if there is no mailbillingtext use this as standard $message = $this->lng->txt('pay_message_hello') . ' ' . $this->user_obj->getFirstname() . ' ' . $this->user_obj->getLastname() . ",\n\n"; $message .= $this->lng->txt('pay_message_thanks') . "\n\n"; $message .= $this->lng->txt('pay_message_attachment') . "\n\n"; $message .= $this->lng->txt('pay_message_regards') . "\n\n"; $message .= strip_tags($genSet->get('address')); //replacePlaceholders... $billing_text = $genSet->getMailBillingText(); if (!$billing_text) { $message = ''; } if ($genSet->getMailUsePlaceholders() == 1) { include_once './Services/Payment/classes/class.ilBillingMailPlaceholdersPropertyGUI.php'; $message = ilBillingMailPlaceholdersPropertyGUI::replaceBillingMailPlaceholders($billing_text, $this->user_obj->getId()); } $m->Body($message); // set the body $m->Attach($genSet->get('pdf_path') . '/' . $file_name . '.pdf', 'application/pdf'); // attach a file of type image/gif if ($genSet->get('attach_sr_invoice') == 1) { require_once 'Services/RTE/classes/class.ilRTE.php'; $regulations = ilRTE::_replaceMediaObjectImageSrc($genSet->get('statutory_regulations'), 1); $reg_file_name = 'statutory_regulations'; if (@file_exists($genSet->get('pdf_path'))) { ilUtil::html2pdf($regulations, $genSet->get('pdf_path') . '/' . $reg_file_name . '.pdf'); } $m->Attach($genSet->get('pdf_path') . '/' . $reg_file_name . '.pdf', 'application/pdf'); // attach a file of type image/gif } $m->Send(); // send the mail } @unlink($genSet->get('pdf_path') . '/' . $file_name . '.html'); @unlink($genSet->get('pdf_path') . '/' . $file_name . '.pdf'); unset($current_booking_id); unset($pobject); unset($_SESSION['coupons'][$this->session_var]); $this->ctrl->redirectByClass('ilShopBoughtObjectsGUI', ''); }
/** * Sends the mail with its object properties as MimeMail * It first tries to read the mail body, subject and sender address from posted named formular fields. * If no field values found the defaults are used. * Placehoders will be replaced by the appropriate data. * @access public * @param object ilUser */ function send() { global $ilSetting; $user =& $this->getUser(); if (!$user->getEmail()) { return false; } // determine language and get account mail data // fall back to default language if acccount mail data is not given for user language. $amail = $this->readAccountMail($user->getLanguage()); if ($amail['body'] == '' || $amail['subject'] == '') { $amail = $this->readAccountMail($ilSetting->get('language')); $lang = $ilSetting->get('language'); } else { $lang = $user->getLanguage(); } // fallback if mail data is still not given if ($this->areLangVariablesUsedAsFallback() && ($amail['body'] == '' || $amail['subject'] == '')) { $lang = $user->getLanguage(); $tmp_lang = new ilLanguage($lang); // mail subject $mail_subject = $tmp_lang->txt('reg_mail_subject'); $timelimit = ""; if (!$user->checkTimeLimit()) { $tmp_lang->loadLanguageModule("registration"); // #6098 $timelimit_from = new ilDateTime($user->getTimeLimitFrom(), IL_CAL_UNIX); $timelimit_until = new ilDateTime($user->getTimeLimitUntil(), IL_CAL_UNIX); $timelimit = ilDatePresentation::formatPeriod($timelimit_from, $timelimit_until); $timelimit = "\n" . sprintf($tmp_lang->txt('reg_mail_body_timelimit'), $timelimit) . "\n\n"; } // mail body $mail_body = $tmp_lang->txt('reg_mail_body_salutation') . ' ' . $user->getFullname() . ",\n\n" . $tmp_lang->txt('reg_mail_body_text1') . "\n\n" . $tmp_lang->txt('reg_mail_body_text2') . "\n" . ILIAS_HTTP_PATH . '/login.php?client_id=' . CLIENT_ID . "\n"; $mail_body .= $tmp_lang->txt('login') . ': ' . $user->getLogin() . "\n"; $mail_body .= $tmp_lang->txt('passwd') . ': ' . $this->u_password . "\n"; $mail_body .= "\n" . $timelimit; $mail_body .= $tmp_lang->txt('reg_mail_body_text3') . "\n\r"; $mail_body .= $user->getProfileAsString($tmp_lang); } else { // replace placeholders $mail_subject = $this->replacePlaceholders($amail['subject'], $user, $amail, $lang); $mail_body = $this->replacePlaceholders($amail['body'], $user, $amail, $lang); } // send the mail include_once 'Services/Mail/classes/class.ilMimeMail.php'; $mmail = new ilMimeMail(); $mmail->autoCheck(false); $mmail->From($ilSetting->get('admin_email')); $mmail->Subject($mail_subject); $mmail->To($user->getEmail()); $mmail->Body($mail_body); foreach ($this->attachments as $filename => $display_name) { $mmail->Attach($filename, "", "attachment", $display_name); } /* echo "<br><br><b>From</b>:".$ilSetting->get("admin_email"); echo "<br><br><b>To</b>:".$user->getEmail(); echo "<br><br><b>Subject</b>:".$mail_subject; echo "<br><br><b>Body</b>:".$mail_body; return true;*/ $mmail->Send(); return true; }