1 |
wakaba |
1.5 |
<?xml version="1.0" encoding="iso-2022-jp"?> |
2 |
wakaba |
1.6 |
<?xml-stylesheet href="/s/simpledoc.css" type="text/css" ?> |
3 |
wakaba |
1.5 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" |
4 |
|
|
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
5 |
|
|
<html xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml"> |
6 |
|
|
<head> |
7 |
wakaba |
1.8 |
<title>manakai ($B5l>N(B Message::* Perl modules)</title> |
8 |
wakaba |
1.5 |
<link rel="index" href="./" /> |
9 |
wakaba |
1.6 |
<link rel="stylesheet" href="/s/simpledoc.css" type="text/css" /> |
10 |
wakaba |
1.5 |
<link rev="made" href="mailto:w@suika.fam.cx" /> |
11 |
|
|
<link rel="copyright" href="/c/pd" title="Public Domain." /> |
12 |
|
|
<meta name="author" content="$B<cMU(B" /> |
13 |
wakaba |
1.6 |
<meta name="keywords" content="Perl, module, pm, Message, RFC 822, RFC 2822, RFC 1036, son-of-RFC1036, MIME, Usefor, HTTP, CGI, header, field" /> |
14 |
wakaba |
1.5 |
</head> |
15 |
|
|
<body> |
16 |
wakaba |
1.8 |
<h1>manakai ($B5l>N(B Message::* Perl modules)</h1> |
17 |
|
|
|
18 |
|
|
<p>$BCm0U(B: $B$3$NJ8=q$NFbMF$K$O8E$$;vJA$,4^$^$l$F$$$^$9!#(B |
19 |
|
|
$B:G?7$N>pJs$O(B |
20 |
|
|
<a href="/~wakaba/-temp/wiki/wiki?manakai">SuikaWiki:manakai</a> |
21 |
|
|
$B$r$4Mw$/$@$5$$!#(B</p> |
22 |
wakaba |
1.5 |
|
23 |
|
|
<h2>$B$O$8$a$N$O$8$a$K(B</h2> |
24 |
|
|
|
25 |
|
|
<p>$B$?$H$($P(B Perl $B$G=q$+$l$?(B CGI script, $B$=$l$b7G<(HD$J$s$+$K$O!"(B |
26 |
wakaba |
1.6 |
$B$3$s$J$_$C$H$b$J$$(B code $B$,:\$C$F$$$?$j$7$^$9!#(B</p> |
27 |
wakaba |
1.5 |
|
28 |
wakaba |
1.7 |
<pre class="example"><code class="perl">jcode'convert(*from, "jis"); |
29 |
wakaba |
1.5 |
jcode'convert(*subject, "jis"); |
30 |
|
|
jcode'convert(*message, "jis"); |
31 |
|
|
open (MAIL, "| $sendmail"); |
32 |
|
|
print MAIL "From: $mail ($from)\n"; |
33 |
|
|
print MAIL "To: $mailto\n"; |
34 |
|
|
print MAIL "Subject: $subject\n"; |
35 |
|
|
print MAIL "\n"; |
36 |
|
|
print MAIL "$message"; |
37 |
|
|
print MAIL "\n"; |
38 |
|
|
close (MAIL); |
39 |
wakaba |
1.7 |
</code></pre> |
40 |
wakaba |
1.5 |
|
41 |
|
|
<p>$B$3$l$G$O;kG'@-$bNI$/$J$$$G$9$7!"$&$C$+$j=$@5$74V0c$($k$H(B |
42 |
|
|
$BJQ$J%a%C%;!<%8$rAw?.$7$F$7$^$$$^$9!#(B |
43 |
|
|
($BI.<T$O$7$g$C$A$e$&$O$^$C$F$^$7$?(B:-) |
44 |
|
|
($B$=$l$KB?$/$N(B code $B$G$O!"(B |
45 |
|
|
HTML $B$G$N%/%m%9%5%$%H%9%/%j%W%F%#%s%0(B (CSS) $BLdBj$H(B |
46 |
|
|
$BN`;w$NLdBj$X$NBP=h$r$7$F$$$^$;$s!#(B)</p> |
47 |
|
|
|
48 |
|
|
<p>$B%*%V%8%'%/%H;X8~$r<h$jF~$l$F<!$N$h$&$J46$8$G%a%C%;!<%8$r(B |
49 |
|
|
$B9=@.$7$?$$$H$3$m$G$9!#(B</p> |
50 |
|
|
|
51 |
|
|
<pre class="application-x-perl"> |
52 |
|
|
use Message::Entity; |
53 |
|
|
my $msg = new Message::Entity; |
54 |
|
|
my $hdr = $msg->header; |
55 |
|
|
$hdr->add ('From')->add ('me@bar.example'); |
56 |
wakaba |
1.6 |
$hdr->add ('To')->add (['foo@bar.example', display_name => 'Mr. foo']); |
57 |
|
|
$hdr->add (Subject => $subject); |
58 |
wakaba |
1.5 |
$msg->body ($body); |
59 |
|
|
|
60 |
|
|
# $smtp->send $B$O(B SMTP $B$GAw?.$9$k(B method $B$H2>Dj!#(B |
61 |
|
|
$smtp->send ($msg); |
62 |
|
|
</pre> |
63 |
|
|
|
64 |
|
|
<p><a href="http://www.cpan.org/" xml:lang="en">CPAN</a> $B$rC5$9$H!"(B |
65 |
|
|
$B$3$l$K;w$?$h$&$J$3$H$,$G$-$=$&$J%b%8%e!<%k$O$"$k$h$&$G$9$,!"(B |
66 |
|
|
$B<B:]$K;H$C$F$_$k$H!"M?$($kCM$K$h$C$F$O(B <a href="urn:ietf:rfc:822">RFC 822</a>/<a href="urn:ietf:rfc:2822">2822</a> $B$K0cH?$9$k(B |
67 |
wakaba |
1.6 |
$B7k2L$r=PNO$9$k$H$+!"$=$b$=$b$=$l0JA0$K!"(B |
68 |
|
|
<code>$hdr->addr ('Foo Bar <foo@bar.example>')</code> |
69 |
|
|
$B$N$h$&$K%a%C%;!<%87A<0$r%b%8%e!<%kFb$K1#F?$7$-$l$F$$$J$$$H$+!"Hs(B |
70 |
|
|
ASCII $BJ8;z$r9MN8$7$F$$$J$$$H$+$NITK~$,$"$j$^$9!#(B</p> |
71 |
|
|
|
72 |
|
|
<p class="note">($B<BAuJ}?K$H$7$F$OIT@5$JCM$O%b%8%e!<%k$KEO$9A0$KCF$/$Y$-$H$$$&9M$(J}$b$"$k$G$7$g$&$1$I!"0lHLE*$JMxMQ$K:]$7$F$O8-$$@_7W$@$H$O;W$($^$;$s!#(B)</p> |
73 |
wakaba |
1.5 |
|
74 |
|
|
<p>$B$H$$$&$3$H$G!"$O$8$a$O4{B8$N%b%8%e!<%k$N(B wrapper ($B$"$k$$$OJd40(B) |
75 |
|
|
$B$r=q$/$D$b$j$G$7$?$,!"$J$s$@$+$4$A$c$4$A$c$7$F$$$F!"(B |
76 |
|
|
$B$=$l$J$i<VNX$N:FH/L@$K$J$C$F$b0l$+$i=q$$$F$_$h$&$H9M$($^$7$?!#(B</p> |
77 |
|
|
|
78 |
|
|
<h2>$BFC?'(B ($B$H$$$&Dx$N$b$N$G$b$J$$!#(B)</h2> |
79 |
|
|
|
80 |
|
|
<ol> |
81 |
wakaba |
1.6 |
<li>$B7k9=%*%V%8%'%/%H;X8~$G$9!#(B</li> |
82 |
wakaba |
1.5 |
<li>RFC 822/2822 $B$N(B <code class="bnf rfc2822">group</code> $B$r2r<a=PMh$^$9!#(B</li> |
83 |
|
|
<li><a href="urn:ietf:id:draft-ietf-usefor-msg-id-alt-00">draft-ietf-usefor-msg-id-alt-00</a> $B$K4p$E$$$?Aw?.%"%I%l%9$J$I$K$h$k(B <code class="rfc2822">Message-ID</code> $B$r@8@.=PMh$^$9!#(B</li> |
84 |
wakaba |
1.7 |
<li><a href="charset" title="$BJ8;z%3!<%I$N07$$(B">$BJ8;z%3!<%IJQ49=hM}$r30It$KDI$$=P$7$F$$$^$9(B</a>$B!#(B |
85 |
|
|
jcode.pl $B$G$b(B Jcode.pm $B$G$b(B Encode::* $B$G$b!"9%$-$J$b$N$r$*;H$$2<$5$$!#(B</li> |
86 |
wakaba |
1.6 |
<li>MIME (<a href="urn:ietf:rfc:2045">RFC 2045</a>, |
87 |
|
|
<a href="urn:ietf:rfc:2046">2046</a>) $B$K$[$\40A4$KBP1~$7$F$$$^$9!#(B</li> |
88 |
wakaba |
1.5 |
</ol> |
89 |
|
|
|
90 |
|
|
<h2>$B3F;EMM$X$NBP1~>u67(B</h2> |
91 |
|
|
|
92 |
|
|
<ol> |
93 |
|
|
<li>$BEE;R%a%$%k$N%a%C%;!<%8(B (RFC 822, RFC 2822) |
94 |
wakaba |
1.6 |
$B$NA45!G=$KBP1~$7$F$$$^$9!#(B</li> |
95 |
wakaba |
1.5 |
<li>$BEE;R%K%e!<%95-;v(B (<a href="/uri-res/N2L?urn:ietf:rfc:1036">RFC 1036</a>, |
96 |
|
|
<a href="spec/son-of-RFC1036">son-of-RFC1036</a>, |
97 |
|
|
<a href="/uri-res/N2L?urn:ietf:id:draft-usefor-article-06"> |
98 |
|
|
draft-usefor-article (06)</a>) $B$NF,NN0h$NB?$/$KBP1~$7$F$$$^$9!#(B</li> |
99 |
wakaba |
1.6 |
<li>MIME $B$NK\J8ItJ,(B (body part) $B$KBP1~$7$F$$$^$9!#(B |
100 |
|
|
<ul> |
101 |
|
|
<li>$BB?ItJ,(B (multipart) $B$dJ,3d(B (message/partial), |
102 |
|
|
$B30ItK\J,(B (message/external-body) $B$r07$&$3$H$,=PMh$^$9!#(B</li> |
103 |
|
|
<li>text/plain; format=flowed |
104 |
|
|
(<a href="urn:ietf:rfc:2646">RFC 2646</a>) |
105 |
|
|
$B$KBP1~$7$F$$$^$9!#(B</li> |
106 |
|
|
<li>Content-Transfer-Encoding $B$O(B Base64, Quoted-Printable |
107 |
|
|
$B$OL^O@!"(B x-uuencode, x-gzip64 $B$K$bBP1~!#(B |
108 |
|
|
RFC 2822 $B%a%$%k=PNO%b!<%I$G$O!"K\J8$,(B8$B%S%C%H$G$b<+F0E*$KE,@Z$J(B |
109 |
|
|
CTE $B$GId9f2=$7$^$9!#(B</li> |
110 |
|
|
</ul> |
111 |
|
|
</li> |
112 |
|
|
<li>MIME $B$NF,NN0h(B |
113 |
wakaba |
1.5 |
(<a href="/uri-res/N2L?urn:ietf:rfc:2045">RFC 2045</a>, |
114 |
|
|
<code class="mime">Content-Disposition</code>) $B$KBP1~$7$F$$$^$9!#(B |
115 |
|
|
$B%Q%i%a!<%?!<CM3HD%(B (<a href="/uri-res/N2L?urn:ietf:rfc:2231">RFC 2231</a>) |
116 |
|
|
$B$bF~=PNO$H$b$K<BAu$7$^$7$?!#(B</li> |
117 |
|
|
<li>MIME $BId9f2=8l(B (<code class="mime bnf">encoded-word</code>) |
118 |
wakaba |
1.6 |
$B$N2rFI$KBP1~$7$F$$$^$9(B:-)</li> |
119 |
wakaba |
1.5 |
<li>HTTP/1.0, HTTP/1.1, CGI/1.1, CGI/1.2 $B$NF,NN0h$N$&$A!"(B |
120 |
|
|
$B$4$/0lIt$KBP1~$7$F$$$^$9!#(B MHTML $B$N(B |
121 |
|
|
<code class="mime">Content-Location</code> $B$K$bBP1~$7$F$$$^$9!#(B</li> |
122 |
|
|
<li>$BF|IU7A<0$G$O(B RFC 822/<a href="urn:ietf:rfc:1123">1123</a>, |
123 |
|
|
<a href="urn:ietf:rfc:733">RFC 733</a>, asctime, ISO 8601 (HTML) |
124 |
wakaba |
1.6 |
$B$J$I$KBP1~$7$F$$$^$9!#F|IU$N=PNO$O(B sprintf |
125 |
|
|
$B$NMM$J=q<0J8;zNs$rM?$($k$3$H$G!"B?<oB?MM$J7A<0$KBP1~!#(B</li> |
126 |
|
|
<li>X-Moe $B%7%j!<%:$KBP1~$7$F$$$^$9(B:-)</li> |
127 |
wakaba |
1.5 |
</ol> |
128 |
|
|
|
129 |
|
|
<h2>$B@)8B;v9`(B</h2> |
130 |
|
|
|
131 |
|
|
<ol> |
132 |
|
|
<li>$BN`;w%b%8%e!<%k(B($BFf(B)$B$N$h$&$K!"%U%!%$%kL>$d%U%!%$%k!&%O%s%I%k$r(B |
133 |
|
|
$BEO$7$FFI$_9~$^$;$k$3$H$,=PMh$^$;$s!#(B</li> |
134 |
|
|
<li>$BBg$-$J%a%C%;!<%8$G$b0l5$$KFI$_9~$_!"A4$F<g5-21NN0h$G(B |
135 |
|
|
$BJ];}$7$F$$$^$9!#$G$9$+$i$"$^$jBg$-$J%a%C%;!<%8$N=hM}$K$O(B |
136 |
|
|
$B8~$$$F$$$J$$$G$7$g$&!#(B</li> |
137 |
|
|
<li><code>CR</code> $B$d(B <code>LF</code> $B$,C1BN$G=P8=$9$k>l9g!"(B |
138 |
wakaba |
1.6 |
$B@5$7$/=hM}=PMh(B<del>$B$^$;$s(B</del><ins>$B$J$$$3$H$,$"$j$^$9(B |
139 |
|
|
($B6a$$>-Mh$NHG$G2~A1$NM=Dj(B)</ins>$B!#(B (<code>CRLF</code> $B$HEy2A$H$_$J$7$^$9!#(B) |
140 |
wakaba |
1.5 |
$B>-Mh$NHG$G$O%*%W%7%g%s$G@)8f2DG=$K$J$k$+$b$7$l$^$;$s!#(B</li> |
141 |
wakaba |
1.7 |
<li>$B@bL@J8(B (document; pod) $B$,$$$$2C8:$G$9(B ($B=q$/$N$,LLE]$@(B)$B!#(B</li> |
142 |
wakaba |
1.5 |
</ol> |
143 |
|
|
|
144 |
|
|
<h2>$BI,MW4D6-(B</h2> |
145 |
|
|
|
146 |
|
|
<ol> |
147 |
wakaba |
1.7 |
<li>Perl 5.6 $B0J9_(B |
148 |
wakaba |
1.5 |
<p class="note"><code class="bnf rfc822">comment</code> |
149 |
wakaba |
1.7 |
$B$rI=$9$N$K@55,I=8=(B |
150 |
|
|
<code class="regex">(??{ <var>code</var> })</code> |
151 |
wakaba |
1.5 |
$B$r;H$C$F$$$k$N$G!"$3$l$r2r<a=PMh$k!"(B |
152 |
|
|
5.6 $B0J9_$NHG$G$"$kI,MW$,$"$j$^$9!#(B</p> |
153 |
|
|
</li> |
154 |
|
|
<li>Digest::MD2, Digest::MD5, Digest::SHA1 |
155 |
|
|
<p>Message-ID $B$N@8@.$K$3$l$i$r;HMQ$9$k>l9g$N$_!"(B |
156 |
wakaba |
1.7 |
Message::Field::MsgID $B$,;H$$$^$9!#(B</p> |
157 |
|
|
<p><code class="bnf mime">Content-MD5:</code> $BNN0h$NIU2C$d8!>Z$r9T$&>l9g!"(B |
158 |
|
|
Digest::MD5 $B$,I,MW$G$9!#(B (Message::Entity)</p> |
159 |
wakaba |
1.5 |
</li> |
160 |
wakaba |
1.6 |
<li>MIME::Base64 |
161 |
|
|
<p>$B$A$J$_$K!"(B Quoted-Printable $B$d(B RFC 2231 $B$N(B |
162 |
|
|
% $BId9f2=$O<+NO$GI|9f$7$^$9!#(B</p> |
163 |
|
|
</li> |
164 |
wakaba |
1.5 |
<li>$BJ8;z%3!<%IJQ49=hM}(B |
165 |
|
|
<p>$BF|K\8l%a%C%;!<%8$r07$&$J$iI,?\$G$7$g$&!#(B |
166 |
|
|
$B>\$7$/$O(B<a href="#code">$BJ8;z%3!<%I$N07$$(B</a> |
167 |
|
|
$B$N>O$r$4;2>H2<$5$$!#(B</p> |
168 |
|
|
</li> |
169 |
|
|
</ol> |
170 |
|
|
|
171 |
|
|
<h2>$BF~<j(B</h2> |
172 |
|
|
|
173 |
|
|
<p>suika.fam.cx $B$N(B SSH account $B$r$*;}$A$N>l9g!"(B CVS $B$+$iF~<j=PMh$^$9!#(B</p> |
174 |
|
|
|
175 |
wakaba |
1.8 |
<p class="example"><samp>$ </samp><kbd>cvs -d :ext:<var xml:lang="en">username</var>@suika.fam.cx:/home/cvs co messaging/manakai</kbd></p> |
176 |
wakaba |
1.5 |
|
177 |
wakaba |
1.8 |
<p>Web $B$+$i$b<h$j=P$;$^$9(B: |
178 |
|
|
<code class="uri"><<a href="/gate/cvs/messaging/manakai/">http://suika.fam.cx/gate/cvs/messaging/manakai/</a>></code></p> |
179 |
wakaba |
1.7 |
|
180 |
wakaba |
1.8 |
<p><a href="/gate/cvs/messaging/manakai/manakai.tar.gz?tarball=1">$B:G?73+H/HG(B |
181 |
|
|
snapshot $B$N(B tarball $B$r<hF@(B</a>$B$9$k$3$H$b$G$-$^$9!#(B</p> |
182 |
wakaba |
1.5 |
|
183 |
|
|
<h2>$B%i%$%;%s%9(B</h2> |
184 |
|
|
|
185 |
wakaba |
1.8 |
<p>manakai $B$O<+M3%=%U%H%&%'%"$G$9!#(B |
186 |
|
|
<a href="http://www.gnu.org/">GNU</a> |
187 |
|
|
<a href="/c/gnu/gpl">GPL</a> $B$K=>$C$FMxMQ=PMh$^$9!#(B |
188 |
|
|
$B>\$7$/$O3F9=@.%U%!%$%k$r8fMw2<$5$$!#(B</p> |
189 |
wakaba |
1.5 |
|
190 |
wakaba |
1.7 |
<h2>$B4XO"J8=q$J$I(B</h2> |
191 |
wakaba |
1.5 |
|
192 |
|
|
<ul> |
193 |
wakaba |
1.8 |
<li id="code"><a href="charset">$BJ8;z%3!<%I$N07$$(B</a></li> |
194 |
|
|
<li><a href="/~wakaba/-temp/wiki/wiki?manakai">SuikaWiki:manakai</a></li> |
195 |
wakaba |
1.5 |
</ul> |
196 |
|
|
|
197 |
wakaba |
1.7 |
<h2>$B1~MQ(B</h2> |
198 |
wakaba |
1.5 |
|
199 |
wakaba |
1.7 |
<ul> |
200 |
|
|
<li><a href="/gate/cvs/tool/bunshin/">Bunshin.pm</a> |
201 |
|
|
<p>Web $B>e$NO"B3$9$k;q8;(B ($B7G<(HD$N5-;v$N$h$&$J$b$N(B) |
202 |
|
|
$B$r@Z$j=P$7$F(B RFC 822 $B7A<0$N%a%C%;!<%8$K$9$k%(%s%8%sItJ,!#(B</p> |
203 |
|
|
</li> |
204 |
|
|
<li><a href="/gate/cvs/tool/suikawari/">$B$9$$$+$o$j(B</a> |
205 |
|
|
<p>Bunshin.pm $B$r;H$C$F!"EE;R%K%e!<%9$K5-;v$rEj9F$9$k(B |
206 |
|
|
script$B!#(B (cron $B$H$+$+$i8F$S=P$7$F;H$&!#(B)</p> |
207 |
|
|
</li> |
208 |
|
|
</ul> |
209 |
wakaba |
1.5 |
|
210 |
wakaba |
1.7 |
<h2>$B:#8e$NM=Dj(B</h2> |
211 |
wakaba |
1.5 |
|
212 |
wakaba |
1.7 |
<ol> |
213 |
|
|
<li>$BEE;R%K%e!<%9$NF,NN0h(B (RFC 1036, |
214 |
|
|
<a href="spec/son-of-RFC1036">son-of-RFC1036</a>, |
215 |
|
|
draft-usefor-article) $B$N40A4<BAu(B</li> |
216 |
|
|
<li>$BDI2C(B/$BHsI8=`$NF,NN0h$N<BAu!#(B</li> |
217 |
|
|
<li>documentation$B!#(B</li> |
218 |
|
|
<li>$B;HMQNc$N:n@.!#(B</li> |
219 |
|
|
<li>$B4{B8%b%8%e!<%k$,MxMQ=PMh$kItJ,$O!"$=$l$r8F$S=P$9$h$&$K$9$k$+(B |
220 |
|
|
$B$=$N(B code $B$rN.MQ$9$k!#(B</li> |
221 |
|
|
<li>$BN`;w%b%8%e!<%k$H$N3&LL$N6&DL2=(B</li> |
222 |
|
|
<li>HTTP $BMQ$K;H$($k$h$&$K$9$k(B</li> |
223 |
|
|
</ol> |
224 |
wakaba |
1.5 |
|
225 |
|
|
<div class="navigation"> |
226 |
|
|
[<a href="/" title="$B$3$N%5!<%P!<$N<sJG(B">/</a> |
227 |
|
|
<a href="/map" title="$B$3$N%5!<%P!<$N0FFb(B" rel="index">$BCO?^(B</a> |
228 |
|
|
<a href="/search/" title="$B$3$N%5!<%P!<$N8!:w(B">$B8!:w(B</a>] |
229 |
|
|
<a href="http://validator.w3.org/check/referer" xml:lang="en"><img |
230 |
|
|
src="http://www.w3.org/Icons/valid-xhtml11" id="w3c-html" |
231 |
|
|
alt="Valid XHTML 1.1!" style="height: 31px; width: 88px" /></a> |
232 |
|
|
<a href="http://jigsaw.w3.org/css-validator/validator?uri=http://suika.fam.cx/~wakaba/Message-pm/introduction.ja.html" xml:lang="en"> |
233 |
|
|
<img style="width: 88px; height: 31px" id="w3c-css" |
234 |
|
|
src="http://jigsaw.w3.org/css-validator/images/vcss" |
235 |
|
|
alt="Valid CSS!" /></a> |
236 |
|
|
</div> |
237 |
wakaba |
1.8 |
<div class="update">$Date: 2002/07/13 11:51:56 $</div> |
238 |
wakaba |
1.5 |
<ul class="myuri"> |
239 |
|
|
<li><URL:<a href="http://suika.fam.cx/~wakaba/Message-pm/introduction">http://suika.fam.cx/~wakaba/Message-pm/introduction</a>></li> |
240 |
|
|
<li><CVS:<a href="http://suika.fam.cx/gate/cvs/perl/web/Message-pm/">suika.fam.cx:/home/cvs/perl/web/Message-pm/</a>></li> |
241 |
|
|
</ul> |
242 |
|
|
</body></html> |