フォームを使って、入力されたアドレスにメールを送ろうと思っています。入力されたアドレスに@docomo.ne.jpを追加しようと思うのですが、うまくいきません。
どなたかご教授お願い致します。
ソースはこんな感じです。
$location = 'http://www.0000.co.jp/';
$docomo = '@docomo.ne.jp';
if (open(MAIL, "|$sendmail -f $form{'email'} $docomo -t")) {
$msg = "To: $form{'email'} $docomo\n";
$msg .= "From: $webmaster\n";
No.7ベストアンサー
- 回答日時:
締め切られていないようなので、まだできていないとみなして再度。
現状は@docomo.ne.jpが付けられない、と言うことですが、@docomo.ne.jpをつける必要のない
$webmaster = '0000@0000.co.jp';
へはメールは飛ぶのでしょうか??
ただ@docomo.ne.jpが付けられない、というレベルであれば。
$mail = $form{'email'};
$mail .= '@docomo.ne.jp';
$msg = "To:$mail\n";
もしくは、
$msg = "To: $form{'email'}.$docomo\n";
としてみる、とか。
noopeeさん
いろいろとアドバイスをありがとうございました。
結局この方法では、勉強不足でどこが影響して作動しないかが
わからず、他のフォームメールを元にして作成することができました。
みなさんにいただいたアドバイスをもとに、
この方法でも送信できるように勉強してみます。ご返事おくれたことおわび致します。
No.6
- 回答日時:
>手動で sendmail を起動する方法がちょっとよくわからないのですが、
1. まず送信する内容のファイルを作る。
% vi sendfile
sendfile の内容は
-- ここから ----
To: 090xxxxxxxx@docomo.ne.jp
From: 0000@0000.co.jp
メッセージ
メッセージ
-- ここまで ----
という様な内容のもの
2. sendmail で送信する。
# /usr/sbin/sendmail -f 0000@0000.co.jp -t < sendfile
これで送信出来るかテストする。
----------------------------------------------------------------
あ、今スクリプトの例を見ると
if(open(MAIL, "|$sendmail -f $form{'email'} $docomo -t")) {
は
if(open(MAIL, "|$sendmail -f $webmaster -t")) {
じゃないのかな。
No.5
- 回答日時:
先ほど誤って回答して申し訳ありません。
シングルクォートを見落としていました。
ここから確認ですが、
CGIからでなくて手動で sendmail を起動してメールを送信した場合は
ちゃんと送られるのでしょうか。
sendmail -f xxxx@docomo.ne.jp -t < sendfile
それと sendmail にいきなり送るのではなくていったんファイルに出力して
正しく送る内容が出来ているか確認したほうがいいでしょう。
if(open(MAIL, "|sendmail ....
を
if(open(MAIL, ">/tmp/filename"))
#sendmail が From をチェックしていて relay を拒否しているんじゃ無いだろうか?
#ログに何かメッセージが出てませんか?
#/var/log/maillog or /var/log/messages or /var/log/syslog
この回答への補足
コメントありがとうございます。
手動で sendmail を起動する方法がちょっとよくわからないのですが、
申し訳ないですが、具体的な方法を教えていただけないでしょうか?
No.4
- 回答日時:
$docomo = '@docomo.ne.jp';
を
$docomo = '\@docomo.ne.jp';
にすると、サーバーエラーになる可能性があります。
とほほのperl入門(概要編)
http://tohoho.wakusei.ne.jp/wwwperl1.htm
に、
「ダブルクォーテーションの中では変数やバックスラッシュ( \ )が
評価されますが、シングルクォーテーションの中では単なる文字として
認識されます。」
とある通り、上記の例だとメールヘッダーの「To:」フィールドの内容が
name\@docomo.ne.jp
になるかもしれないからです。
もし、
$docomo = '@your-isp.ne.jp';
(あなたのプロバイダードメイン) などでテストしても送信されない場合、
原因は DoCoMo にあると思います。
参考URL:http://tohoho.wakusei.ne.jp/wwwperl1.htm
この回答への補足
コメントありがとうございます。
試してみたところ、サーバーエラーがでまして、
届いたメールにname\@docomo.ne.jp とついてしまいました。
No.1
- 回答日時:
こんにちは。
うまくいきませんとのことですが、どのような結果になっているのでしょうか?
$msg = "To: $form{'email'} $docomo\n";
このあと、$msgには何が入っていますか?
この回答への補足
noopeeさんこんにちは、
先ほどのものでは、説明不足でした。
申し訳ございません。
最近よくある、i-modeへのアドレスの転送をしようと思っております。
まず、フォームにメールアドレスの@以前の部分を入力していただき、
plに送り@docomo.ne.jpの部分を追加して、
フォームに記入されたメールアドレスへ、
i-modeサイトのURLをメールで送り、
locationで指定をしたページへ飛ばすことがしたいのです。
現状はフォームに入力したアドレスに、@docomo.ne.jpを追加することができません。。。
@docomo.ne.jpをフォームの中にhiddenとして、読ませようともしたのですが、
サーバーエラーがでてしまいます。
以下が全文です。
どこが問題なのでしょうか?
初心者なので、今一つわかりません。
よろしくお願い致します。
#!/usr/bin/perl
require 'jcode.pl';
$kanjicode = 'shift-jis';
$sendmail = '/usr/sbin/sendmail';
&init_form($kanjicode);
$webmaster = '0000@0000.co.jp';
$location = 'http://www.0000.co.jp/';
$docomo = '@docomo.ne.jp';
if (open(MAIL, "|$sendmail -f $form{'email'} $docomo -t")) {
$msg = "To: $form{'email'} $docomo\n";
$msg .= "From: $webmaster\n";
$msg .= 'Subject: '."\n";
$msg .= "
http://www.0000.co.jp/i/
※フォームの入力をされていないにもかかわらず、
このメールを受信された場合は、
どなたかが誤ってあなたのアドレスを
入力してしまった場合がありますので、
このメールを削除してください。\n\n";
&jcode'convert(*msg, 'jis');
print MAIL $msg;
close(MAIL);
print "Location: $location\n\n";
}
sub init_form {
local($query, @assocarray, $assoc, $property, $value, $charcode, $method);
$charcode = $_[0];
$method = $ENV{'REQUEST_METHOD'};
$method =~ tr/A-Z/a-z/;
if ($method eq 'post') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
$query = $ENV{'QUERY_STRING'};
}
@assocarray = split(/&/, $query);
foreach $assoc (@assocarray) {
($property, $value) = split(/=/, $assoc);
$value =~ tr/+/ /;
$value =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value, $charcode);
if ($form{$property}) {
$form{$property} .= ':' . $value;
} else {
$form{$property} = $value;
}
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- ノートパソコン パソコン初心者です。ノートパソコンを探しています。 アドレスやおすすめを教えてください。 ◎パソコン 13 2022/10/01 09:44
- Gmail Gmailから送信したつもりのメールが、docomoメールから送信されていました 何故なんでしょうが 1 2022/09/27 19:56
- その他(SNS・コミュニケーションサービス) Gmailから送信したつもりのメールが、docomoメールから送信されていました 何故なんでしょうが 1 2022/09/27 19:53
- 格安スマホ・SIMフリースマホ スマホの交換でお聞きしたいです。 2 2022/06/06 20:12
- docomo(ドコモ) docomoからアヒモにキャリアを替えようか迷っています 色々なメールのアドレス変更やら宅配の登録ラ 7 2023/02/07 11:40
- docomo(ドコモ) docomoでの機種変更 Google Pixel 6a 11 2022/11/20 12:22
- Y!mobile(ワイモバイル) ワイモバイルデータのバックアップは2 TB ですが パソコンでもデータが見れたり便利ですか? 2 2023/01/25 00:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページビルダー20SPで...
-
sendmailでメールが送信されない。
-
ビジネスメールの敬称
-
テキストボックスの番号を使っ...
-
DATE型変数を初期化する方法
-
初歩的な事だと思います。 Sub...
-
エクセルVBA テキストボックス...
-
数字以外の入力をエラーにする...
-
Excel-VBAでInputBox+Pulldown...
-
入力フォームの値をQRコードで...
-
c#でTextBoxの入力制限
-
TextBoxから数字が文字...
-
教えて!全角文字「μ」の半角
-
EXCEL VBA で指定した範囲に入...
-
ホームページでCGIのフォームを...
-
フォームを再送信しますか?
-
excel vba でユーザーフォーム...
-
ビルダー20 お問合せフォー...
-
uwsc webページ内のテキストボ...
-
アクセスのマクロ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ホームページビルダー20SPで...
-
C言語でのメール送信
-
メールフォームCGIでのエラーメ...
-
ReturnPathが指定できない?
-
postmail
-
sendmailで存在しないアドレス...
-
sendmailが踏み台にされている...
-
CGI メールフォームからBCCのア...
-
入力されたアドレスに@docomo.n...
-
PerlでInternal CGI Error Malf...
-
sendmailでメールが送信されない。
-
ビジネスメールの敬称
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
DATE型変数を初期化する方法
-
Safariで「本当にこのフォーム...
-
VBAで質問があります
-
フォームを再送信しますか?
-
Windowsのアプリ開発ってなんの...
-
Excel-VBAでInputBox+Pulldown...
おすすめ情報