• 締切済み

Rubyでsendmailを用いる方法

Rubyのカテゴリがなくて少し残念だったりしますが……。 詳しい方どうぞご教示くださいませ。 今までずっとデータの処理などにRubyを用いていたのですが、最近になってようやくRubyでCGIを組むという行為に手をつけ始めました。全体的にPerlよりも軽やかに書けて快適なのですが一箇所疑問があります。 それは題名の通りsendmailの使い方なのですが、Rubyでメール送信方法を検索すると大抵SMTPを利用した手順が紹介されていますよね。もしくはメールの文法に深く突っ込んで意味不明なスクリプトですか……。 確かにこれらをコピペすれば送信は可能といえば可能なんですが、どうも自分で納得が行っていない部分があると気持ち悪いというか、エラーが出たら対処できません。 CGIを設置するサーバにはsendmailがセットアップされているという前提として、これを使ってRubyでメールを送るスクリプトをどなたか示していただけないでしょうか。僕が探し漏らしているだけできちんと説明されているサイトがあるのでしたら、URLだけでも構いません。 宜しくお願いします。 ※ ネットワークうんぬんは絶対的に見ても相対的に見ても悲しいくらい理解が浅いので、もしとんでもない勘違いを申しているのでしたらご指摘いただければありがたいです。

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

perlで、 open MAIL, '|/usr/bin/sendmail' or die; print MAIL .... close MAIL としているところを open('|/usr/bin/sendmail', 'w') do |f| f.print .... } のように置き換えればいいんじゃないでしょうか。 #ブロックを使っているのでクローズは不要

suzrun
質問者

お礼

それで動くですか! ……どうもスクリプトの方で何かミスをやらかしていたんでしょうか。お手数おかけして申し訳ないです。 理屈の上ではいいはずなのになんでだー! と騒いでいました。 言語のせいにしないで、まず自分を疑えデスネ。 ありがとうございます。

関連するQ&A

  • sendmail

    フォームメールのcgiを自宅サーバーで作成しようと して、サンプルのcgiを実行しようとおもったのですが、sendmailのパスを設定してくださいとあるのですがsendmailがどこにもありません。どこから入手すればよいのですか?サーバーはwindowsです。 サンプルcgiは、10日でおぼえるPerl/CGIの第5日4時限目のとこです。 よろしくお願いします。 当方はperl初心者です。

    • ベストアンサー
    • Perl
  • sendmailが上手く行きません。

    CGIに詳しい方、教えてください。 HP上にサンプル応募フォームを作って、アンケート形式で答えてもらい、その結果をメールで私に送ってもらう(sendmail)の件です。 以下のようにCGIを記入しています。 フォームに記入して「送信」すると、「送信は完了しました」というメッセージは出るのですが、一向にメールが届きません。 どこか記述がおかしいのでしょうか? なお、HPのFAQには Sendmailのパスは /usr/sbin/sendmail です。 と書いてあったので、それにあわせたつもりです。 よろしくお願いします。 ------------------------------------------- #!/usr/bin/perl $ver = 'PostMail v1.01'; #------------# # 基本設定 # #------------# # メールソフト種類 # 1 : sendmail (UNIX) # 2 : blatj (NT) $prog_type = 1; # コード変換ライブラリ require './jcode.pl'; # メールソフトまでのパス # → sendmailの例: /usr/lib/sendmail # → blatjの例: c:\www\mail\blatj.exe $mailprog = '/usr/sbin/sendmail'; # 送信先メールアドレス $mailto = '私のメールアドレス'; # 送信前確認 # 0 : no # 1 : yes $preview = 1; # メールタイトル $subject = "サンプル応募メール"; # ホスト名取得モード # 0 : $ENV{'REMOTE_HOST'}で取得できる場合 # 1 : gethostbyaddr関数で取得できる場合 $get_remotehost = 0; # スクリプト名 $script = './sample.cgi'; # 一時ファイル(blatjの場合のみ) $tempfile = "./$$\.tmp"; # 送信後の戻り先 $back = 'トップページのURL'; # method形式 (0=no 1=yes) $method = 'POST'; # bodyタグ $body = '<body bgcolor="#F1F1F1" text="#000000">'; ------------------------------------------

    • 締切済み
    • CGI
  • sendmailでメールが送信されない。

    こんにちは。 自動応答メールフォームのCGI「ThemeResMail」というのを 使っているのですが、うまく動作しません。 このcgiをアップしたのは以下のレンタルサーバーです。 http://www.dot5hosting.com/dot5/ 使用しているcgiはこれです。 http://apps.cside.com/theme/tmresmail/ メール送信完了画面は出るのですが、 送信者、あて先共にメールが届きません。 同じ設定で他のサーバー(xrea)ではうまくいきました。 sendmailとperlのパスは調べた所、間違いないようです。 ■dot5でのパス sendmail /usr/sbin/sendmail Perl /usr/bin/perl 何が原因なのかどんな事でも結構ですのでコメント頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • sendmail

    PerlやPHPにはsendmailを使ってメール送信する関数があったと思いますが、sendmailというメールサーバを起動していなくてはいけないのですか? メールサーバならsendmailサーバの他にpostfixやqmailなどがあるじゃないですか。

  • sendmailを使わずにメールを送信する方法をご存知の方いらっしゃいますか?

    CGIはPerlスクリプトです。 よくある一般の商用サイトで、発注をしたら『ご注文を承りました…』な~んて、アウトルックなどに確認メールが届きますよね。 それと同じシステムを構築したいのですが、私が加入しているレンタルサーバー側で『sendmail』の使用を禁止しています。 なんとか、その難点を突破して、しかも『注文ありがとう』のメールを自動送信したいのです…。 どなたか突破方法をご存知の方いらっしゃれば、よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • perlからsendmailを使う

    現在、mod_perlを使ってサイトを構築しているのですが、その中で、sendmailを使ってメールを送信している処理が遅く困っています。 その処理が遅いため、画面へのHTML出力が遅くなっています。(HTML出力処理は、メール送信処理よりさきにやっているのですが・・) 下記は、ソースの該当部分です。 直接、sendmailに渡しているのですが、 この処理がいけないのでしょうか? 何か改善方法があるようであれば教えてください。 ちなみに、通常のCGIだとforkで、別プロセスを立てて そのプロセスにメール送信をさせて、主プロセスは、HTML出力をさせることはできると思うのですが。 プロセスが常駐しているmod_perlでは、有効な手なのでしょうか。 -------------------------------------- open(SENDMAIL,"|/usr/lib/sendmail -t") or $err = 1; if ($err == 0) { print SENDMAIL $mail_body; close(SENDMAIL); $err_msg = "メール送信正常に処理しました。\n"; } else { $err_msg = "メール送信エラー:ticket_cd:$$ref{ticket_cd}\n"; } --------------------------------------

    • ベストアンサー
    • Perl
  • cgi-perl の sendmail について

    cgi-perlのsendmailを使ってWebサイトに問い合わせフォームを作っています。 2つのサイトを同じサーバーに持っているのですが、かたやきちんと送信できるのに、片方はメールが届きません。 メールが届かない方も送信ボタンを押すときちんと出るべき”メールが送信されました”というメッセージは出ます。 このような場合、どこをチェックしたらいいのでしょうか。 もう何度もcgiファイル、htmlファイルを確認して、属性なども確認しているつもりなのですが、きっとどこかが違っているのだと思います。 いっそエラーが出てくれれば、わかりやすいのですが、行き詰っています。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • CGI
  • sendmailの設定についてお願いします

    sendmailの設定で、ある特定のホスト宛のメールを送信するとき、 同時に起動するSMTPの数を設定したいのです。 それ以外のメール送信時には同時起動するSMTPの数は気にしません。 このような2つの設定を一つのsendmailでできるのでしょうか? オライリーのリファレンスを読んでも良くわかりませんでした。 可能であれば、是非とも設定項目を教えて下さい。 宜しくお願い致します。

  • Mail::Sendmailの使い方

    お世話になっております。 先日よりsendmailの調子がおかしくていろいろ調べているのですが煮詰まってしまったので詳しい方々にご教授頂きたいと思います。 先日よりMovable Type(CMS)でのメール送信のシステムが機能しなくなり、いろいろ調べているとサーバーのsendmailはきちんと機能しているのですが、perlのモジュールMail::Sendmailがうまく作動していないようなのです。 perlでは、 open (SENDMAIL, "/usr/lib/sendmail -t -i"); (中省略) close(SENDMAIL); という原始的な方法ではメールが送信されるのですが、 use Mail::Sendmail;という使い方では、エラーにはなりませんがずっと読み込み中…状態が続いてメールが送信されませんでした。 Movable TypeでもMail::Sendmailが利用されていますのでここが原因かと思いますが、Mail::Sendmailを使用するにあたって注意すべきこと、または設定すべきことはどのようなことがあるでしょうか?さしあたりどこをチェックしてよいのかわからなくて困っています。 よろしくお願いします。 Mail::Sendmailを利用して作成したスクリプトは以下のようなものです。 #!/usr/bin/perl use strict; use warnings; use Mail::Sendmail; use Encode; use utf8; my $subject = "テスト"; my $message = "テストです。ほげほげ。"; $subject = encode("MIME-Header-ISO_2022_JP", $subject); $message = encode("iso-2022-jp", $message); my %mail = ( "Content-Type" => 'text/plain; charset="iso-2022-jp"', To => 'to@example.com', From => 'from@example.com', Subject => $subject, Message => $message, ); sendmail(%mail); exit;

    • ベストアンサー
    • Perl
  • Rubyってどうよ!?

    Rubyってかなり良さそう(一通り文法を見た限りでは、少なくとも 対象領域 がもろかぶる Perl よりはかなり良さそう)だけど、実際どんなもん? もちろん、現行サポート体制がままなっていないけれど、オライリーからも「動物本」が出ているし、今後PHPと平行して、サポートするところが増えてきそう。 (なんといってもマニュアルが全て日本語から先行して出て行くところが、われわれが他の言語で背負いつづけている一種の「ハンデ」が逆転するわけでおもしろい。) で、Ruby関連の掲示板にとうこうすると、感情的な意見ばかりくるだろうから、ここに投稿したわけなのですが、冷静に見て、将来Rubyはどんなものですかね。 (私の見る限り、「真のオブジェクト指向」「真のスクリプト指向」を実現している唯一の言語だと思うのですけど、文字列系記述はPerlと同等に強力で、オブジェクト指向にいたっては他の言語の追随をゆるさず、スクリプト的柔軟さでも、Perlをも軽く凌駕していると思いました。あくまで文法を一通りみての感想ですが。。。) なお、Ruby関連サイトは大体見て回ったので、サイト紹介はいらんです。

専門家に質問してみよう