2016-09-18 9 views
1

私はPHPを使用して電子メールを送信しようとしています。私のニーズに合ったこのコードは、現在のウェブサイトのコードに簡単に適合します。しかし、このコード全体をファイルに入れてテストしたところ、電子メールは送信されません。HTMLとPHPコードが送信されないメール

コード:

<?php 
if(isset($_POST['submit'])){ 
    $to = "[email protected]"; // this is your Email address 
    $from = $_POST['email']; // this is the sender's Email address 
    $first_name = $_POST['first_name']; 
    $last_name = $_POST['last_name']; 
    $subject = "Form submission"; 
    $subject2 = "Copy of your form submission"; 
    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message']; 
    $message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message']; 

    $headers = "From:" . $from; 
    $headers2 = "From:" . $to; 
    mail($to,$subject,$message,$headers); 
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender 
    echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly."; 
    // You can also use header('Location: thank_you.php'); to redirect to another page. 
    } 
?> 

<!DOCTYPE html> 
<head> 
<title>Form submission</title> 
</head> 
<body> 

<form action="" method="post"> 
First Name: <input type="text" name="first_name"><br> 
Last Name: <input type="text" name="last_name"><br> 
Email: <input type="text" name="email"><br> 
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

</body> 
</html> 

私は、これは "[email protected]" に電子メールを送信するために取得することができません。間違ったことをしていますか、何かを記入するのを忘れましたか?

+0

ローカルサーバーにはXAMPPなどを使用していますか?あなたがローカルメールサーバー(sendmailなど)をまだ設定していない可能性があります。これらのローカル環境にはほとんどメールサーバーが含まれていないため、別途セットアップする必要があります。 –

+0

@BrianSchroeter私はgmailのPOPを有効にしましたが、私はこれらのメールサーバーで何をやっているのかまだ分かりません。 – joey942

+0

私は正しい方向にあなたを指差してうれしいです。ローカルサーバーを管理するためにどのようなソフトウェアを使用していますか?一般的なプラットフォームはXAMPPとWAMPです。しかし、それはいろいろなことができます。 :) –

答えて

1

としては、あなたがそれをローカルに使用していて、メールサーバーが構成されていません。

あなたはそれがthisのように機能するにはGmailのSMTPを設定することができます。

// Pear Mail Library 
require_once "Mail.php"; 

$from = '<[email protected]>'; 
$to = '<[email protected]>'; 
$subject = 'Hi!'; 
$body = "Hi,\n\nHow are you?"; 

$headers = array(
    'From' => $from, 
    'To' => $to, 
    'Subject' => $subject 
); 

$smtp = Mail::factory('smtp', array(
     'host' => 'ssl://smtp.gmail.com', 
     'port' => '465', 
     'auth' => true, 
     'username' => '[email protected]', 
     'password' => 'passwordxxx' 
    )); 

$mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)) { 
    echo('<p>' . $mail->getMessage() . '</p>'); 
} else { 
    echo('<p>Message successfully sent!</p>'); 
} 

それはまたことを時々起こります送信者メールまたは受信者のメールウェブサイトのメールサーバーに設定されているのメールか、のcPanelになります。 セキュリティ上の理由から、ほとんどのホスティングサービスプロバイダはこのことを許可していません。 あなたのウェブサイトのメールサーバーに設定されているメールアドレスに変更してください。

+0

現在、私はすべてをローカルで実行していますが、まだホストされていません。私はこれを稼働させることができますか? – joey942

+0

ローカルで動作するようにSMTPを構成できます。 –

+0

@ joey942クライアント側?あなたはローカルにホストされているという意味ですか?あなたがローカルのメールサーバを持っていない限り、これはうまく動作しません – nogad

1

問題はコードではなく、 "SMTP"サーバーなしで電子メールを送信することはできません! Link

関連する問題