Odesílání emailů přes SMTP z databáze ASA7 |
Top |
Seznam témat:
ASA 7 standardně podporuje odesílání emailů přímo z databáze pouze přes rozhraní MAPI. Pokud je žádoucí odesílat poštu také přes SMTP jako to umí ASA 9 a vyšší, je nutné následovat níže uvedený postup. Odesílání přes SMTP je vyžadováno např. při automatickém sledování replikačního procesu. Postup aktivace SMTP na ASA7 1. Na serveru nakopírovat soubor "dbextf_.dll" do \asa\win32\dbextf_.dll 2. Zavést klíčové procedury spuštěním SQL skriptu update.sql 3. Ve Vision ERP v možnostech pro administrátory vyplnit adresu SMTP serveru a odesílací emailovou adresu a otestovat (viz obrázky níže)
Skript update.sql
//call gsetglobalparam(0, 0, 'g_notify_from', 'noreply@domena.cz') //go //call gsetglobalparam(0, 0, 'g_notify_smtp', 'smtp.domena.cz') //go
set temporary option on_error = 'continue' go
create function dbo.xp_real_sendmail_(in recipient long varchar,in subject long varchar default null,in cc_recipient long varchar default null,in bcc_recipient long varchar default null,in query long varchar default null,in "message" long varchar default null,in attachname long varchar default null,in attach_result integer default 0,in echo_error integer default 1,in include_file long varchar default null,in no_column_header integer default 0,in no_output integer default 0,in width integer default 80,in separator char(1) default '\\t',in dbuser long varchar default 'guest',in dbname long varchar default 'master',in type long varchar default null,in include_query integer default 0,in cid integer) returns integer external name 'xp_sendmail@dbextf_' go
create function dbo.xp_real_startsmtp_(in smtp_sender long varchar,in smtp_server long varchar,in smtp_port integer default 25,in timeout integer default 60,in cid integer) returns integer external name 'xp_startsmtp@dbextf_' go
create function dbo.xp_real_stopsmtp_(in cid integer) returns integer external name 'xp_stopsmtp@dbextf_' go
create function dbo.xp_sendmail_(in recipient long varchar,in subject long varchar default null,in cc_recipient long varchar default null,in bcc_recipient long varchar default null,in query long varchar default null,in "message" long varchar default null,in attachname long varchar default null,in attach_result integer default 0,in echo_error integer default 1,in include_file long varchar default null,in no_column_header integer default 0,in no_output integer default 0,in width integer default 80,in separator char(1) default '\\t',in dbuser long varchar default 'guest',in dbname long varchar default 'master',in type long varchar default null,in include_query integer default 0) returns integer on exception resume begin declare recip long varchar; declare subj long varchar; declare cc long varchar; declare bcc long varchar; declare qry long varchar; declare msg long varchar; declare attach long varchar; declare include long varchar; declare cid integer; set recip=cast(recipient as long varchar); if sqlcode <> 0 then set recip=recipient end if; set subj=cast(subject as long varchar); if sqlcode <> 0 then set subj=subject end if; set cc=cast(cc_recipient as long varchar); if sqlcode <> 0 then set cc=cc_recipient end if; set bcc=cast(bcc_recipient as long varchar); if sqlcode <> 0 then set bcc=bcc_recipient end if; set qry=cast(query as long varchar); if sqlcode <> 0 then set qry=query end if; set msg=cast("message" as long varchar); if sqlcode <> 0 then set msg="message" end if; set attach=cast(attachname as long varchar); if sqlcode <> 0 then set attach=attachname end if; set include=cast(include_file as long varchar); if sqlcode <> 0 then set include=include_file end if; set cid=connection_property('Number'); return(xp_real_sendmail_(recip,subj,cc,bcc,qry,msg,attach, attach_result,echo_error,include,no_column_header, no_output,width,separator,dbuser,dbname,type, include_query,cid)) end go
create function dbo.xp_startsmtp_(in smtp_sender long varchar,in smtp_server long varchar,in smtp_port integer default 25,in timeout integer default 60) returns integer on exception resume begin declare sender long varchar; declare server long varchar; declare cid integer; set sender=cast(smtp_sender as long varchar); if sqlcode <> 0 then set sender=smtp_sender end if; set server=cast(smtp_server as long varchar); if sqlcode <> 0 then set server=smtp_server end if; set cid=connection_property('Number'); return(dbo.xp_real_startsmtp_(sender,server,smtp_port,timeout,cid)) end go
create function dbo.xp_stopsmtp_() returns integer begin return(dbo.xp_real_stopsmtp_(connection_property('Number'))) end go
alter procedure DBA.gsendmailsmtp(@address long varchar,@subj long varchar,@body long varchar,@rcode1 integer output,@rcode2 integer output) as begin declare @sender char(128) declare @server char(128) select @sender = value from dba.globals where name = 'g_notify_from' select @server = value from dba.globals where name = 'g_notify_smtp' select @rcode1=5 --unknown error select @rcode2=-1 --no suberror if(isnull(@sender,'') = '') or(isnull(@server,'') = '') begin select @rcode1=4 --wrong params return end execute @rcode2 = xp_startsmtp_ @sender,@server if(@@error <> 0) or(@rcode2 <> 0) begin select @rcode1=1 --init failed return end execute @rcode2 = xp_sendmail_ recipient = @address,subject = @subj,"message" = @body if(@@error <> 0) or(@rcode2 <> 0) begin select @rcode1=2 --send failed return end execute @rcode2 = xp_stopsmtp_ if(@@error <> 0) or(@rcode2 <> 0) begin select @rcode1=3 --close failed return end select @rcode1=0 --OK end go
set temporary option on_error = 'prompt' Související témata |