トップページ⇒tech
981コメント254KB

2ちゃんねる発メーラー作成スレ

■ このスレッドは過去ログ倉庫に格納されています
0001 NGNG
フリーのメーラーは糞だがシェアウェアのくせに機能追加要望に答えもしないシェアウェアなんぞに金を払いたくない
当然OEは論外 と思う人

2ちゃんねる発のフリーのメーラーを作りませんか?
0153デフォルトの名無しさんNGNG
口だけの>>152よりはマシじゃない?
0154124NGNG
>>152
じゃあお前が設計やれよ。
goodbye
0155デフォルトの名無しさんNGNG
バカの一声でプロジェクトは終了した。
0156デフォルトの名無しさんNGNG
いや、がんばるんだ!
0157デフォルトの名無しさんNGNG
>>124がんばってくれ。
俺は応援してる。
ここは2chなんだからああいう口だけ厨はいくらでもいてるんだ。
でも中にはカキコしないが
応援してるヤツもいくらでもいることは分かってくれ…
0158デフォルトの名無しさんNGNG
>>460そうかもね。
 そういう意味では.NET に期待してたけど、まったくの従来技術の寄せ集めで期待外れ。
.NETを延長して何か新しいものが出そうにないんだよな。

つまりパソコンの性能が5年で10倍になってるし、たぶん5年先も10倍になるだろうけど
5年前はこの性能が10倍になればHALくらい実現出来そうに思えてたけど、
今はそれが幻想だと判ってる。 
だから、新しい幻想が必要なのに .NETはそれを与えてくれていない・・というような
0159デフォルトの名無しさんNGNG
>>158
純粋にまともなクラスライブラリが手に入ったことを喜んでいる次第です。
0160デフォルトの名無しさんNGNG
>>157
ところで、なんで全部C++で書かないんですか?
何か理由があると考えられるんですか?
0161124NGNG
>>157
ありがとう。
まあ、たしかに自分が今現在設計に向いてないのは事実だとは思うよ。
自分で作っていても一番悩むのはデータ構造だしな。

>>160
C++は覚えたてなので、クラス以外、派生/継承等よくわからん。
Cならもう少しまともな設計ができたと思うがね。

ところで、私はどちらかと言うと、UIの方が得意なんで、
Outlook風でよければ(ツリービュー、リストビューとEditのやつね)、
ウィンドウ開くとこまでは作るがどうよ?
APIコール、エラー無視の嵐だけど・・・

あと、メモリ上でのメールデータ形式を決定する前に、
プログラムのフローチャート、
データの保存方法や、対応するプロトコル等
を考えた方が良いと思うんだがどうよ?
0162デフォルトの名無しさんNGNG
>>124
厨房うざいよ
もう出てくるな
0163デフォルトの名無しさんNGNG
>>161
暇つぶしにPOP3の仕様見てきた。
死ぬほど簡単だね。メール削除のフリーソフトが沸きまくるわけだ。

問題はメールのデコードやね。こっちの方が大変かと。
0164デフォルトの名無しさんNGNG
つーかプロトコル実装とかも一から書くの?
ありもの使えんかね
0165124NGNG
>>164
IMAP4とかは別としても、
POP3とSMTPぐらいは自前でもいいんじゃない?
0166夏みかんNGNG
>>124(>>165)
Cに限らず、プログラミング言語全般で言われていることですが
 労力を省けるところは極力省く、既存のライブラリはできる限り利用する
のがよいかと。

自分でいちからライブラリを全部構築していくのもいいんですけど、それに伴うデバッグ労力を考えると
やはり既存のものを流用した方がよいのでは・・・

しかしIOまわりをCで書くとなると…C++等では簡単にできるライブラリの拡張が難しいかも
>>161で言っているようにIO面は他の人に任せるというのも一つの方法かもしれません
その場合はコード保守の簡便さのためにもDLL化してもらい
(例えばpop3.dll smtp.dll imap4.dll・・・のように)
それを呼び出すのがベターでしょう・・・

…と書いてみましたがこれだけではそこらへんの口だけ厨と同じなので
データ構造を少し考えてみようと思います

ヽ(´ー`)ノまあマターリといきませう
0167デフォルトの名無しさんNGNG
データ構造というから変になるのであって、構造ではなくデータのインターフェースだけ決めておいて
1、 内部のデータ構造はその作者に任せる
2、 GUI部はそのインターフェスを扱う
3、 送信、受信部にはそのインターフェースを渡す
というように多数に分割して開発したらいいんじゃないの?

 シンプルなテキストメールだけを扱いたいならこのインターフェースだけで
 そして、マルチパートを組み込みたければそれまでのインターフェースを触らずに
 インターフェースを追加すればいい

そして、インターフェースについては
既に >>131 のデータ構造が出てるからそれでいいんじゃないの?
というかこれ.NETのライブラリと同じような・・・


0168デフォルトの名無しさんNGNG
>>166
つまんない。再利用する技術も大事。でも、みんながそうするとライブラリ作る人がいなくなるのよね。
おもしろい技術が一握りの人の物にしてしまうのはもったいない。
0169デフォルトの名無しさんNGNG
>>168
 だから、メール1件分のデータのインターフェースだけ決めておいて
 バラバラに開発出来るようにしたらどう? 送受部が出来なければ
 GUIだけ出来ても動かないから面白くないし、送受部だけ出来ても
 GUI部が無ければ面白くないでしょ? 
0170デフォルトの名無しさんNGNG
>>169
それは同意。インターフェースを決めよう。
0171デフォルトの名無しさんNGNG
GUIのメーラーなんか使う気しねー
0172デフォルトの名無しさんNGNG
>>171
インターフェース決まればUIはどうとでもなるだろ。
気に入らんならデコードルーチンとかかっぱらって自分でCUIくっつければいい。
0173デフォルトの名無しさんNGNG
>>150
2パート目以降は子供なのか?
Listにして同レベルで管理すべきじゃない?
0174デフォルトの名無しさんNGNG
>>173だから内部構造の前にさ、 メール1件分のデータのインターフェースを決めよう

 ・・・といっても Delphiでやるの? それともC++?

1、Delphiでインターフェース型
  property CC string: read GetCC write PutCC ;のように

2、Delphiでクラス型
  property CC:string;

3、C++で GetCC PutCC の純粋仮想関数だけのクラスを作る

自分の好みは Delphiでクラス型
0175デフォルトの名無しさんNGNG
>>174
DLLで言語間の差異を吸収してみたい。とかは。

データはシリアル化して通信。
0176デフォルトの名無しさんNGNG
GUIメーラってDQN向けでしょう?
0177デフォルトの名無しさんNGNG
>>176
じゃああなたにうってつけですな。
0178デフォルトの名無しさんNGNG
>>175
 じゃ、もういっそ
 IMessage Interface IID CD000001-8B95-11D1-82DB-00C04FB1625D
 をそのまま使いますか?
0179デフォルトの名無しさんNGNG
>>178
Windows限定で、多(プログラミング)言語混在なら確かにCOMがいいだろうけど…

多言語混在はメンテがややこしくなるので一本がいいような気も
0180デフォルトの名無しさんNGNG
>>179
じゃあ多人数混在(略
0181デフォルトの名無しさんNGNG
一般的に、オープンなプロジェクトは
誰かがちゃっちゃと実際に動く物を作ってたたき台を提供しないと
いつまでたってもできませんな。

MIME Message構造の構築・解読処理はむしろ各モジュール内で勝手にやれってことにして
受け渡しはSMTP送受信形式にしてしまうのがむしろ確実かつ話が早いんでは。
MIMEライブラリは別途言語ごとに作ってしまえと。
0182デフォルトの名無しさんNGNG
なんかおもろいな。このスレ。
やっぱ環境は.NETだろお。
0183デフォルトの名無しさんNGNG
>>182
プロトタイプ挙げてくれ。良ければそれで行こうよ。
0184夏みかんNGNG
>>168
>おもしろい技術が一握りの人の物にしてしまうのはもったいない
(;´Д`)あなたがライブラリ実装するなら止めはしませんが…
おおまかな実装はすぐにできても後々細かいバグが残る恐れは十分にありますから
先人の残した物は有効利用すべきでしょう、と言いたいんですが、、この話題に粘着しすぎかな

インターフェイスはひとまず極めてシンプルに決めて後から拡張すればいいでしょう
添付ファイルなどのごちゃごちゃしたものについてはひとまず無視して後のバージョンでの対応ということにし、
MIMEエンコード/デコード(内部に遮蔽していいかと)・マトモなMessageID付け・送受信だけできるものを作り
それを改良していくようにすれば方向性がしっかりするでしょうし

↓のようにすればいいのかな…(;´Д`)頭の中でCとC++とJavaが適当にごちゃごちゃになってるもので
誰かもっといいの出してくらはい
細かいことは>>131参照で

MailMessage* myMailMessage;
myMailMessage = new MailMessage();

myMailMessage->setMimeType("iso-2022-jp");
myMailMessage->setFrom("[email protected]");
myMailMessage->setSender("foobar");
myMailMessage->setTo("[email protected]");
myMailMessage->setSubject("メールのタイトル");
myMailMessage->setBody(bodyText);

SMTPsend(myMailMessage);

各値を取り出したいときにはgetSender(〜)のように
0185デフォルトの名無しさんNGNG
SMTP クラスは? サーバ名とか必要でしょ?
0186夏みかんNGNG
>>185
最初からボツのつもりで書いてるから細かいところは無視してたんですけど
ちょっと書き換えてみますね

SMTP* mySMTP;

アカウント選択時に以下の処理を
mySMTP->setSMTPsrv(myAccount->SMTPsrv);
mySMTP->setSMTPport(myAccount->SMTPport);
//portはデフォルト値使用でまず問題は発生しない
・・・
送信時には
mySMTP->sendMessage(myMailMessage);

これもさらに色々と手抜き設計なので、誰か修正よろしくです(というか、これ採用じゃないですよね(;´Д`)穴がボコボコ出そう)
0187124NGNG
寧ろ、アカウントを通した、プロトコル自体は象徴的な
インターフェースの方が良いのでは?

MailAcount Acount;
MailMessage Msg;

...

Acount.SendMail(Msg);

見たいな感じで。

>>173
子パートは再帰します。
0188デフォルトの名無しさんNGNG
応援しとーから頑張って。
0189デフォルトの名無しさんNGNG
SMTPMsgSession session( Account );
session.putMessage(msg1);
session.putMessage(msg2);
session.flush();

ツー感じでどう?
0190デフォルトの名無しさんNGNG
うん、そんな感じで良いから作れ。
0191デフォルトの名無しさんNGNG
>>187
>子パートは再帰します。

理解。

子パートの中に孫パートがあって・・・

って感じになるんですな。
0192124NGNG
>>191
そうです。まあ、プログラム構造としては、
1次元で管理した方が楽だろうけど。


ところで、POP/SMTPのライブラリ/コンポネートはどうなったの?
自前で作るのか?それとも既存品を使うのか?
0193デフォルトの名無しさんNGNG
>>161=124
>C++は覚えたてなので、クラス以外、派生/継承等よくわからん。

派生を知らないでクラス設計ができるわけねーだろ、ぼけ

>APIコール、エラー無視の嵐だけど・・・

普通無視しないだろ、ぼけ

>プログラムのフローチャート、

今時フローチャートは書かないんだよ、ぼけ
クラス構造を考えろ、ぼけ
0194デフォルトの名無しさんNGNG
>>192
実装者の判断に任せては?
か、Adapterになるクラスのインターフェース決めるか。
0195124NGNG
>>194
誰か実装してくれる方いる?

>>193
まあ、無視といってもほとんどエラーメッセージ
を出さないぐらいだから安心しろ(藁
ところで、クラス構造はお前が考えてくれるんだよな?


ところで、GUIはどんなのが良い?
VC++.netで書くからT...クラスは無しの方向で頼む。
0196デフォルトの名無しさんNGNG
>>195
>VC++.netで書くからT...クラスは無しの方向
なぜに。もっともホットなクラス利用可能言語なのに。
0197デフォルトの名無しさんNGNG
>>196
124は初心者なので適当に遊ばせておけばいい
0198デフォルトの名無しさんNGNG
単に、VC++だからクラス名の先頭に(Tでは無く)Cを付けたいだけでは?
0199デフォルトの名無しさんNGNG
駄目だこりゃ
0200124NGNG
>>196、>>198
だってベースとなるウィンドウ以外は
ウィンドウズ標準/コモンコントロール/コモンダイアログ
で作った方が良くない?

ってごめん。ウィンドウクラスのことです。
0201124NGNG
>>199
そう言わずに温かく見守ってくれよ。
あと200get。
0202デフォルトの名無しさんNGNG
>>200
お前、モジュール分割って言葉聞いたことあるか?
0203デフォルトの名無しさんNGNG
■■■■ これより124を教育するスレッドに変わります ■■■■
0204124NGNG
981 名前:デフォルトの名無しさん 投稿日:2002/08/13(火) 13:25
>>980
裏技教えてやるよ。
<F1キーでヘルプが出る>


これ見てくれよ!すげぇ機能だよ。このメーラにも組み込もう。
0205124NGNG
あら?F1キーでヘルプが出る機能って普通だったんだね。
初心者でスマソ
0206124NGNG
>>205
冗談のセンスのないプログラマなんて・・・
0207124NGNG
× >>205
○ >>202

間違った
0208124 ◆2X4qu9v2 NGNG
>>204、205、206、207
偽は消えろ。

これ以上皆様に迷惑をかけない為、今度こそ消えます。
2ch発メーラーの作成がんばって下さい。
大変ご迷惑をかけ、誠に申し訳なく思っておりますので、
ご理解の程をお願いいたします。
0209デフォルトの名無しさんNGNG
>>124
うだうだうるせー
何も言わずにさっさと消えろ
0210デフォルトの名無しさんNGNG
124はつっこまれて反論できなかったのが敗因だな
0211デフォルトの名無しさんNGNG
口だけ厨ばかりだな。煽るだけなら誰でも出来るのに。
あーあ またプロジェクトがひとつ潰れた。
0212デフォルトの名無しさんNGNG
>>211
公の場でプロジェクトを進めるなら叩かれるのが普通だろ?
叩かれて良いものになっていくものだよ
そんなこともわからない君は124の自作自演かい?(藁
0213デフォルトの名無しさんNGNG
実際に物を作って意見を問う形にすれば進むのにね
0214デフォルトの名無しさんNGNG
>>213
ずっと言ってるのに仕様を決めようの一点張りなのよね。
作り出して仕様変更とかされたらたまらんので誰も手を出さない罠。
0215デフォルトの名無しさんNGNG
>>212
叩いているヒマがあるのなら 協力しろよ。煽り厨さんよ。
0216デフォルトの名無しさんNGNG
>>215
>>215
0217デフォルトの名無しさんNGNG
>>216
>>215
0218デフォルトの名無しさんNGNG
しょうがない。じゃ俺がDelphiで初めてやる。 ただし1日30分な
0219デフォルトの名無しさんNGNG
さて >>178 の IMessage はパーソナルにはないようだ 

 パーソナルで IMessageを使う方法があるなら IMessageをデータインターフェースとして使いたい

送受については >>115 >>121 そして
Indy
http://www.nevrona.com/Indy/download90.html
などが使えるらしい。

本日は調査で終了
0220デフォルトの名無しさんNGNG
>>219
IndyにはIdMessageがあるね。

TIdMessage オブジェクトは,インターネットメッセージをカプセル化します。

TIdMessage = class(TIdBaseComponent)

説明

TIdMessage オブジェクトは,以下のインターネット規格文書で定義された完全なインターネットメッセージをカプセル化します。
0221デフォルトの名無しさんNGNG
>>220 判った。今Indyをダウンロードしてるから、明日はそれを調査してみる

 俺の環境は D5pro+D6パーソナル なのでIndyの日本語ヘルプはない。 少し辛いかも
0222デフォルトの名無しさんNGNG
delphiだったら俺も手伝えるところあったら手伝うよ!
0223デフォルトの名無しさんNGNG
俺もIndyのこと詳しく調べたいんだが英語が読めない…
日本語の解説サイトどこかない?
0224デフォルトの名無しさんNGNG
本日は TIdMessage を眺めて終わり
 日本語のヘルプは kylix用のを発見 中身を見るとテキストだけ取り出せば・・・いや犯罪か

TIdMessageにとりあえず必要な構造は揃っているようす ストリームへの読み書き関係があれば
保存が簡単なので調べるのは明日にしよう。

  property Subject: string
  property Body:  TStrings
  property From:  TIdEmailAddressItem
  property Sender: TIdEmailAddressItem    
  property ReplyTo: TIdEmailAddressList
  property CCList: TIdEmailAddressList
  property BccList: TIdEmailAddressList

  property AttachmentEncoding: string    
  property CharSet: string
  property ContentType: string
  property ContentTransferEncoding: string
  property ContentDisposition: string
  property Date: TDateTime
  property Encoding: TIdMessageEncoding
  property ExtraHeaders: TIdHeaderList
  property NewsGroups: TStrings
  property NoEncode: Boolean         
  property NoDecode: Boolean
  property Organization: string       
  property Priority: TIdMessagePriority
  property ReceiptRecipient: TIdEmailAddressIt
  property Recipients: TIdEmailAddressList  
  property References: string
  property UseNowForDate: Boolean
0225デフォルトの名無しさんNGNG
やるのか、やらないのか、はっきりしろよー
0226デフォルトの名無しさんNGNG
>>225
 自分がやればいいんじゃない?
0227デフォルトの名無しさんNGNG
ポストペット風で、送った文を2chねらー語に自動で変換できます?
0228デフォルトの名無しさんNGNG
>>227
してどうするの?
0229デフォルトの名無しさんNGNG
送信専用は山ほどあるのに、受信専用をほとんど見かけないのはなぜナリ。
正直、Win用の受信専用メーラーが欲しい。

つーか、
・受信専用メーラ(CUIアプリ)
・送信専用メーラ(CUIアプリ)
・上記2つのフロントエンド兼メールビューア(GUI/CUIアプリ)
に分けて作るってのはどうよ。
0230デフォルトの名無しさんNGNG
>>229
メールを受信して保存する部分をサーバとして分離し、
クライアントはUIだけにしたいってこと?
このサーバ・クライアント間のプロトコルはすでにIMAP4があるね。

となると、fetchmail + 適当なimap4サーバ、のようなもので実現できることですな。
クライアントもimap4対応の好きなものを使うだけ。
0231デフォルトの名無しさんNGNG
>>230
デコードやら添付ファイルの処理とかがDQNでは作れないのだと思われ。
SMTPはアホでも使える。
0232229NGNG
いや、単にPOPサーバからローカルにファイルを落とすCUIアプリが欲しい。
理想はズバリ fetchmail なんだけど、Winネイティブ版(cygwin除く)見たことが無いナリ。
まぁあそこまで高機能でなくても、最低限ファイル転送できれば良いんですが。

あと受信・送信部分を切り離すことで、将来プロトコルが増えても対応が楽かと。
DLLでも良いんだけど、exeにすりゃCUI派・GUI派のどちらも使えるし。
0233デフォルトの名無しさんNGNG
>>232
>exeにすりゃCUI派・GUI派のどちらも使えるし。

質問。コンソールアプリからDLLが使えないって誰から聞いた?
0234デフォルトの名無しさんNGNG
DLLだと基本的にプログラマしか使えない。
EXEならそうでない人も(原理的には)使える。
ま、実際はプログラマしか使わないんだろうけど。
0235デフォルトの名無しさんNGNG
>>234
>ま、実際はプログラマしか使わないんだろうけど。

誰が使うかそんなもん。とだけ言っときます。
0236229NGNG
>>233
コンソールからDLLが使えないって何処に書いてある?
「使える」ってのは可/不可の意味じゃなく、役立つ/役立たずの意味だよ。
…などと負け惜しみを言ってみるテスト。

でも、フロントエンド(と言っていいのか不明)が無いと使えんようなdllよか、
単体で使えるexeの方が、CUI/GUIどちらでも使いやすいとは思ふ。
0237デフォルトの名無しさんNGNG
あぎゃ
0238デフォルトの名無しさんNGNG
はげしくスレ違いな質問なんだけど、外部のアプリが
EXEをDLLと同等に使うことってできる?

単体でも実行できるけど、DLLとしても機能するような感じ。
EXEとDLLを別々に提供してもいいんだけどさ。
0239デフォルトの名無しさんNGNG
EXEで関数をエクスポートすればいい
0240デフォルトの名無しさんNGNG
神さま、途中経過だけでもお願い…
0241デフォルトの名無しさんNGNG
>>240
きょう、画面に文字が出せました。
次はキーボードを使えるプログラムを作ろう。
0242デフォルトの名無しさんNGNG
>>241 神キタ━━━━(゚∀゚)━━━━!!
0243デフォルトの名無しさんNGNG
>>241
それって「途中経過」じゃなくて「最初の一歩」じゃん…
「最初の一歩」っていうか「まだ作ってません」じゃん…
0244デフォルトの名無しさんNGNG
どこまで貢献出来るかわからないけど、やってみるわ。

メーラー作るの初めてなんで、なんか簡単なメーラーのサンプルプログラム
あったら、紹介してもらえない?
0245244NGNG
あっ、Cで作るんだよね?
C言語のサンプルプログラムならなお嬉しいです。
0246デフォルトの名無しさんNGNG
>>240-243
ワラタ
0247デフォルトの名無しさんNGNG
これなんてどうです?<ソース

http://nakka.com/soft/npop/
0248244NGNG
遅レスすまん。
ありがとう。
でもメーラーって結構簡単な感じするんだけど…?
目が肥えてて、厳しい2ちゃんねらーを納得するメーラーって
難しいものになりそうですね。
本当モナー版ポ○トペット作ろうかな…。
0249デフォルトの名無しさんNGNG
>>248
送受信関係のロジックは簡単。
データのエンコードデコードが面倒。

オリジナルAAを送り込める機能が欲しいです。
0250デフォルトの名無しさんNGNG
>>249
オリジナルのヘッダ
X-AA
を装備して、デコード
ちょうど、X-faceみたいに
0251244NGNG
そのへんの効率のよい方法勉強せなアカンかもw
とりあえず仕事帰ってからしか出来ないから、
開発は遅い予感。
0252デフォルトの名無しさんNGNG
MIMEのマルチパート対応しなくて良いからとりあえず作れ
■ このスレッドは過去ログ倉庫に格納されています