Commit | Line | Data |
---|---|---|
dda99898 AC |
1 | structure Remind :> REMIND = |
2 | struct | |
3 | ||
4 | open Config | |
5 | ||
6 | structure C = PgClient | |
7 | ||
8 | fun main _ = | |
9 | let | |
10 | val db = C.conn dbstring | |
11 | ||
12 | fun getEmail [name] = C.stringFromSql name ^ emailSuffix | |
13 | | getEmail row = raise Fail "remind getName" | |
14 | ||
365cac8c | 15 | val names = C.map db getEmail "SELECT WebUserActive.name FROM WebUserActive JOIN Balance ON Balance.name = WebUserActive.name AND bal = Balance.id WHERE amount < 10" |
dda99898 AC |
16 | |
17 | val m = Mail.mopen () | |
18 | in | |
19 | Mail.mwrite (m, "Subject: Reminder of low HCoop balance\n"); | |
20 | Mail.mwrite (m, "From: HCoop Portal <payment"); | |
21 | Mail.mwrite (m, emailSuffix); | |
22 | Mail.mwrite (m, ">\n"); | |
23 | Mail.mwrite (m, "Bcc: "); | |
24 | Mail.mwrite (m, String.concatWith "," names); | |
25 | Mail.mwrite (m, "\n\n"); | |
26 | Mail.mwrite (m, "This is a friendly reminder that your monetary balance at HCoop has dropped below\n"); | |
27 | Mail.mwrite (m, "the US$10 \"deposit\" amount. You can check your balance at:\n"); | |
28 | Mail.mwrite (m, "\t"); | |
29 | Mail.mwrite (m, urlPrefix); | |
30 | Mail.mwrite (m, "money\n\n"); | |
c889734f | 31 | Mail.mwrite (m, "You'll also see on that page a link you can follow to pay via PayPal.\n\n"); |
dda99898 | 32 | Mail.mwrite (m, "It would be great if you could bring your balance above that amount soon.\n"); |
c889734f | 33 | Mail.mwrite (m, "More information on how to pay can be found at:\n"); |
dda99898 AC |
34 | Mail.mwrite (m, "\thttp://wiki.hcoop.net/wiki/MemberDues\n"); |
35 | C.close db; | |
36 | OS.Process.success | |
37 | end | |
38 | ||
39 | end |