GmailのSMTPを用いたメールフォームCGI

このQ&Aのポイント
  • Webサイトに問い合わせフォームを作る必要があり、メッセージ送信用のCGIを探しています。
  • SPAM対策のために認証やPOP Before SMTPなどが主流な昨今、従来のようなシンプルなSMTPサーバー以外ですぐ使えるCGIプログラムが見つかりません。
  • GmailのSMTPを利用できるものを探しているのですが、どなたかご存知ありませんか? 国内外のものを探してみたのですが、意外にも今のところ見つけられておりません。
回答を見る
  • ベストアンサー

GmailのSMTPを用いたメールフォームCGI

Webサイトに問い合わせフォームを作る必要があり、メッセージ送信用のCGIを探しています。いくつかフリーのものを見つけたのですが、SPAM対策のために認証やPOP Before SMTPなどが主流な昨今、従来のようなシンプルなSMTPサーバー以外ですぐ使えるCGIプログラムが見つかりません。あえてメールサーバーを立てるのも大変なので、今後の汎用性も考えてGmailのSMTPを利用できるものを探しているのですが、どなたかご存知ありませんか? 国内外のものを探してみたのですが、意外にも今のところ見つけられておりません。 もしそのようなものが存在しない場合に、Clip mail( http://www.kent-web.com/data/clipmail.html )あたりをベースにCPANのモジュール(Email::Send::GmailかSend::Gmail::Simpleあたり)を組み合わせて改造するか、もしくは自作することも考えていますが、なにぶん当方プログラミングの技術はそこまで高くはないので、できれば避けたいです。 どなたか詳しい方がいらっしゃいましたら、アドバイスいただければ幸いです。よろしくお願いします。

  • CGI
  • 回答数2
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

以下のcpan モジュールをサーバに入れられるなら、できると思います。 Net::SMTP Authen::SASL Module Net::SMTP::SSL MIME::Entity #!/usr/bin/perl use warnings; use strict; use utf8; use Carp; use Encode; use Net::SMTP; # Require Authen::SASL Module use Net::SMTP::SSL; use MIME::Entity; my $smtp_server = 'smtp.gmail.com'; my $smtp_port = '465'; my $smtp_acc = shift || croak "Require Gmail Acount"; system "stty -echo"; print "Password: "; chop( my $smtp_pwd = <STDIN> ); print "\n"; system "stty echo"; my $mail_to = $smtp_acc; my $mail_bcc = $smtp_acc; my $mail_from = $smtp_acc; my $mail_attached = shift || undef; my $mail_subject = '件名'; my $mail_body = << 'END_MAILBODY'; 本文1 本文2 END_MAILBODY $mail_subject = encode( 'MIME-Header-ISO_2022_JP', $mail_subject ); $mail_to = encode( 'MIME-Header-ISO_2022_JP', $mail_to ); $mail_bcc = encode( 'MIME-Header-ISO_2022_JP', $mail_bcc ); $mail_from = encode( 'MIME-Header-ISO_2022_JP', $mail_from ); $mail_body = encode( 'ISO_2022_JP', $mail_body ); my $mime = MIME::Entity->build( From => $mail_from, To => $mail_to, Bcc => $mail_bcc, Subject => $mail_subject, Type => "text/plain; charset=ISO-2022-JP", Data => $mail_body ) or croak "mime build error : $!"; if ($mail_attached) { if ( -f $mail_attached ) { $mime->attach( Path => $mail_attached, Type => "application/octet-stream", Encoding => "Base64" ) or croak "mime attach error : $!"; } else { croak "no such file exsits : $mail_attached"; } } my $smtp_ssl = Net::SMTP::SSL->new( $smtp_server, Port => $smtp_port, Debug => 1 ) || croak "smtp ssl conn error : $!"; $smtp_ssl->auth( $smtp_acc, $smtp_pwd ) or croak "smtp ssl auth error : $!"; $smtp_ssl->mail($mail_from); $smtp_ssl->to($mail_to); $smtp_ssl->bcc($mail_bcc); $smtp_ssl->data(); $smtp_ssl->datasend( $mime->stringify ) or croak "data send error : $!"; $smtp_ssl->dataend() or croak "data end error : $!"; $smtp_ssl->quit;

その他の回答 (1)

  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.1

http://webmastertool.jp/  ↑ こちらにご希望に添うものがあると思います。

関連するQ&A

  • この環境のwebサーバーで動作するメールフォームを教えてください

    この環境で動作する添付ファイルの送信も可能なメールフォームを探しています。 サーバー:Windows2000 Webサービス:IIS6.0 主な利用可能スクリプト(実行ファイル):htm,html, asp, perl, cgi sendmail使用不可/SMTPサーバーの中継を利用 できればkentwebさんのものを使用したいと思っているのですが、そのまま放り込んでも動きませんでした。 改行コードが化けているなども無し・・ http://www.kent-web.com/data/clipmail.html 名前・メールアドレス・ラジオボタン・選択・テキストエリアなど全部で10項目ほどのフォームを作成したいのですが・・ よろしくお願いします。

  • メールフォームからメールが届きません

    メールフォームからのメールが届きません kent-web でclipmailをダウンロード・設置して チェックモードでエラー確認、CGIも作動しております。 HP上も正常に動作、相手にも確認メールが届くのですが こちらに届きません 原因が分からずネット上で色々と 検索したのですが答えが見つからずこちらで質問させていただきたく 書き込みしました。 HPはこちらになります。 http://saitamaya.cc/kantan.html どこの記述がおかしいのでしょうか? 宜しくお願い致します。

  • CGIの設置

    CGI設置に挑戦しています。 http://www.kent-web.com/bbs/clip.html KENT WEBのClip Boardを設置しようと思っているのですが、ホームディレクトリってどうやって設定するんですか? あと、3G2ファイルをアップロードできるようにしたいのですが、どうすればよいでしょうか?

    • 締切済み
    • CGI
  • メールフォームのcgiの設置がうまくいきません。

    http://cgi.jp-paradise.net/600/ こちらのURLからUNIX用(EUC_CRLF) をダウンロードしてChapter5のmail378.cgiからmail383.cgiのメールフォームを試してみたのですが、mail378.cgiはうまくメール受信できたのですが、それ以外のmail379.cgiからmail383.cgiがメール受信できません。 mail378.cgiはsebdmailでメールサーバー名の記載が不要で他のmail379.cgi~mail383.cgiはモジュールを使用しメールサーバー名の記載が必要なのでその部分がメール受信できない理由なのかと思いますが 受信できない原因は何でしょうか? 受信先はヤフーのフリーメールで メールサーバー名は『$SMTP_HOST = 'smtp.mail.yahoo.co.jp';』(『』内)にしています。 自分でファイル内の変更したのは「メールのあて先」と「メールサーバー名」です。パーミッションはcgiを755に変更しています。 使用サーバーはXreaです。

    • 締切済み
    • CGI
  • YahooジオシティーズのCGIメールフォーム使用

    yahooジオプラスにおいて Software error: 接続失敗 at ./lib/io-socket.pl line 57. For help, please send mail to this site's webmaster, giving this error message and the time and date of the error. とCGIメールフォームを設置したまではよかったのですが、送信を押すと上記エラーが出てしまいます。これはyahooジオプラスがそもそもソケット通信を禁止しているためか、それともSMTPサーバ側の(Dionとyahooフリーメールを試しました)問題なのか、どう思われますか? お力をおかしください。よろしくおねがいします☆ ちなみにメールフォームは ttp://www.kent-web.com/data/postmail.html です。

    • ベストアンサー
    • CGI
  • Gmail と SMTP

    Gmail のデータを サンダーバードでやり取りしようとしています。 適当に設定したのを後で見たら、サンダーバードの設定は サーバー名 smtp.googlemail.com ポート 465 認証方式 通常のパスワード認証 接続の保護 SSL/TLS となっていました。 これを、ポート番号 587 サーバーが smtp-auth.**** となるように変更できますか? 普段はヤフーメールしか使っていないので設定が良く分かりません。 もしできたとして、どちらの接続がお勧めでしょうか? よろしくお願いいたします。

  • php メールフォーム SMTP メールサーバー

     環境は、 windows7 32bit・ XAMPP version1.8.1(Apache MySQL) です。. phpを、 「PHP プログラミングの教科書」 にて、勉強中のものですが、『3-2 メールフォーム』のメールサーバーの設定で、つまってしまいました。  外部メールサーバーを、SMTPに指定して、メールを受け取るプログラムです。   外部サーバーに、 Yahoo(またはGmail ) を利用しようとして、つまっています。 「PHP プログラミングの教科書」の説明では、PHP設定ファイル(php.ini)のメール設定で、 デフォルトで、 --------------------------- SMTP = localhost smtp_port = 25 --------------------------- の部分を、 ↓ --------------------------- SMTP = xxxxx.xxxxx.com(メールサーバー) smtp_port = 25 username = xxxxx password = xxxxx --------------------------- と、変更・追加すれば、よいとのことで、 SMTP = smtp.mail.yahoo.co.jp smtp_port = 25 username = yahooのID password = yahooのパスワード と設定しました。 phpのファイルにアクセスすると、文字の入力から、送信までのページ進行には、問題ないのですが、メールが受信(または送信)されません。メール送信は、mb_send_mail関数を使用してます。ヤフーデリバーというものに、登録して、ヤフーのサーバーの情報などを確認しました。 メールソフト(outlook,thunderbirdなど)は、必要なのでしょうか?書籍にはなんの記述もないので、できるのかとおもってるのですが、ネットで調べると、Gmailと、メールソフトと、PEAR:Mailで、メールを送信する。という記述が多いのですが、基本的なことを把握してないと思いますので、ご指摘いただけたらと思います。よろしくお願いいたします。ヤフー 以下、phpのコードです。 <?php //サニタイズ関数の定義 function hsc($a){ return htmlspecialchars($a, ENT_QUOTES ,"UTF-8"); } $uname = hsc($_SESSION["uname"]); $email =hsc($_SESSION["email"]); $message =hsc($_SESSION["message"]); // メール本文の組み立て $to = "yahooの自分のアドレス"; $title ="【メールフォームより】"; $ext_header ="From : {$email}"; //本文を組み立てるヒヤドキュメント $body = <<<EOM --------------------------------------------------------------------- 【webサイトからのメール】 お名前:{$uname} メールアドレス:{$email} メッセージ:{$message} --------------------------------------------------------------------- EOM; //メール送信の実行 $rc = mb_send_mail($to, $title, $body, $ext_header); if(!$rc){ exit; }else{ $_SESSION = NULL; } ?> 試したことは、 ・ポート番号を、587に変更する。 ・php.iniのSMTPなどの前に、「;」があったので、それを削除した。

    • ベストアンサー
    • PHP
  • CGIが上手く設置できません

    質問させていただきます。 CGIがうまく設置できなくて困ってます。 PCはMacでFTPソフトはFetchです。 KENTWEBのClipMailを設置したいです。 http://www.kent-web.com/data/index.html サーバーの方はCGIを設置OKで、Perlのパスは下記のようになる様です。 http://www.cpi.ad.jp/support/faq_func/faq_func_cgi/support-187.html KENTWEBの説明に書いてあるようにCGIファイルをテキストエディットで開いて 各項目を変更しました。 ※でもsendmailのパスはサーバーサイトに書いていなかったので 取り急ぎ空欄で設定しました。 http://www.kent-web.com/data/clipmail.html その後、Fetchのテキスト形式でアップロードしました。 ※public_html直下にはアップロードしませんでした。上げたのは3階層中です。 あらかじめ、サーバー側がCGIファイルを入れるフォルダ(cgi-binフォルダ)がありましたが その中に入れなくても良い様なので、別階層にいれました。←public_html直下でなく3階層中。 http://www.cpi.ad.jp/support/faq_func/faq_func_cgi/support-186.html その後、アクセス権を設定しました。 init.cgiは644で、それ以外は755 確認するとエラー画面が表示されました。 このような流れなのですが、何が良くなかったのでしょうか… アドバイスよろしくお願いします!

    • ベストアンサー
    • CGI
  • フォームメールが動いているのか?

    KentWEBさんのところからフォームメールのcgiを借りてきて、 http://www.kent-web.com/data/index.html 大学のサーバにおいています。簡易チェックを表示したところ sendmailのパスも正しいようで、エラーは出ませんし、 実際にテストしてみたところ、「送信完了しました」の表示まででます。 ところがメールが届きません。 何かトラブルの原因と思われることがわかりましたら、 是非教えてください。よろしくお願いします。

    • ベストアンサー
    • CGI
  • Postfixでメールフォーム・・・・

    Vine Linux3.2でサーバーを動かしているのですが、先日CGIのメールフォームを設置できればいいなぁ~と思い、早速インターネットでいろいろと調べたところ、Vine Linux3.2に標準でインストールされているPostfixでもメールフォームができるというとでさっそく試してみました。 まず、KENT-WEBのホームページ( http://www.kent-web.com/ )にあるCGIスクリプト「PostMail」をダウンロードしてsendmailへのパスを/usr/bin/sendmail.postfixに変更し、サーバーにアップして実行してみたのですが、「メール送信失敗」と出ます。 Checkモードで確認してみると メールソフトパス:NG → /usr/bin/sendmail.postfix となっています。 どうすればPostfixでもメールが送信できるようになるでしょうか? アドバイスよろしくお願いします。