2014-11-04 5 views
0

PHP를 사용하여 메일을 보내려고합니다.
하지만 작동하지 않습니다. 나는 IT 선생님, 내가 아는 몇 안되는 IT 괴상한 사람들, 직장의 대학들과 접촉했지만 그들은 모두 나를 도울 수 없었다. 나는 이것에 관해 stackoverflow에 관한 많은 질문이 이미 있다는 것을 알고있다. 그래서 나는 이것을 게시하기 위해 오랫동안 기다렸다. 하지만 필자는 PHP의 mail() 함수에 대한 모든 질문을 살펴 보았지만 아무도 내 문제를 해결하지 못했습니다. 나는 절망적이다.
PHP를 사용하여 메일 보내기가 작동하지 않습니다.

메일 작성에 내 코드를 사용하면 작동하지 않지만 일반 텍스트 기능 만 사용하면 작동하지 않는 것이 있습니다. 그래서 그 문제는 서버 측이어야한다고 생각했습니다. 나는 one.com (내 웹 사이트가 열리는 곳)에 연락했지만 도움을 줄 수 없었다. 그들은 mail() 함수가 작동해야한다고 말했다.
Sushant : 그들은 나에게이 주셨 는가 - 메일 호스트 : mailout.one.com를
Sushant : - 포트 : 25
Sushant : - 인증 : 없음/거짓
Sushant : - 보안 : 없음/거짓
Sushant : - 사용자 이름 : 도메인의 이메일 계정 eg [email protected]
Sushant : - 암호 : 전자 메일 계정의 암호가

나는이 정보를 어떻게 해야할지 모르겠어요. ini_set() 함수를 사용하여 php.ini 파일 ( mail.add_x_header, mail.log, SMTP, smtp_port, sendmail_from, sendmail_path)의 일부 내용을 편집하려고했습니다. 또한 내 문제를 해결하지 못했습니다.

내 전체 코드 :

(네덜란드의 언어에 대한 죄송)이 전혀 아무것도하지 않는

$onderwerp = "E-mail adres controlleren"; 
$bericht =" 
U bent succesvol geregistreerd bij theovisser.com.<br> 
Nu kunt u alle verstuurde nieuwsbrieven lezen. Ook kunt u<br> 
nieuwe nieuwsbrieven meteen zien, nog voordat ze bij op op de mat liggen!<br><br> 

Om uw account te activeren moet u alleen nog wel de onderstaande code<br> 
invoeren.<br> 
E-mail code: " .$_SESSION['controle_code']. "<br><br> 

Groeten,<br> 
Samuël Visser 
"; 
// Regels in berichten mogen nooit langer zijn als 70 caracters (PHP regel). 
// Hiermee worden alle regels die langer als 70 caracters zijn ingekort. 
    $bericht = wordwrap($bericht, 70); 
// Verstuur de mail 
if(!isset($_SESSION['mail_verstuurd'])) 
{ 
    if(mail($email,$onderwerp,$bericht)){ 
     echo 'Er is een mail verstuurd naar uw adres.<BR><BR>'; 
     $_SESSION['mail_verstuurd']='true'; 
    }else{ 
     echo 'Het versturen van de mail is mislukt.<BR><BR>'; 
    } 

} 

.
그리고는이 너무 작동하지 않는다는 것입니다 이상한 :

mail('[email protected]','test','dit is een test'); 

너희들은 내 문제를 해결할 수 있습니까? 나는 내가 뭘 잘못하고 있는지 정말로 모른다.

편집 :

2014년 11월 4일 13시 27분 48초 연결 : 개방 mailout.one하는 PHPMailer의 libary를 사용하는 @ojovirtual에서 제안 사용은
, 나는 다음과 같은 오류가 발생했습니다 .com : 25, t = 300, opt = array() 2014-11-04 13:28:10 SMTP 오류 : 서버에 연결하지 못했습니다 : 연결된 당사자가 일정 기간 후에 제대로 응답하지 않아 연결 시도가 실패했습니다. 연결 호스트가으로 응답하지 않았으므로 시간이 이미 설정되었거나 연결이 실패했습니다. (10060) 2014-11-04 13:28:10 SMTP connect()가 실패했습니다. 메시지를 보낼 수 없습니다. 메일 오류 : SMTP 연결()이 실패했습니다.

오류의 기울임 꼴 텍스트는 네덜란드어로 영어로 번역되었습니다. 원래 영어 번역과 조금 다를 수 있습니다.

이 내가 one.com에서 가져온 데이터를 다음 내가 사용하는 설정은 다음과 같습니다

require($main .'PHPMailer-master/PHPMailerAutoload.php'); 

$mail = new PHPMailer; 

$mail->SMTPDebug=3; 
$mail->isSMTP();          // Set mailer to use SMTP 
$mail->Host = 'mailout.one.com';      // Specify main and backup SMTP servers 
$mail->SMTPAuth = false;        // Enable SMTP authentication 
$mail->Username = '[email protected]';    // SMTP username 
$mail->Password = 'won't show that here :)';   // SMTP password 
$mail->SMTPSecure = 'tls';        // Enable TLS encryption, `ssl` also accepted 
$mail->Port = 25;          // TCP port to connect to 

$mail->From = '[email protected]'; 
$mail->FromName = 'Samuël Visser'; 
$mail->addAddress('[email protected]', 'Sammie gast');  // Add a recipient 
//$mail->addAddress('[email protected]');     // Name is optional 
//$mail->addReplyTo('[email protected]', 'Information'); 
//$mail->addCC('[email protected]'); 
//$mail->addBCC('[email protected]'); 

$mail->WordWrap = 50;         // Set word wrap to 50 characters 
//$mail->addAttachment('/var/tmp/file.tar.gz');   // Add attachments 
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name 
$mail->isHTML(true);         // Set email format to HTML 

$mail->Subject = 'Here is the subject'; 
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
    echo 'Message has been sent'; 
} 

나는 PHPMailer 페이지에 추천 코드를 사용했다.
도움 주셔서 감사합니다.

+0

메일을 보내기 전에 SMTP 서버에 로그인해야 할 수도 있습니다. [PHPMailer] (https://github.com/PHPMailer/PHPMailer)를 사용하는 것이 좋습니다. – ojovirtual

+0

메일에 '헤더'추가 –

+0

헤더는 선택 사항입니다. 맞습니까? SMTP 서버에 로그인하는 데 아무 것도하지 않았으므로 모두가 필요 없다고했습니다. 하지만이 libary, 감사합니다 –

답변

3

PHP 스크립트에서 전자 메일을 보낼 때 다양한 호스트에서 다른 제한 사항이나 요구 사항이 있으므로 모든 PHPMailer 라이브러리 기능을 항상 사용할 수있는 것은 아닙니다. 이 답변에는 One.com에 대한 정보가 있습니다. One.com이 사용되었고 그 호스트도 사용했기 때문입니다.

One.com 가능한 메일 설정

호스트, 사용자 이름과 암호는 질문에 명시된 바와 같이 제공 될 필요가있다.

:

허용되는 인증 및 암호화 설정이 사용되는 어떤 포트에 따라, 이러한 One.com 모든 대안하지만 기술 지원 모든 설정이 현재 PHP 스크립트에서 사용할 수 없습니다 것을 확인했다입니다

  • 포트 25 : 인증 허위 또는 STARTTLS
  • 포트 2525 : 인증 허위 또는 STARTTLS
  • 포트 465 : TLS의 엘러의 SSL
  • 포트 587 : 인증 허위 또는 STARTTLS
    • 포트 25 : One.com

      에서 확인 인증 거짓

    예제 코드 당신이 볼 수 아래에만 다음은 사용할 수있는 PHP 스크립트 내에서

사용자 이름과 암호를 자신의 암호로 바꾸면 One.com 서버에서 작동하는 코드입니다.

/*** Prepare email information ***/ 
require_once "Mail.php"; 
$from = "[email protected]"; 
$to = "[email protected]"; 
$subject = "Testing PHP SMTP mail"; 
$body = "Hi,\n\nit seems to be working don't you think?"; 
$headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject, 'Reply-To' => $from); 

/*** Send email ***/ 
$SendMail = new Mail(); 
$smtp = $SendMail->factory('smtp',array(
'host' => "mailout.one.com", 
'port' => 25, 
'auth' => false, 
'username' => "YOUR_MAIL_USERNAME", 
'password' => "YOUR_MAIL_PASSWORD")); 
$mail = $smtp->send($to,$headers,$body); 

/*** Check for errors ***/ 
$ErrorCheck = new PEAR; 
if ($ErrorCheck->isError($mail)){ 
    echo("<p>".$mail->getMessage()."</p>"); 
}else{ 
    echo("<p>Message successfully sent!</p>"); 
} 
?> 
+0

답변 해 주셔서 감사합니다. 솔직히이 웹 사이트가 더 이상 온라인 상태가 아니기 때문에 솔루션이 작동하는지 확인하지 않았습니다. :) 그러나 나는 완전히 당신을 신뢰하고, 내가 다시 그것을 필요로한다면 당신의 대답을 사용할 것입니다 (여전히 다른 웹 사이트를 위해 one.com과 함께) –

관련 문제