-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpg_sendmail--0.0.2.sql
More file actions
58 lines (52 loc) · 2.08 KB
/
pg_sendmail--0.0.2.sql
File metadata and controls
58 lines (52 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
* Copyright (c) 2017-2025 Igor Popov <ipopovi@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pg_sendmail" to load this file. \quit
CREATE OR REPLACE FUNCTION mail(mailfrom text, rcptto text, subject text, msg_body text, headers text)
RETURNS boolean AS
'$libdir/pg_sendmail', 'mail'
LANGUAGE C VOLATILE STRICT;
CREATE OR REPLACE FUNCTION sendmail(
text,
text,
text,
text)
RETURNS boolean AS
$BODY$declare
mailfrom alias for $1;
rcptto alias for $2;
subject alias for $3;
msg_body alias for $4;
str_part_subj text;
subject_enc text := null;
begin
for str_part_subj in (select substring(subject from n for 20) from generate_series(1, length(subject), 20) n) loop
if subject_enc is not null then
subject_enc := subject_enc || E'\n ' || '=?utf-8?B?' || encode(convert_from(convert_to(str_part_subj , 'utf-8'), 'latin-1')::bytea, 'base64')::text || '?=';
else
subject_enc := '=?utf-8?B?' || encode(convert_from(convert_to(str_part_subj, 'utf-8'), 'latin-1')::bytea, 'base64')::text || '?=';
end if;
end loop;
return mail( mailfrom,
rcptto,
subject_enc,
convert_from(convert_to(msg_body, 'utf-8'), 'latin-1')::text,
E'MIME-Version: 1.0\nContent-Type: text/plain; charset=\"utf-8\"\nContent-Transfer-Encoding: 8bit');
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION sendmail(text, text, text, text) OWNER TO postgres;