SENDMAIL、SMTPを使わずCGIのみでHPに設置したフォームから
メールの送信って出切るのでしょうか?
皆様のお知恵をご教授ください。
宜しくお願いします。

A 回答 (2件)

SMTP はメールを転送するプロトコルなので、どこかで


サーバとSMTPを使用してメールを転送する必要があります。
sendmail もSMTPを使用して転送しています。
インターネット以外へメールを転送するのなら uucp で
という方法もありますが、そういうことではないのでしょう?
CGI のみでSMTPを使用してメールを送ることは出来ます。
モジュールの Net::SMTP を使用すれば出来ます。(インストールされている場合)
perldoc Net::SMTP で使用法がでますので確認してください。
    • good
    • 0

こんにちは。



サーバ上に置いたプログラムで、というレベルなら不可能だと思います。

フォームメールで、ということですから、
<form action=mailto>
であれば、cgiに頼らず送れますが、必ず送れるわけではありません。
ナゼそのようなことをされたいのかわかりませんが、メール送受信の仕組みやサーバについて勉強されることをお勧めします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QCGI メールフォームからBCCのアドレスにメールが送信できない(Perl)

初心者で簡単なメールフォームを作成しております。
宛先となる支店を選択後、メールのTOにその支店のアドレスが入り、メールは受信できます。同時にBCCにも一人のアドレスを入力してメールを送信したいのですが、BCCにはメールが届きません。
以下に抜粋したソースを記述しますので、どなたかご教授願います。

--------------------- HTML 部分 -------------------------------
<form action="./cgi/sendmail.cgi" name="myform" method="POST">
<table>
<tr><td>あなたのメールアドレス</td>
<td><input type="text" name="email" size="60" maxlength="60"></td>
</tr>
<tr><td>お問合せ先の支店を選択</td>
<td><select name="address">
<option value="" selected>選択してください</option>
<option value="aaaaa@domain.jp">A支店</option>
<option value="bbbbb@domain.jp">B支店</option>
<option value="ccccc@domain.jp">C支店</option>
</select>
</td>
</tr>
<tr>
<td><input type="submit" name="submit" value="送 信"></td>
<td><input type="reset" name="reset" value="キャンセル"></td>
</tr>
</table>
</form>
--------------------- cgi 部分 --------------------------------
require '../cgi-lib.pl';
require '../jcode.pl';

$sendmail = '/usr/sbin/sendmail';

$bcc_address = 'bccbcc@gmail.com';

$email = $in{'email'};
$address = $in{'address'};

&jcode'convert(*email,'sjis');
&jcode'convert(*address,'sjis');

$message = <<EOF;
Subject: 質問
From: $email
Errors-to: $email
Reply-To: $email

--------------------------------------------------------------
質問内容
--------------------------------------------------------------

[お客様のメールアドレス] $email

EOF

open(MAIL,"|$sendmail $address");
print MAIL $message;
print MAIL "BCC: $bcc_address\n";
close(MAIL);
print <<EOF;
Content-Type: text/html

<html>
<head>
<title>送信しました</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
●お客様のメールアドレス $email<br>
</body>
</html>
EOF

初心者で簡単なメールフォームを作成しております。
宛先となる支店を選択後、メールのTOにその支店のアドレスが入り、メールは受信できます。同時にBCCにも一人のアドレスを入力してメールを送信したいのですが、BCCにはメールが届きません。
以下に抜粋したソースを記述しますので、どなたかご教授願います。

--------------------- HTML 部分 -------------------------------
<form action="./cgi/sendmail.cgi" name="myform" method="POST">
<table>
<tr><td>あなたのメールアドレス</td>
<t...続きを読む

Aベストアンサー

> open(MAIL,"|$sendmail $address");
> print MAIL $message;
> print MAIL "BCC: $bcc_address\n";
> close(MAIL);

これだと、本文($message)の末尾に「BCC: …」という行が追加されるだけです。
送信先は sendmail の引数で指定しますから、
> open(MAIL,"|$sendmail $address $bcc_address");
> print MAIL $message;
> close(MAIL);
と、bccのメールアドレスも引数に追加しておけば、
そちらにもメールが届くようになります。
それと、
> $message = <<EOF;
> Subject: 質問
> From: $email
> Errors-to: $email
> Reply-To: $email
ここに、
> To: $address
という行は追加しておくべきでしょう。
このままでは、メール内に宛先が入ってません。
いわば、$address の方にも Bcc で送っているような状況です。

それと、
・Subject: は、Mime エンコードするべき
・MIME ヘッダ(MIME-Version、Content-Type、Content-Transfer-Encoding)を付けるべき
かと思います。

> open(MAIL,"|$sendmail $address");
> print MAIL $message;
> print MAIL "BCC: $bcc_address\n";
> close(MAIL);

これだと、本文($message)の末尾に「BCC: …」という行が追加されるだけです。
送信先は sendmail の引数で指定しますから、
> open(MAIL,"|$sendmail $address $bcc_address");
> print MAIL $message;
> close(MAIL);
と、bccのメールアドレスも引数に追加しておけば、
そちらにもメールが届くようになります。
それと、
> $message = <<EOF;
> Subject: 質問
> From: $email
...続きを読む

Qsendmailで複数アドレスに送信するも2件までしか送信出来ない

会員向けメール通信システムを作成しています。(けしてSPAMではありません。)

PerlCGIによりSendMail送信させますが、次のようなコードで(一部省略しています。)
# ===================================================
$MAILTO="xxx\@xxxx.com;ooo\@oooo.com";
$mail_to = mimeencode($MAILTO);
$mail_from = mimeencode($from);
$mail_subject = mimeencode($subject);

$m_header = <<END;
Bcc: $mail_to
From: $mail_from<$mail>
Subject: $mail_subject
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP

END

#sendmailで送信
open(MAIL, "| $SENDMAIL -t -f $mail");
print MAIL $m_header, $m_body;
close MAIL;
# ===================================================

で表記のように
$MAILTOが2件までなら送信が出来ますが
"xxx\@xxxx.com;ooo\@oooo.com";
ではなく
"xxx\@xxxx.com;ooo\@oooo.com;aaa@aaa.jp";
の様に3件以上になると送信されません。

なにが原因であるかと、対応策を教えて下さい。

会員向けメール通信システムを作成しています。(けしてSPAMではありません。)

PerlCGIによりSendMail送信させますが、次のようなコードで(一部省略しています。)
# ===================================================
$MAILTO="xxx\@xxxx.com;ooo\@oooo.com";
$mail_to = mimeencode($MAILTO);
$mail_from = mimeencode($from);
$mail_subject = mimeencode($subject);

$m_header = <<END;
Bcc: $mail_to
From: $mail_from<$mail>
Subject: $mail_subject
Mime-Version: 1.0
Content-Type:...続きを読む

Aベストアンサー

複数のメールアドレスを区切るのはセミコロンじゃなくて カンマ半角スペース だったとおもいますが、、、
それはそれとして、1行の制限はありますよ。

Bcc: メールアドレス1
Bcc: メールアドレス2
Bcc: メールアドレス3

のように、受け取り手1件ごとにBccを1行作るようにするのが最もらくだと思います。

Qメアド確認をしてから送信するフォームメールのCGI

フリーのCGIプログラムを探しています。

利用者に最初にメールアドレスを入力してもらい、
そのメールに記載されたURLをクリックするとメールフォームのページが開くというCGIです。

これならメールアドレスの間違いが防止できると思いますので、どなたかご存じでしたら教えてください。

よろしくお願い致します。

Aベストアンサー

こちらにありますよ
http://collie.dip.jp/postmail.html

Qsmtpでのメール送信?

最近レンタルするようになったサーバーがsendmailがつかえないと知りました。
smtpでもメール送信のスクリプトを組める様ですが、簡単なサンプルをご存知の方教えていただけないでしょうか?
よろしくお願いいたします。

Aベストアンサー

Perlで良ければ下記のようなものがあります

参考URL:http://www.spencer.ne.jp/CommonGatewayInterface/WinApacheServer/cgi/smtp.txt

Q#exec cgi="**.cgi"をCGIページで表示する

#exec cgi="**.cgi"
を使って、全ページが同じように表示されるようにしたのですが、
掲示板等のCGIページではなぜか表示されず、ソースを見てみると
<!--#exec cgi="**.cgi"-->
がそのまま表示され、ただコメントとして扱われていました。
普通のHTMLファイルと同じように
CGIでも**.cgiファイルを表示したいのですが、どうすればいいのでしょうか

よろしくお願いします。

Aベストアンサー

CGIの中でしたら
include
または
require
で呼び出せばいいかと思います。


このカテゴリの人気Q&Aランキング

おすすめ情報