sendmail4quercus

<?php
function sendmail($ps_to, $ps_subject, $ps_body) {
  $props = new Java('java.util.Properties');
       
  $props->setProperty('mail.transport.protocol', 'smtp');
  $props->put('mail.smtp.allow8bitmime', "true");
  $props->setProperty('mail.smtp.host', ini_get('SMTP'));
  $props->setProperty('mail.smtp.port', ini_get('smtp_port'));
//   $props->setProperty('mail.smtp.user', ini_get('smtp_username'));
//   $props->setProperty('mail.smtp.password', ini_get('smtp_password'));

  if ('' !== ini_get('smtp_password')) {
     $props->setProperty('mail.smtp.auth', 'true');
   }

  $props->setProperty('mail.from', ini_get('sendmail_from'));
    
  $mailSession = java_class('javax.mail.Session')->getInstance($props, null); //javax.mail.Session
  // $mailSession->setDebug(true);
       
  $transport = $mailSession->getTransport();
       
  $message = new Java('javax.mail.internet.MimeMessage', $mailSession);
       
  $message->setFrom(new Java('javax.mail.internet.InternetAddress', ini_get('sendmail_from')));
       
  //необходимо для русского языка в "теме" письма (подошло также UTF-8):
  $message->setSubject($ps_subject, 'Windows-1251'); // bluebottle.com only renders W1251 right

  //или:
  //message.setText(m_appResources.getString("message.body"), "UTF-8");
  $message->setContent($ps_body, 'text/plain; charset=utf-8');
       
       //
       // String Html = ...;
       // String DefaultCharSet=
       // MimeUtility.getDefaultJavaCharset();
       // msg.setText(MimeUility.encodeText(Html,DefaultCharSet,"B"));
       // msg.send();
       //
       // Q short for Quoted Printable
       // B short for Base64
       //
       
  $addrTo = new Java('javax.mail.internet.InternetAddress', $ps_to);
  //для русского языка в имени получателя (аналогично в имени отправителя):

  //     try {
  //         $addrTo->setPersonal('Иван Левашев', 'utf-8');
  //     } catch (java.io.UnsupportedEncodingException uee) {
  //         System.out.println(uee.getMessage());
  //     }

  $message->addRecipient(java_class('java.lang.Class')->forName('javax.mail.Message$RecipientType')->getField('TO')->get(null), $addrTo);
  // Проверка задания натурального заголовка (работает, проще всего увидеть,задав mailSession.setDebug(true)):
  // $message->setHeader("X-Mailer", "org.sukhoi.mail"); //произвольное указание почтовой программы
       
  $message->setSentDate(new Java('java.util.Date'));
  $message->setHeader('Content-Transfer-Encoding', 'base64'); //должно быть после setText()

  $transport->connect(ini_get('smtp_username'), ini_get('smtp_password'));
  //нужен поток, т.к. возможна долгая операция.
  //сравнить с send();
  //разрешить частичную посылку, если адресов много,чтоб при одном неправильном адресе
  //не прекращало работу.
       
  $transport->sendMessage($message,
               $message->getRecipients(java_class('java.lang.Class')->forName('javax.mail.Message$RecipientType')->getField('TO')->get(null)));
       
  //     //для отладки - список заголовков:
  //     Enumeration msgHeaders = message.getAllHeaders();
  //     System.out.println("HEADERS");
  //     while (msgHeaders.hasMoreElements()) {
  //         Header header = (Header) msgHeaders.nextElement();
  //         System.out.println(header.getName() + "=" + header.getValue());
  //     }
       
  $transport->close();

}
?>
Тэги:
Код для вставки: :: :: :: ГОСТ ::
Поделиться: //