その内容がJavaScriptによって生成されるdivがあります。divの内容をメールで送信できるかどうか疑問に思いました。また、JavaScriptで可能ですか、それともPHPで実行する必要がありますか?
3 に答える
ブラウザのJavaScriptから直接メールを送信することはできません。情報をサーバー側(PHPなど)のファイルに送信する必要があります。
を使用してこれを行うことができform
ますが、フォームフィールドが必要です。
の場合はdiv
、JavaScriptを使用する必要があります。(AJAXを使用して)リクエストを送信できます。または、情報が短く、機密性が低い場合は、メール送信を行うPHPページに移動して、URL文字列に情報を追加できます。
これは、コードの非常に簡単なモックアップです。実際には、入力をフィルタリングし、クリーンなコードなどを作成する必要があります。
Javascript:
window.location.href= "http://www.myDomain.com/email.php?data=" + theData ;
ここで、http://www.myDomain.com/email.phpはphpファイルのURLであり、theDataはdivのコンテンツを含む変数です。
PHP
<?php
mail("me@myDomain.com", "Content of div", $_GET['data']); // arguments are: to, subject, body
?>
$ _GET ['data']は、上記のJavaScriptによって送信されるコンテンツです。
divコンテンツを変数theDataに取得するためのJavaScriptを含めていません
単一のテキストエリアで非表示のフォームを作成し、formメソッドをPOSTに設定し、アクションを「mailto:; subject:」として送信してから送信します。フォームの内容、つまりテキスト領域のDIVの内容は、電子メールとして送信される本文の一部になり、マシンのデフォルトの電子メールクライアントが開かれて、実際にメールが送信されます。
JavaScriptには電子メールを送信する機能がないため、これはPHPで行う必要があります。
JavaScriptでできることは、DIVの内容を取得し、電子メールを送信するPHPスクリプトに送信することです。
あなたがこのようなものを持っているなら:
<form action="your_php_script.php" method="POST">
<textarea name="body"></textarea>
<input type="submit" value="Send" />
</form>
次に、AJAXなしで機能し、textarea値を渡すyour_php_script.phpにリダイレクトします。
ただし、AJAXを介して送信する場合は、次のように簡単に実行でき、さらにいくつかのJSコードを追加できます。
$('form').submit(function() {
var body = $('input[name="body"]').val();
$.ajax({
type: 'POST',
data: 'body='+body,
success: function() {
alert('Message was sent');
},
error: function(error) {
alert('Error occured: ',error);
}
});
return false;
});
そして、PHPスクリプト内で、次のように値を取得します。
$body = $_POST['body'];