Citrix - PB - 电子邮件

时间:2012-01-03 10:34:16

标签: powerbuilder citrix

我们正在以两种方式使用PB应用程序,一种是通过Citrix服务器访问,另一种是独立访问。

PB 11.5开发的应用程序,我通过Citrix XenApp使用 - 应用程序 - 在这个PB应用程序中,我们使用的功能是在不打开撰写电子邮件的情况下向客户发送电子邮件通知。但它引用了Outlook配置文件“Outlook”或“默认Outlook配置文件”。有时它不起作用,有时它正在工作。对于一些用户来说,至少无法通过Citrix发送电子邮件。所以我在以下// ctxrprof / userid / Application Data / Microsoft / Outlook中检查了特定的用户配置文件设置。

注意:独立应用程序中没有问题,电子邮件通知正确地发送给客户。

我是Citrix环境新手,请有人帮我解决此问题。

感谢!!!

1 个答案:

答案 0 :(得分:0)

如果您正在使用Oracle,那么在使用Citrix时,通过Oracle发送邮件会非常容易。邮件设置是通过oracle中的utl_smtp包在服务器上完成的。

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中使用,请创建一个通用事务对象(如果您还没有),并为您的utl_smtp包添加RPCFUNC定义并为其指定别名友好名称。一旦定义,您可以使用sqlca.sendmail(a,b,c,d)调用包函数;你可以把它称为函数。

这不是一个真正的答案,而是使用Oracle的解决方法。认为值得一提。