2013-02-04 3 views
0

첫째로 나는 PHP에서 아주 초보자입니다.PHP와의 문의 양식에서 이메일 정보를 통해 보냄

나는이 간단한 PHP를 가지고 있으며 현재로서는 정보를 보낼 때 끔찍한 "Ok"메시지가 나타납니다. - 난에 위해 (상자 또는 뭔가 유사한에서처럼) 애호가 대답을 추가하고 싶습니다 - 더 나은 코드 (이 괜찮 더 나은 될 수 있을까??) :

는 당신이 날이 PHP를 개선 도움이 될 수 그의 메시지가 보내 졌음을 사용자에게 조언한다.

또 다른 한가지는 이것이 작동하는지 잘 모르겠습니다. xampp이 설치되어 있고 로컬로 작동하지 않습니다. 나는 또한 모든 파일이 서버에 업로드 된 상태로 양식을 완성하려고 시도했지만 필자는 여전히 기다리고있다 ....받은 편지함에 도착하는 메일의 기적? = S 내가 뭔가 잘못한 것일까 요?

<?php 
if(isset($_POST["nombre"]) && isset($_POST["email"]) && isset($_POST["consulta"])){ 
$mymail = "[email protected]"; 
$subject = "Consulta"; 
$contenido = ":: Nombre: ". $_POST["nombre"]."\n"; 
$contenido .= ":: E-mail: ". $_POST["email"]."\n"; 
$contenido .= ":: Escribiò el siguiente mensaje: ". $_POST["consulta"]."\n"; 

$header = "From:".$_POST["email"]."\n"; 

mail($mymail, $subject, utf8_decode($contenido));*/ 
echo "&estatus=ok&"; 
}?> 

미리 도움을 청하십시오! 안부,

답변

0

이해 PHP의 측면에서 및 메일 기능을 사용하는 경우이 Link은 일반적으로 PHP/웹 코딩 사이트와 마찬가지로 매우 좋은 리소스입니다.
사용자가 마지막 줄에 "& status = ok"라는 메시지가 표시됩니다. & "; Echo은 페이지에 텍스트를 출력하는 기능입니다. html을 알고 있으면 원하는 HTML을 출력 할 수 있습니다.

echo "<b>This success message is in BOLD</b>"; 

당신은 예를 들어, 다른 특수 문자로를 따라 Escape 필요로하지만 따옴표 조심해야 할 것

echo "This \"code\" will\nprint like \\\"this\\\""; 

은 그 접선에 떨어져 일어나고, 어쨌든

This "code" will 
print like \"this\" 

처럼 보일 것입니다. xampp에 관해서는 smtp 설정을 구성해야합니다. 이 Post을 확인하십시오.

질문에 대한 대답을 알려주십시오.

0

좋아, 코드를 잘 보입니다. 메시지를 변경하려면 echo 문에서 텍스트를 변경해야합니다. echo "Some fancy html in here";입니다. 메일을 수신하지 못하는 것에 관한 두 번째 이슈는 아마도 php가 기본적으로 로컬 smtp 서버에 의존하여 메일을 보내지 않기 때문입니다. Windows에서 존재하지 않는 메일은 xampp을 가지고 있고 Linux를 많이 사용하는 경우 전혀 보내지 않습니다. 변수가 스팸 폴더로 보내지거나 스팸 폴더에 들어가거나 전혀 보내지 않을 수 있습니다.

http://swiftmailer.org/docs/sending.html

및 타사 SMTP 세부 사항을 정의 : 당신은 단지 테스트 목적 등 사용자의 Gmail의 하나로서 타사 SMTP 서버를 사용하려는 경우 가장 쉬운 방법은 다음과 같은 몇 가지 라이브러리를 사용하는 것입니다.

예제 코드 :

require_once 'lib/swift_required.php'; 

// Create the Transport 
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25) 
    ->setUsername('your username') 
    ->setPassword('your password') 
    ; 

/* 
You could alternatively use a different transport such as Sendmail or Mail: 

// Sendmail 
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs'); 

// Mail 
$transport = Swift_MailTransport::newInstance(); 
*/ 

// Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

// Create a message 
$message = Swift_Message::newInstance('Wonderful Subject') 
    ->setFrom(array('[email protected]' => 'John Doe')) 
    ->setTo(array('[email protected]', '[email protected]' => 'A name')) 
    ->setBody('Here is the message itself') 
    ; 

// Send the message 
$result = $mailer->send($message); 

내가 생각하는 매우 간단합니다, 당신은 또한 추가 할 수 있습니다 매우 끝에

if($result){ echo "Message has been sent"; }else{ echo "Error!"; } 

. 즉 ... 트릭을 할해야

은 BTW Gmail에 대한 설정은 다음과 같습니다

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl'); 

및 사용자 이름과 그에 따라 암호를 Gmail 이메일과 비밀번호를 사용하여 ...

0

큰 질문입니다.

먼저 로컬로 테스트하고 간단한 메일 클라이언트를 사용하여 메일 전송 에이전트가 로컬 계정으로 이메일을 보낼지 확인하십시오. 원격 전자 메일 계정 (Gmail을) 다시없는 PHP에가는 어떤 PHP

그런 얻을 메일

그런 다음 PHP가 작동 로컬 전송하지 얻을.

마지막으로 PHP에서 원격 전자 메일 게시를 시도하십시오.

스크립트는 스팸을 방지하기 위해 입력 양식에서 입력 매개 변수의 유효성을 검사해야합니다 (예 : www.w3schools.com).

예를 들어 코드를 다운로드하고 Drupal 또는 Wordpress와 같은 성숙한 코드를보고 어떻게하는지보십시오. 전자 메일을 전송하는 것은 최종적으로 전송 에이전트와 릴레이 엔드 (SSL, TLS)에 의존하기 때문에 릴레이 인증을 위해 메일을 수신 할 수 있도록 키 인증이 필요할 수 있습니다.

스택 Exchange에는 많은 참조 및 예가 있습니다. 당신은 약간의 연구를 스스로해야합니다.