- ベストアンサー
【C言語】メールを送信するプログラムについて
- perl(Linuxでもあるのでしょうか?)で扱えるsendmail関数は、宛先さえ指定すればメールを送信出来ます。その機能を実装したいのですが、可能でしょうか。
- SMTPサーバーを指定せずに送信機能が使いたい理由は、ソフトウェアでアンケートソフトを作りたいからです。例えばGmail等のサーバーを借りて、そのアカウントのSMTPを指定したソフトを配布した場合、どえらいことになってしまうのではないかと思っています。
- 開発環境はWindowsです(7 home 64bit)。実はC言語での実装ではなくActiveBasicというBASIC言語で開発しようとしています。しかし、ActiveBasicのマクロがVBのように充実していないため、C言語のフォームで質問させていただいています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まずは、「メールでないといけないのか」をよく考えましょう。 > httpということは、perlか何かで送信部分を書いておいて、クライアントからそれにメッセージを送り、perlやPHPに送信部分を任せるということでしょうか? 送信ではなく受信側です。 あなたが作っているアプリに、ブラウザの代りにフォームに送信する機能を持たせます。 受信側では、HTMLを出力する必要はありません。OK/NGの反応くらいはあった方がいいと思いますが。 どのPCからでも特定のURLへアクセスするので、今問題にしているようなことは起こりません。 > sendmailはperlのものです。 Perl本体にsendmailはありません。 先に書いたような追加モジュールを使うか、UNIXやLinux等のOSにインストールされたsendmailコマンドを使うか、です。 細かい点は省くと。 UNIXやLinux等のOSでは、一つのマシンを複数のユーザーで同時に使うことを想定しています。 Windowsと違って、メールはOS標準の機能です。 そのため、通常はマシンの標準の設定を使って送受信するようになっています。 sendmailは、「SMTPを指定しない」のではなく、「既にSMTPが指定してある」状態なのです。
その他の回答 (2)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
>perl(Linuxでもあるのでしょうか?)で扱えるsendmail関数は、 >宛先さえ指定すればメールを送信出来ます。 「デフォルトのSMTPを使う」ってだけで、SMTPサーバーを利用しているのは変わりません。 >その機能を実装したいのですが、可能でしょうか。 Windowsでメールを送受信するソフトを作成する場合は、以下の関数を使います。 http://www.golgo.jp/winsock.html これらの関数で「SMTPサーバーを指定する際に、現在のユーザーのデフォルトのメールソフトを調べて、そのメールソフトのデフォルトアカウントを調べて、そのアカウントがどこのSMTPサーバーを使う設定になっているか調べれば「SMTPサーバーをユーザーが指定する事無しにメール送信が可能」になります。 手っ取り早いのはShellAPI関数を用いた ShellExecute(NULL, "open", "mail:xxx@xxxxxx.xx.jp", NULL,NULL, SW_SHOWNORMAL); です。この関数を使うと、デフォルトのメーラーソフトが開きます。ただし、本文などは指定できません。宛て先のメルアドのみが指定できます。
お礼
御回答有り難うございます。 デフォルトのSMTPサーバーなるものがあるとは、しりませんでした。 もっと勉強しないと…… 関数はwinsock系にやはりなってくるようですね。 本文は「mail@xxx.jp?subject=test&body=text」のようにするとできると思います。 ですが、今回は趣旨が違うのでなんとも…… デフォルトの取得が難関そうですね
- kmee
- ベストアンサー率55% (1857/3366)
perlのsendmail関数って、これのことですか? http://search.cpan.org/~mivkovic/Mail-Sendmail-0.79/Sendmail.pm それとも、UNIX系OSのsendmailコマンドを利用したもののことでしょうか? どちらにしろ、外部にメールを送信しようとしたら、SMTPサーバーを経由します。 「メール」はやめて、http,https、あるいは独自プロトコルでの通信にしたらどうでしょうか。
お礼
御回答有り難うございます。 正直言いますと、素人に毛が生えた程度のプログラミング技術しか持ちあわせておりませんゆえ、 ネットワーク系の技術を勉強中なのです。(現在の最終目標はTwitterクライアント) httpということは、perlか何かで送信部分を書いておいて、クライアントからそれにメッセージを送り、perlやPHPに送信部分を任せるということでしょうか? 独自プロトコルはおそらく出来ません。 通信技術の基礎は頭にあっても、実装するやり方が分かっていませんので…… (winsock2なども同時に勉強中)
補足
sendmailはperlのものです。 UNIXは扱ったことがないのですが、レンタルサーバーで動くperlはどういう扱いになるのでしょう? おそらく貼っていただいたもので合っていると思います。
お礼
なるほど!理解出来ました!! ありがとうございました!