Initial import
This commit is contained in:
59
postgres.forwarders_out.sql
Normal file
59
postgres.forwarders_out.sql
Normal file
@@ -0,0 +1,59 @@
|
||||
|
||||
CREATE LANGUAGE plpgsql;
|
||||
|
||||
DROP FUNCTION IF EXISTS udf_forwarders_out(TEXT,TEXT,CHAR);
|
||||
|
||||
CREATE FUNCTION udf_forwarders_out( email_str TEXT,
|
||||
vacation_domain TEXT ,
|
||||
list_seperator CHAR
|
||||
)
|
||||
RETURNS TEXT AS $$
|
||||
DECLARE
|
||||
forward_str text;
|
||||
local_email_part TEXT;
|
||||
domain_email_part TEXT;
|
||||
BEGIN
|
||||
|
||||
-- get list of forwarders
|
||||
--
|
||||
SELECT goto INTO forward_str FROM alias WHERE address=email_str;
|
||||
|
||||
-- entferne mailbox emailadresse
|
||||
--
|
||||
forward_str = replace(forward_str, email_str, '' );
|
||||
|
||||
-- entferne vacation adresse
|
||||
--
|
||||
local_email_part = substring(email_str, 1, position('@' in email_str) - 1);
|
||||
domain_email_part = substring(email_str, position('@' in email_str) + 1 );
|
||||
forward_str = replace(forward_str, local_email_part || '#' || domain_email_part || '@' || vacation_domain, '');
|
||||
|
||||
-- enferne doppelte seperatorzeichen
|
||||
--
|
||||
WHILE position( list_seperator || list_seperator in forward_str ) > 0 LOOP
|
||||
forward_str = replace(forward_str, list_seperator || list_seperator , '');
|
||||
END LOOP;
|
||||
|
||||
-- entferne erstes zeichen wenn es das seperatorzeichen ist
|
||||
--
|
||||
IF substring(forward_str,1,1) = list_seperator THEN
|
||||
forward_str = substring(forward_str from 2);
|
||||
END IF;
|
||||
|
||||
|
||||
-- entferne letztes zeichen wenn es das seperatorzeichen ist
|
||||
--
|
||||
IF substring(forward_str from char_length(forward_str)) = list_seperator THEN
|
||||
forward_str = substring(forward_str, 1, char_length(forward_str) - 1);
|
||||
END IF;
|
||||
|
||||
|
||||
-- forward_str = substring(forward_str from char_length(forward_str));
|
||||
|
||||
RETURN forward_str;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
|
||||
SELECT udf_forwarders_out('ckubu@oopen.de','autoreply.oopen.de',',');
|
||||
|
||||
Reference in New Issue
Block a user