2017-11-16 4 views
-1

PHP에 내장 된 메일 기능을 사용하여 확인 이메일을 보내고 있습니다. 그러나 내 대학에 할당 된 내 서버에서만 로컬로 작동합니다. 사이트는 http://adonnelly759.students.cs.qub.ac.uk/thatch/입니다.PHP 메일 기능이 다른 이메일로 전송되지 않습니다.

문의 양식을 보내면 관리자 이메일 주소와 제공 한 고객 이메일 주소로 이메일을 보내 자신에게 이메일을 보내야합니다. 다음처럼 코드를 설정 한

:

$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 
$headers .= 'From: <Thatch>' . "\r\n"; 

// Sending the email to the users provided e-mail 
mail($email, $userSub, $userMsg, $headers); 

업데이트는 다음 mail() function 도랑 SwiftMailer 가기로 결정. 간단하고 사용하기 쉽습니다. 모든 도움에 감사드립니다.

답변

1

PHP 메일() 기능은 최선의 방법이 아닙니다. mail-tester.com으로 이동하여 표시된 임의의 전자 메일 주소를 복사 한 다음 코드를 사용하여이 주소로 전자 메일을 보내고 mail-tester.com으로 돌아가 결과를 확인하십시오. 나는 당신이 매우 느린 점수를 가지고 있다고 의심하고 이것이 귀하의 이메일이 전달되지 않는 이유입니다.

대신 PHPMailer를 사용할 수 있습니다. 다음은 몇 가지 샘플 코드입니다. https://github.com/PHPMailer/PHPMailer

이것은 작동해야하지만 사용자 이름과 비밀번호와 함께 SMTPAuth를 사용하도록 설정하면 메일을 원하는 방식으로 보낼 수있는 확실한 방법으로 이메일을 보낼 수 있습니다.

<?php 

use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\Exception; 

require 'vendor/autoload.php'; 

$body = '<p>this is a <strong>test</strong> email</p><p><img src="cid:qrcode" /></p>'; 

$mail = new PHPMailer(true); 

try { 
    $mail->isSMTP(); 
    $mail->Host = 'localhost'; 
    $mail->SMTPAuth = false; 

    $mail->setFrom('[email protected]', 'Chris'); 
    $mail->addAddress('[email protected]'); 

    $mail->isHTML(true); 
    $mail->Subject = 'This is a PHPMailer Test'; 
    $mail->Body = $body; 
    $mail->AltBody = $body; 

    $mail->send(); 

    echo 'Message has been sent'; 
} catch (Exception $e) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} 
+0

감사합니다. 대체 경로로 가서 SwiftMailer를 사용하기로 결정했습니다. –