Mercurial > projects > ldc
comparison tango/tango/util/log/MailAppender.d @ 132:1700239cab2e trunk
[svn r136] MAJOR UNSTABLE UPDATE!!!
Initial commit after moving to Tango instead of Phobos.
Lots of bugfixes...
This build is not suitable for most things.
author | lindquist |
---|---|
date | Fri, 11 Jan 2008 17:57:40 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:5825d48b27d1 | 132:1700239cab2e |
---|---|
1 /******************************************************************************* | |
2 | |
3 copyright: Copyright (c) 2004 Kris Bell. All rights reserved | |
4 | |
5 license: BSD style: $(LICENSE) | |
6 | |
7 version: Initial release: May 2004 | |
8 | |
9 author: Kris | |
10 | |
11 *******************************************************************************/ | |
12 | |
13 module tango.util.log.MailAppender; | |
14 | |
15 private import tango.util.log.Appender; | |
16 | |
17 private import tango.io.Buffer, | |
18 tango.net.SocketConduit, | |
19 tango.net.InternetAddress; | |
20 | |
21 /******************************************************************************* | |
22 | |
23 Appender for sending formatted output to a Mail server. Thanks | |
24 to BCS for posting how to do this. | |
25 | |
26 *******************************************************************************/ | |
27 | |
28 public class MailAppender : Appender | |
29 { | |
30 private char[] to, | |
31 from, | |
32 subj; | |
33 private Mask mask; | |
34 private InternetAddress server; | |
35 | |
36 /*********************************************************************** | |
37 | |
38 Create with the given layout and server address | |
39 | |
40 ***********************************************************************/ | |
41 | |
42 this (InternetAddress server, char[] from, char[] to, char[] subj, EventLayout layout = null) | |
43 { | |
44 setLayout (layout); | |
45 | |
46 this.to = to; | |
47 this.from = from; | |
48 this.subj = subj; | |
49 this.server = server; | |
50 | |
51 // Get a unique fingerprint for this appender | |
52 mask = register (to ~ subj); | |
53 } | |
54 | |
55 /*********************************************************************** | |
56 | |
57 Send an event to the mail server | |
58 | |
59 ***********************************************************************/ | |
60 | |
61 synchronized void append (Event event) | |
62 { | |
63 auto conduit = new SocketConduit; | |
64 scope (exit) | |
65 conduit.close; | |
66 | |
67 conduit.connect (server); | |
68 auto emit = new Buffer (conduit); | |
69 | |
70 emit ("HELO none@anon.org\r\nMAIL FROM:<") | |
71 (from) | |
72 (">\r\nRCPT TO:<") | |
73 (to) | |
74 (">\r\nDATA\r\nSubject: ") | |
75 (subj) | |
76 ("\r\nContent-Type: text/plain; charset=us-ascii\r\n\r\n"); | |
77 | |
78 auto layout = getLayout(); | |
79 emit (layout.header (event)); | |
80 emit (layout.content (event)); | |
81 emit (layout.footer (event)); | |
82 emit ("\r\n.\r\nQUIT\r\n"); | |
83 emit (); | |
84 } | |
85 | |
86 /*********************************************************************** | |
87 | |
88 Return the fingerprint for this class | |
89 | |
90 ***********************************************************************/ | |
91 | |
92 Mask getMask () | |
93 { | |
94 return mask; | |
95 } | |
96 | |
97 /*********************************************************************** | |
98 | |
99 Return the name of this class | |
100 | |
101 ***********************************************************************/ | |
102 | |
103 char[] getName () | |
104 { | |
105 return this.classinfo.name; | |
106 } | |
107 } |