2014-12-03 2 views
0

내 웹 사이트에서 PHP를 사용하여 개인 전자 메일 주소로 메일을 보내는 연락처 양식이 있습니다. 양식에 사용자에게 이메일 주소를 묻습니다. 주소가 존재하면 스크립트가 완벽하게 작동하며 메시지를 매우 빠르게 수신합니다. 그러나 사용자가 잘못된 메일 주소를 입력하면 절대받지 못할 것입니다. 정상입니까? 여기에 ... 내 스크립트의 작은 조각 보낸 사람 메일이 유효하지 않은 경우 Php 메일이 작동하지 않습니다.

/* Prepare Email Subject */ 

$email_subject = '[CONTACT FORM]' . "\t" . $title; 

/* Prepare Email Message */ 

$email_message .= "Nom: ".clean_string($name)."\n"; 
$email_message .= "Email: ".clean_string($email)."\n"; 
$email_message .= "Telephone: ".clean_string($tel)."\n"; 
$email_message .= "Message: ".clean_string($msg)."\n"; 

/* Prepare Email Header */ 

$headers = 'From: '.$email."\r\n". 

'Reply-To: '.$email."\r\n" . 

'X-Mailer: PHP/' . phpversion(); 

/* Send Email and redirect */ 

mail($email_to, $email_subject, $email_message, $headers); 
header ('location: /?status=success#contact'); 

난 당신의 답변을 모두에게 감사의 말씀을

. 문제가 충분히 명확하지 않다면 나는 매우 유감스럽게 생각하고 나의 영어가 이해할 수 있기를 바랍니다 (나는 프랑스 인입니다). 내 문제가 무엇인지 이해하지 못하는 사람들을 위해

: 내 스크립트에서

, 나는 메일 헤더에 사용자의 메일 ADRESS을 넣어. 사용자가 유효한 전자 메일을 보내면 메시지를 받겠습니다. 그렇지 않으면 메시지를받지 못합니다.

변수에 대해 걱정하지 마십시오. 이것은 스크립트의 마지막 부분 일 뿐이지 만 모든 내용을 검증합니다.

주소가 인 경우에만 ""이라고 말했을 때, 주소가 등록되어 있지 않거나 도메인이 존재하지 않으면 실제로 작동하지 않는다는 것을 분명히 말하고 싶었습니다. 메일을 보내기 전에 Regex 테스트를 적용하여 주소가 "유효"한 것인지 확인합니다. 그리고 예를 들면 다음과 같이 입력하십시오 : [email protected] 메일을받지 못합니다. 그것이 이상한 이유입니다. 메일 주소 형식이 좋습니다.

blue112 나는 전자 메일 관리자 주소를 만들고이를 사용하여 메일을 보냅니다.

여기 문의 양식, 그러나 저를 스팸하지 않습니다 :) My Website

+5

주위에 if를 싸서 메일이 전송되는지 확인해야합니다. if (mail ($ email_to .....) {// 송신시 실행}. 또한 모든 변수가 실제로 값을 가지고 있는지 확인하십시오 error_log가 생성되었는지 확인하십시오 – Jordy

+0

* "주소가있는 경우"* - 그렇다면 "유효하다"는 뜻입니다. 그렇다면 정상이며 그렇지 않으면 안됩니다. 그렇지 않으면 "email @ example"으로부터 이메일을받을 것이고 ".net"인지 " .com "또는 dot-whatever –

+0

여기에 질문을하지 않는 사람은 내가 유일합니까? –

답변

1

당신은 메일을 보낼 수있는 사용자의 메일을 사용하지 않아야합니다.

  1. 나쁜 습관입니다. 당신이 일종의 정체성을 빼앗아가는 것입니다
  2. 사용자가 gmail을 사용하고 gmail으로 설정하면 gmail은 이메일을 보내지 않는다는 것을 알고 있기 때문에 사용자를 신뢰하지 않습니다.
  3. 그들은 좋은 기회입니다 이메일이 스팸 함에 속합니다.

가장 좋은 방법은 "보낸 사람"헤더 필드에 "유효한"신뢰할 수있는 이메일을 사용하는 것입니다.

또한 스크립트에 대해`mail`` 함수를 포장하여 보낼 때 모든 것이 잘되는지 알 수 있습니다.

if (mail($email_to, $email_subject, $email_message, $headers)) 
{ 
    header ('location: /?status=success#contact'); 
} 
else 
{ 
    echo "Sending mail failed"; 
} 

이렇게하면 메일이 성공적으로 도착했음을 보장하지 않습니다.

+0

그의 원래 게시물에 대한 응답. 그리고 예, 그는 PHPMailer 또는 그와 비슷한 것을 사용해야합니다. – Jordy

+0

이것은 OP 질문에 대답하지 않습니다; 그것은 좋은 연습이지만, 확실히 OP는 특정 질문을하고 있습니다. OP는 누군가가 잘못된 전자 메일 주소를 입력하는 것을 방지하기 위해 코드를 포함하는 'clean_string()'함수를 사용하는 코드의 일부만을 보여 주었고 나머지 양식 요소에 대해서는 다른 이점도있었습니다. –

0

잘못된 주소를 입력 한 경우 실제로 이메일을 유용하게 사용할 수 없을 가능성이 높으므로 이메일 주소가 유효한지, 사용자가 거칠 수있는 정도의 성가심이 있는지 확인해야합니다 유효이 정보를 얻을 :

  • 을 자신의 이메일을 확인하기 위해 이메일 주소
  • 요구를 사용자에 맞게 정규식을 사용하여,이
  • 전에 먼저 등록하도록 요청 (일부 성가심) 오타를 캡처 그들은 연락처 양식 (큰 성가심)을 사용할 수

메일에 정적 보낸 사람 및 회신 주소가 있고 사용자가 입력 한 전자 메일 주소를 메시지 본문에 포함시킬 수도 있습니다. 이렇게해도 실제로 전자 메일을받을 수 있습니다. 귀하의 연락처 양식 쓰레기 전자 메일 주소를 부여.

+0

이메일이 관련성이없는 것보다 익명의 제안이 제출되거나 그와 비슷한 것이 사실이라면 사실이 아닙니다. 그런 다음 다시 한 번, 당신은 그가 그것을 사용하고 있는지 알지 못하므로 말할 수 없습니다. – Jordy

관련 문제