前提・実現したいこと
1.PHPの問い合わせフォームをブラウザ上で正常に機能させたい
2.送信元アドレスをフォームに入力したメールアドレスにしたい
このような問い合わせフォームを作りました。
コードも記載します。
<?php if ($_SERVER['REQUEST_METHOD'] != 'POST') { // POSTでのアクセスでない場合 $name = ''; $email = ''; $subject = ''; $message = ''; $err_msg = ''; $complete_msg = ''; } else { // フォームがサブミットされた場合(POST処理) // 入力された値を取得する $name = $_POST['name']; $email = $_POST['email']; $subject = $_POST['subject']; $message = $_POST['message']; // エラーメッセージ・完了メッセージの用意 $err_msg = ''; $complete_msg = ''; // 空チェック if ($name == '' || $email == '' || $subject == '' || $message == '') { $err_msg = '全ての項目を入力してください。'; } // エラーなし(全ての項目が入力されている) if ($err_msg == '') { $to = '******@outlook.jp'; // 管理者のメールアドレスなど送信先を指定 $headers = "From: " . $email . "\r\n"; // 本文の最後に名前を追加 $message .= "\r\n\r\n" . $name; //日本語での送信 mb_language("japanese"); mb_internal_encoding("UTF-8"); // メール送信 mb_send_mail($to, $subject, $message, $headers); // 完了メッセージ $complete_msg = '送信されました!'; // 全てクリア $name = ''; $email = ''; $subject = ''; $message = ''; } } ?> <!DOCTYPE html> <html lang="jp"> <head> <meta charset="utf-8"> <title>お問い合わせフォーム</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/css?family=Noto+Sans+JP" rel="stylesheet"> <style> body { background: #f3f3f3; } .container { font-family: "Noto Sans JP"; margin-top: 60px; } h1 { margin-bottom: 50px; text-align: center; } button { margin-top: 30px; } </style> </head> <body> <div class="container"> <div class="row"> <div class="col-xs-offset-4 col-xs-4"> <h1>お問い合わせ</h1> <?php if ($err_msg != ''): ?> <div class="alert alert-danger"> <?php echo $err_msg; ?> </div> <?php endif; ?> <?php if ($complete_msg != ''): ?> <div class="alert alert-success"> <?php echo $complete_msg; ?> </div> <?php endif; ?> <form method="post"> <div class="form-group"> <input type="text" class="form-control" name="name" placeholder="お名前" value="<?php echo $name; ?>"> </div> <div class="form-group"> <input type="text" class="form-control" name="email" placeholder="メールアドレス" value="<?php echo $email; ?>"> </div> <div class="form-group"> <input type="text" class="form-control" name="subject" placeholder="件名" value="<?php echo $subject; ?>"> </div> <div class="form-group"> <textarea class="form-control" name="message" rows="5" placeholder="本文"><?php echo $message; ?></textarea> </div> <button type="submit" class="btn btn-success btn-block">送信</button> </form> </div> </div> </div> </body> </html>
発生している問題・エラーメッセージ
1.ローカル側でしか入力内容が設定したアドレスに送信されない
ブラウザ側では入力内容は送信されません
2.メッセージ送信元が自分のアドレスになる
(下記はxamppのsendmail.iniファイルのコードです。
コードのauth_usernameとforce_senderに入力したアドレスが送信元になり
フォームに入力したアドレスが送信元になりません)
xampp設定ファイル
1; configuration for fake sendmail 2 3; if this file doesn't exist, sendmail.exe will look for the settings in 4; the registry, under HKLM\Software\Sendmail 5 6[sendmail] 7 8; you must change mail.mydomain.com to your smtp server, 9; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup) 10; emails delivered via IIS's pickup directory cause sendmail to 11; run quicker, but you won't get error messages back to the calling 12; application. 13 14smtp_server=smtp.office365.com 15 16; smtp port (normally 25) 17 18smtp_port=587 19 20; SMTPS (SSL) support 21; auto = use SSL for port 465, otherwise try to use TLS 22; ssl = alway use SSL 23; tls = always use TLS 24; none = never try to use SSL 25 26smtp_ssl=auto 27 28; the default domain for this server will be read from the registry 29; this will be appended to email addresses when one isn't provided 30; if you want to override the value in the registry, uncomment and modify 31 32;default_domain=mydomain.com 33 34; log smtp errors to error.log (defaults to same directory as sendmail.exe) 35; uncomment to enable logging 36 37error_logfile=error.log 38 39; create debug log as debug.log (defaults to same directory as sendmail.exe) 40; uncomment to enable debugging 41 42;debug_logfile=debug.log 43 44; if your smtp server requires authentication, modify the following two lines 45 46auth_username=******@outlook.jp 47auth_password=****** 48 49; if your smtp server uses pop3 before smtp authentication, modify the 50; following three lines. do not enable unless it is required. 51 52pop3_server= 53pop3_username= 54pop3_password= 55 56; force the sender to always be the following email address 57; this will only affect the "MAIL FROM" command, it won't modify 58; the "From: " header of the message content 59 60force_sender=*******@outlook.jp 61 62; force the sender to always be the following email address 63; this will only affect the "RCTP TO" command, it won't modify 64; the "To: " header of the message content 65 66force_recipient= 67 68; sendmail will use your hostname and your default_domain in the ehlo/helo 69; smtp greeting. you can manually set the ehlo/helo name if required 70 71hostname= 72 73
補足情報(FW/ツールのバージョンなど)
xamppを使用してローカル側でPHPを動作させています
PHPファイルはcyberdackのFTP機能でブラウザにアップしました。
お名前ドットコムの
レンタルサーバを使用しています。
ご回答宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー