今更だけど完璧なメール送信ライブラリってあるの?
”完璧”の定義
・RFCをきちんと守っている。
・だけど、正しくないメールアドレスを許容できるようにも設定できる
・ISO-2022-JPだけじゃなく、Shift-JISやUTF-8など対応
・添付ファイルやHTMLメールにも対応
・sendmail呼び出しだけじゃなくてSMTPにも対応
・使いやすい
プログラム言語は問わないというか、どの言語でも必要になるだろうから
どの言語版も必要だけど。
巷にメール送信のサンプルは数あれど、これでいいのか
今更ながらに迷う。 ずっと前からある問題なのに、ぐぐっても不完全な情報の断片ばかり。
最近のフレームワークなどで対応しているのかと思いきや、次のような流ればっかり。
「メール送信機能がついている → 日本語では文字化けする → その修正方法 (不完全)」
これだけ時間がたっているのだから、さすがにどの言語でも
完成された形でライブラリが出来上がっていると思うのに、
見つからない・・・見つけられない俺が悪いのだろうか? > RFCをきちんと守っている
これだとa@aなんてアドレスが通ったりしません? >>5
そこんところは、柔軟に、
チェックするかしないかを設定できるってことで。 >>5です
ううむ
なんとなくPerlで作ってみたくなったんですが
野良モジュールでよかったらとか……CPAN嫌い
Subjectを要求通りエンコードしたら日本語UTF-8で文字化けする
実はRFCの要求ではメールアドレスにだって改行コードを入れることができる(爆
メールアドレスの途中にコメントなんか入れることができる(爆
[例] example"Hello World"@example.com = example@example.com
a@aといった.のないメールアドレスが通ってしまう
Per5.8系ではメールアドレスの完璧な正規表現は無理
などの気の遠くなるような課題が山積でしたよね >>7
頭いたいねw
こんなんだから、誰もちゃんとしたのを
作れないだろうね。
まあ機能不足は許容するとして、
間違ったメールは出したくないよなぁ。 > Per5.8系ではメールアドレスの完璧な正規表現は無理
無理して正規表現にしなくていいと思う。
たぶん読みにくくなるというデメリットしかない。 こんな問題もある(有名
ttp://neta.ywcafe.net/000799.html
ttp://neta.ywcafe.net/000803.html
ttp://neta.ywcafe.net/000804.html > [例] example"Hello World"@example.com = example@example.com
これ勘違い
こうらしい
[例] example(Hello World)@example.com = example@example.com >>10
そこらへんは、--disable-@の直前に.が来ないかチェック なんてオプションで対応使用と思います。
それで、いろいろ考えていたんだけど、
send-mail --from=a@example.com --to=b@example.com -body='test'
なんてオプションで後れる方式もつけるとして、
これだとマルチパートで添付ファイルもついているHTMLメールなど
複雑なメールだとオプションで対応しきれないと思うんだよね。
そこれで、ftpみたいに、コマンド入力形式にしようと考えているんだ。
例
send-mail [ENTER]
>set-charset iso-2022-jp
>from a@example.com
>to b@example.com
>subject メール
>attach ファイル.zip
>send 一見、sendmailコマンドと同じように見えるかもしれないけど
あれは、標準入力からうけとった文字列をただ流しているだけ。
>>12の方法はattach見たいな簡易な命令を書くだけで、
Content-Type: multipart/mixed; boundary="---"
なんてヘッダを自動的に補間したり文字コード変換したりするのが違いね。 メールでドットが2つあると送れないのあるよね。どうして? >>11
そういう変な仕様を思い出したら教えてほしい。
本当はRFCを読むべきなのはわかっているが、
時間がかかるんだ。 >>1
巷の実装は調べてみたの?
「どのサンプルでも実装できていない問題がある」という事と、
「部分的には満たしてるけど一部残念なところがある」という事は
分けて考えた方がいいと思う。
後者なら書き直せばなんとかなるわけだし、前者なら仕様策定が必要。