- ベストアンサー
GmailのSMTPを用いたメールフォームCGI
- Webサイトに問い合わせフォームを作る必要があり、メッセージ送信用のCGIを探しています。
- SPAM対策のために認証やPOP Before SMTPなどが主流な昨今、従来のようなシンプルなSMTPサーバー以外ですぐ使えるCGIプログラムが見つかりません。
- GmailのSMTPを利用できるものを探しているのですが、どなたかご存知ありませんか? 国内外のものを探してみたのですが、意外にも今のところ見つけられておりません。
- みんなの回答 (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)
http://webmastertool.jp/ ↑ こちらにご希望に添うものがあると思います。