2014-12-23 2 views
1

나는 PHP에 익숙하지 않고 (매우 간단한) 연락 양식을 사용하고있다. 이 스크립트를 호스팅 회사에 업로드하면 PHP 스크립트는 양식을 작성하고 제출할 때 확인을 반환하지만 전자 메일은 보내지 않는 것처럼 실행됩니다. 내 호스팅 회사는 123-reg입니다. 전자 메일을 보내려면 무엇인가해야합니까? 다음과 같이메일 기능이 이메일을 보내지 않음

내 코드는 다음과 같습니다

양식 코드 :

<form action="action_handler.php" method="POST"> 
    <dl> 
    <dt> Name: 
    <dd><input type="text" name="name"> 
    <dt> Email Address: 
    <dd><input type="text" name="mail"> 
    <dt> Comments: 
    <dd><textarea rows="5" cols "20" name="comment"> 
    </textarea> 
    </dl> 
    <p><input type="submit"></p> 
    </form> 

PHP 코드 : 어떤 도움이 많이 감사합니다

<?php 
    $name = $_POST['name']; 
    $mail = $_POST['mail']; 
    $comment = $_POST['comment']; 

    $to = "[email protected]"; 
    $subject = "Contact Form Request"; 
    $body = "You have a new message from: /n Name: $name /n Email: $mail /n/nThe request is as follows: /n/n $comment"; 

    mail ($to,$subject,$body); 

    echo"<p>Thanks for your comment $name ...</p>"; 
    echo"<p><i>$comment</i></p>"; 
    echo"<p>We will reply to $mail</p>"; 
    ?> 

.

+1

'/ n'은 길을 따라'\ n'입니다. 또한 아마도 전송 중일 것입니다. 거부되거나 스팸으로 전송되었을 수 있습니다. '

+0

메일 기능을 사용하여 메일을 보내려면 PHP가 메일을 보내도록 구성해야합니다.이 질문의 여러 사본에 대한 답변도 마찬가지입니다. 호스트가 제대로 구성되었는지 확인하기 위해 호스트에 연락 했습니까? 또한 종종 메일 *이 전송되지만 정크 메일 폴더로 이동됩니다. – GolezTrol

+1

9.9 회 10 회 중에 '보낸 사람 :'이 없어서 스팸 메일이 발송됩니다. 적절한 헤더를 사용하고 http://php.net/manual/en/function.mail.php를 방문하십시오. –

답변

1

현재 코드에 몇 가지 문제가 있습니다.

우선, \n으로 매우 중요하다.. 구문 오류입니다.

그런 다음 메일 헤더에없는 From:이 누락되거나 스팸으로 전송 될 가능성이 큽니다. 메일에서 "@의 yourserver.xxx"에서 이메일 주소 끝나게됩니다 "에서"

하면

From:는 다음 사용을 포함합니다 :

사람의로 표시됩니다
$header = "From: ". $name . " <" . $mail . ">\r\n"; 

이름은 "보낸 사람"이지만 적절한 전자 메일 주소로 식별됩니다.

헤더보다 From:이 생략 될 때마다 메일이 스팸 함으로 전송되는 경우가 많습니다.

따라서

mail ($to,$subject,$body); 

$body는 가변 밑에 삽입되는 상기 광고 포함

mail ($to,$subject,$body,$header); 

하도록 수정한다.

메일/헤더에 대한 자세한 내용은 다음을 참조 :

  • http://php.net/manual/en/function.mail.php 오류를 찾는 데 도움이됩니다 파일 (들)의 상단에 error reporting를 추가합니다.

    <?php 
    error_reporting(E_ALL); 
    ini_set('display_errors', 1); 
    
    // rest of your code 
    

    (!) 참고 : 오류보고는 생산을 결코 준비에서 수행하지 않으며,해야합니다.


    또한 메일이 실제로 전송되었는지 확인하는 조건문을 사용할 수 있습니다

    if(mail ($to,$subject,$body,$header)) { 
        echo "Sent."; 
        } else{ 
        echo "Sorry, check your mail logs."; 
    } 
    

    메일이 꺼지면,이 서버의 손에서와 수신기의 끝에있다. 사실 이후에 할 수있는 일은 아무것도 없습니다.

관련 문제