お知らせ
2008年4月8日
「Movable Typeプロフェッショナル・スタイル」が発売されました。
Movable Typeの第一線に関わる人々の共著で、Movable Typeをビジネスサイト構築に活かすテクニックが満載です。
Movable Typeでサイト構築を行っているWeb制作会社等の方々にお勧めです。
他にも多数書籍を執筆しています。
こちらもぜひご覧ください。
メールフォームプラグインV2.0・その5(メール送信エラーへの対策)
メールフォームプラグインV2.0を導入された方の中で、「メールを送信すると『メールを送信することができませんでした。』とエラーが表示された」という方が数名いらっしゃいました。
また、これまでのメールフォームプラグインでも、同様の現象が出た方が数名いらっしゃいます。
このエラーへの対策を解説します。
1.メールフォームプラグインのメール送信の仕組み
メールフォームプラグインでは、Movable Typeのメール送信モジュール(MT::Mail)を使って、メールを送信しています。
また、MT::Mailは、サーバーにインストールされているメールサーバーのプログラム(sendmail等)か、外部のメールサーバーのどちらかに、メール送信を依頼する形を取っています。
「メールを送信することができませんでした。」のエラーメッセージは、メールサーバーがメール送信の処理に失敗したときに表示されます。
2.対策その1・mt-config.cgiの書き換え
上で述べたように、メールの送信は、サーバーにインストールされているメールサーバーのプログラムか、外部のメールサーバーを使って行われます。
そのどちらを使うかは、mt-config.cgi(Movable Typeの設定ファイル)で決まります。
Movable Typeのインストール先ディレクトリに、mt-config.cgiファイルがあります。
そのファイルを開いてみて、以下のような記述があるか、もしくはMailTransferに関する記述が何もない場合は、サーバーにインストールされているメールサーバープログラムが使われます。
MailTransfer sendmail SendMailPath メールサーバープログラムのパス
一方、以下のような記述があれば、外部のメールサーバーが使われます。
MailTransfer smtp SMTPServer メールサーバーの名前
ただ、外部のメールサーバーを通してメールを送信することは、現状では多くの場合で無理です。
最近のメールサーバーは、スパムメール等への対策として、「Outbound Port 25 Blocking」(OP25B)という仕組みを導入しています。
ところが、Movable Typeから外部のメールサーバーを通してメールを送信する場合、そのプログラムはOP25Bには対応していません。
したがって、mt-config.cgiに「MailTransfer smtp」の記述がある場合、それを「MailTransfer sendmail」に変更し、また「SendMailPath メールサーバープログラムのパス」の行を追加します。
なお、「メールサーバーのプログラムのパス」は、各レンタルサーバーのヘルプ等のページに、「sendmailのパス」等の形で記載されています。
例えば、「sendmailのパスは『/usr/sbin/sendmail』です。」と記載があるレンタルサーバーの場合、mt-config.cgiに以下の記述を入れます。
MailTransfer sendmail SendMailPath /usr/sbin/sendmail
なお、自宅サーバーで運用している場合、上記の設定をしても、プロバイダを通る際にOP25Bがかかってしまって、メールが送信できないことがあります。
その場合は、自宅サーバーのメールサーバープログラムに、OP25B対策のための設定を行う必要があります。
2.対策その2・メールの送信元アドレスの変更
対策その1を行ってみても、エラーが出ることもあります。
その場合、お使いのサーバーのメールサーバーのプログラムでは、送信元のメールアドレスに制限がかかっていることが考えられます。
メールフォームプラグインでは、メールフォームで入力されたメールアドレスを送信元として、メールを送信する仕組みを取っています。
送信元のメールアドレスに制限がかかっている場合、メールフォームで入力されたメールアドレスを送信元にすることができずに、送信エラーになります。
この場合は、以下の作業を行ってみてください。
- レンタルサーバーの設定で、ご自分のドメインのメールアドレスを1つ作成し
ます。
例えば、ブログのアドレスが「http://www.foo.com」の方なら、「○○○@foo.com」のようなメールアドレスを作ります。
また、すでに作成してあるなら、そのメールアドレスを使うこともできま す。 - メールフォームの設定で、「基本設定」の「送信先のメールアドレス」の欄に、 上で作成したメールアドレスを入力します。
- メールフォームプラグインのlib/MailForm.pmをメモ帳等で開きます。
- MailForm.pmの340行目付近に、以下のような部分があります。
# send mail $head{To} = $tmail; $head{From} = $email; my $mtmpl = MT::Template->new;この部分を以下のように書き換えて、MailForm.pmをアップロードし直します。# send mail $head{To} = $tmail; $head{From} = $tmail; $head{'Reply-To'} = $email; my $mtmpl = MT::Template->new;
3.詳細なエラーメッセージの表示
上記の2つの対策を行っても、状況が改善しないこともあります。
その場合、送信エラー時に詳細なエラーメッセージを表示するようにしてみてください。
エラーメッセージを見れば、何らかの対策を考えられるかも知れません。
まず、lib/MailForm.pmの351行目を、以下のように書き換えてください。
push @errmsg, $app->plugin->translate('Sending mail failed.');
push @errmsg, $app->plugin->translate('Sending mail failed.') . ' : ' . MT::Mail->errstr;
また、368行目でも上と同じ書き換えを行います。
書き換えが終わったら、MailForm.pmをアップロードし直します。
ただし、エラーメッセージを見ても、サーバーの設定等が原因で、こちらではどうにもできないこともあり得ます。
その場合は、申し訳ありませんが、当プラグインではメールの送信を行うことはできません。
前後の記事
関連するエントリー(16件)
- メールフォームプラグインV2.0・その19(テンプレートセットの配布)(2008年03月16日 13:35)
- メールフォームプラグインV2.0・その18(メールフォームのAjax化)(2008年03月09日 15:32)
- メールフォームプラグインV2.0・その16(チェック必須チェックボックスの作成)(2008年03月04日 10:08)
- メールフォームプラグインV2.0・その15(未入力エラーの判別)(2008年02月29日 12:01)
- メールフォームプラグインV2.0・その14(メールアドレスの入力確認)(2008年02月24日 10:53)
- メールフォームプラグインV2.0・その12(ラジオボタン/セレクトの追加)(2008年02月19日 13:49)
- メールフォームプラグインV2.0・その11(チェックボックスの追加)(2008年02月16日 08:40)
- メールフォームプラグインV2.0・その10(テキストボックスの追加)(2008年02月13日 10:59)
- メールフォームプラグインV2.0・その9(メール本文/返信メールテンプレートの作成)(2008年02月12日 16:43)
- メールフォームプラグインV2.0・その8(送信確認/送信エラー/送信完了テンプレートの作成)(2008年02月11日 14:25)
- メールフォームプラグインV2.0・その7(「メールフォーム」テンプレートの作成)(2008年02月09日 16:04)
- メールフォームプラグインV2.0・その6(「メールフォーム共通部分」テンプレートの作成)(2008年02月07日 10:50)
- メールフォームプラグインV2.0・その4(自動返信メールの設定)(2008年02月04日 14:50)
- メールフォームプラグインV2.0・その3(メールフォームの基本設定)(2008年02月02日 10:30)
- メールフォームプラグインV2.0・その2(サンプルテンプレートセットのインストール)(2008年02月01日 16:04)
- メールフォームプラグインV2.0・その1(概要とインストール)(2008年01月31日 14:38)
トラックバック(0件)
このブログ記事を参照しているブログ一覧: メールフォームプラグインV2.0・その5(メール送信エラーへの対策)
このブログ記事に対するトラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/1199.


コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
藤本さま
早速対応してくださり、ありがとうございます。
1と2の対策をしましたら 送信できました。
ほんとにありがとうございました。
Fujimoto 様
先日は質問させていただき、失礼しました。
早速掲載していただいたエントリの内容を拝見し、対策をしたところ、無事メールを送信できました。
今回はお世話になり、ありがとうございました。
>りかさん、sinnchanさん
こんにちは。
お二人とも無事メールを送信できるようになったとのことで、良かったです。