Citrix - PB - Электронная почта - PullRequest
1 голос
/ 03 января 2012

Мы используем приложение PB двумя способами: один - доступ через сервер Citrix, а другой - автономный.

Приложение PB 11.5, разработанное мной, я использую через Citrix XenApp - Приложения - В этом приложении PB мы используем функциональность, которая отправляет уведомления по электронной почте нашим клиентам, не открывая электронную почту. Но это относится к профилю внешнего вида «Outlook» или «Профиль Outlook по умолчанию». Иногда это не работает, а иногда это работает. Некоторым из пользователей не удалось отправить электронное письмо хотя бы раз из Citrix. Поэтому я проверил настройки профиля конкретного пользователя в следующем каталоге: / ctxrprof / userid / Application Data / Microsoft / Outlook.

Примечание: в автономном приложении проблем нет, уведомления по электронной почте отправляются клиентам правильно.

Я новичок в этой среде Citrix. Пожалуйста, кто-нибудь может помочь мне решить эту проблему.

Спасибо !!!

1 Ответ

0 голосов
/ 26 марта 2015

Если вы используете Oracle, отправка почты через Oracle будет намного проще, если вы используете Citrix. Настройки почты выполняются на сервере через пакет utl_smtp в oracle.

CREATE OR REPLACE PROCEDURE mail
(
  sender      IN VARCHAR2,
  recipient   IN VARCHAR2,
  ccrecipient IN VARCHAR2,
  subject     IN VARCHAR2,
  message     IN VARCHAR2
 )  IS

 connection utl_smtp.connection;
 mailhost VARCHAR2(30) := 'displacedguy.com';
 header VARCHAR2(1000);

BEGIN

  -- Start the connection.

  connection := utl_smtp.open_connection(mailhost,25);

  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||UTL_TCP.CRLF||
     'From: '||sender||''||UTL_TCP.CRLF||
  'Subject: '||subject||UTL_TCP.CRLF||
       'To: '||recipient||UTL_TCP.CRLF||
       'CC: '||ccrecipient;

  -- Handshake with the SMTP server

  utl_smtp.helo(connection, mailhost);
  utl_smtp.mail(connection, sender);
  utl_smtp.rcpt(connection, recipient);
  utl_smtp.rcpt(connection, ccrecipient);
  utl_smtp.open_data(connection);

  -- Write the header

  utl_smtp.write_data(connection, header);

  utl_smtp.write_data(connection, UTL_TCP.CRLF ||message);
  utl_smtp.close_data(connection);
  utl_smtp.quit(connection);

EXCEPTION
  WHEN UTL_SMTP.INVALID_OPERATION THEN
    dbms_output.put_line(' Invalid Operation(s) in SMTP transaction.');
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
    dbms_output.put_line(' Problems sending email try again later.');
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
    dbms_output.put_line(' Error(s) in SMTP transaction.');   
END;

Для использования в PowerBuilder создайте универсальный объект транзакции, если у вас его еще нет, добавьте определение RPCFUNC для вашего пакета utl_smtp и присвойте ему псевдоним. После определения вы можете вызвать функцию пакета с помощью sqlca.sendmail (a, b, c, d); Вы можете назвать это как функцию.

На самом деле это не ответ, а обходной путь для тех, кто использует Oracle. Думал, что стоит упомянуть.

...