localhost에서 메일을 보내도록 XAMPP를 구성하는 방법은 무엇입니까?


255

localhost에서 메일을 보내려고합니다. 하지만 localhost에서 메일을 보낼 수 없으므로 localhost에서 메일을 보내도록 xampp를 재구성하는 방법을 알려주십시오.


3
코드를 볼 수 있습니까?
aizaz

2
현재 구성을 제공하지 않으면 도움이되지 않습니다.
arkascha

1
이것이 여전히 수은 포함과 관련이 있습니까 (ApacheFriends XAMPP 1.8.2)? 나는 그렇다고 생각하지만 수성을 선호하는 사람들이 있다면 아래에 표시하십시오. :) 감사!
icedwater

답변:


371

sendmail package를 사용하여 localhost에서 메일을 보낼 수 있으며 sendmail 패키지는 XAMPP에 내장되어 있습니다. 따라서 XAMPP를 사용하는 경우 localhost에서 쉽게 메일을 보낼 수 있습니다.

예를 들어, 당신은 구성 할 수 있습니다 C:\xampp\php\php.inic:\xampp\sendmail\sendmail.iniGmail에 메일을 보낼 수 있습니다.

에서 C:\xampp\php\php.ini발견 extension=php_openssl.dllSSL은 로컬 호스트에 대한 Gmail을 위해 일하기 위해 그 라인의 시작 부분에서 세미콜론을 제거합니다.

php.ini 파일에서 찾기 [mail function]및 변경

SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = my-gmail-id@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

이제 엽니 다 C:\xampp\sendmail\sendmail.ini. sendmail.ini의 모든 기존 코드를 다음 코드로 바꿉니다.

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=my-gmail-id@gmail.com
auth_password=my-gmail-password
force_sender=my-gmail-id@gmail.com

이제 끝났습니다 !! 메일 기능으로 PHP 파일을 만들고 localhost에서 메일을 보냅니다.

추신 : 위의 코드에서 my-gmail-idmy-gmail-password 를 바꾸는 것을 잊지 마십시오 . 또한 위에서 설정을 복사 한 경우 중복 키를 제거하는 것을 잊지 마십시오. 예를 들어 php.ini 파일에 다른 sendmail_path 가있는 경우 주석 다음 줄 :sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"

또한 XAMMP 제어판을 사용하여 서버를 다시 시작해야 변경 내용이 적용됩니다.

Gmail의 경우 보안 수준이 낮은 앱에서 액세스 할 수 있도록 https://support.google.com/accounts/answer/6010255 를 확인 하세요 .

localhost에서 Gmail을 통해 Linux에서 sendmail 패키지로 이메일을 보내려면 php 형식 localhost를 사용하여 PHP + Ubuntu 이메일 보내기 를 확인하십시오 .


3
위의 설정 이외에, 나는 sendmail을 업데이트해야했다 glob.com.au/sendmail
kaz

1
XAMMP 1.7.7에서 2.8.2.3으로 업그레이드해야했습니다. sendmail은 최신 XAMPP에 포함되어 있습니다. 몇 달 전에 1.7.7의 최신 sendmail을 사용해 보았지만 제대로 작동하지 못했습니다. 마지막으로 총알을 깨고 새로운 XAMPP를 사용했으며 설명대로 작동합니다.
VanAlbert

2
C : \ xampp \ php \ php.ini 위치는 Windows 환경을 나타냅니다. Mac의 경우 xamppfiles / etc에서 php.ini 파일을 찾으십시오.
Paul Trotter

3
@Vikas 대답은 Thirumalai의 님 Murugan의 응답으로 465을 사용하여 특정 조건에 SMTP_PORT의 기본 SSL을 사용하여 수도없는 일이 실제로 나를 위해 그것을 고정 명시된 것을 최고의했지만, 참고하시기 바랍니다
Temitayo

2
그것은 당신이 링크를 아래로 이동 한 후 설정 한 것과 같은 Gmail 사용자 ID로 로그인 또한에서 세미콜론을 제거하는 것을 잊지 마세요 완벽하게 XAMPP 버전 7.0.15 그냥 작업을의 myaccount.google.com/lesssecureapps?pli=1 및 덜 안전한 앱 허용 : ON 이제 XAMPP localhost에서 직접 메일을 보낼 수 있습니다
raftaar1191

35

테스트 목적으로 XAMPP v3.2.1에서 XAMPP가 XAMPP / mailoutput으로 보내는 이메일을 볼 수 있습니다. Windows 8의 경우에는 추가 구성이 필요하지 않았으며 전자 메일 테스트를위한 간단한 솔루션이었습니다.


1
이 방법으로 문제가 해결되지 않으면을 확인 하고을 c:\xampp\php\php.ini찾아 [mail function]주석을 해제하십시오 mailtodisk.exe. 이 섹션의 다른 모든 행은 주석 처리 된 것을 제외하고 주석 처리하십시오 mail.add_x_header.
Tim Malone

3
위의 의견에 대한 추가 사항으로, 최신 버전의 XAMPP의 경우 mailtodisk 행을 수동으로 추가해야 할 수도 있습니다. 다음과 같이 보일 것입니다 :sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
Tim Malone

@TimMalone의 의견에 대한 추가 부록. XAMPP를 관리자 권한으로 실행하면 메일이 XAMPP / mailoutput에만 쓰여지는 것을 알았습니다.
sohail

@sohail : 관리자로 XAMPP를 실행할 필요는 없지만 모든 사용자가 XAMPP / mailoutput 폴더에 쓸 수있는 권한을 부여해야합니다 (폴더> 보안> 모든 사용자> 권한 편집> 전체 액세스를 마우스 오른쪽 단추로 클릭)
cheppsn

나는 mailoutput 디렉토리에 후에도 많은 시도 제안 아무것도하지만 모두 적용했습니다 @TimMalone
또는 Vipul Hadiya

25

localhost 또는 로컬 서버에서 이메일을 보내는 것이 매우 간단합니다.

참고 : Xampp가 설치된 Windows 7 64 비트에서 테스트 메일 서버 소프트웨어를 사용하고 있습니다.

테스트 메일 서버 도구를 다운로드하고 해당 웹 사이트의 테스트 메일 서버 도구 에 제공된 지침에 따라 설치하십시오.

이제 php.ini파일에서 두 줄만 변경하면 됩니다.

  1. [mail function]이전의 세미콜론 찾기 및 제거;smtp = localhost
  2. 세미콜론을 앞에 두십시오 sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

다른 사항을 변경할 필요는 없지만을 확인하는 것보다 이메일을받지 못하면 SMTP port포트 번호가 같아야합니다.

위의 방법은 Xampp 소프트웨어에서 제공하는 기본 설정에 대한 것입니다.


7
: 해당 사이트를 신뢰하지 않는 경우 대신 코드 플렉스에서 종이 공예를 사용 할 수 있습니다 papercut.codeplex.com .
Marcel Burkhard

나는 그것을 작동시키기 위해 아무것도 할 필요가 없으며 그냥 설치하면됩니다.
vonUbisch

난 그냥하지만 포트 변경했다
파블로 SG 파 체코를

이 경우 사용자 이름과 비밀번호는 무엇입니까?
Eoin

@Eoin 사용자 이름 및 비밀번호는 무엇입니까?
Vikas Khunteta

23

인터넷없이 PC에서 메일 발송을 테스트 할 수 있습니다

이 간단한 응용 프로그램을 Papercut 을 사용 하여 메일 발송을 테스트 해야합니다 . 아무것도 구성 할 필요가 없습니다.

그냥 실행하고 테스트 메일 보내기를 시도하십시오.

test_sendmail.php

<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";

mail($to,$subject,$txt,$headers);
?>

그리고 당신은 이것을 볼 것입니다 :

여기에 이미지 설명을 입력하십시오

좋은 하루 되시길 바랍니다. 더 많은 튜토리얼 Piseth Sok를 위해 Youtube 에서 나를 찾을 수 있습니다

격려!


1
이것은 정말 훌륭한 솔루션이며 쉽고 빠르며 바로 작업에 들어갈 수 있습니다. 메일 서버를 로컬로 채우는 것은 개발자에게만 번거로운 일입니다.
AdheneManx

1
고마워 프로젝트 테스트에도 사용했습니다.
Piseth Sok

19

서버에서 SMTP 를 구성 해야합니다. Google의 G Suite SMTP 를 무료로 사용할 수 있습니다 .

<?php

$mail = new PHPMailer(true);

// Send mail using Gmail
if($send_using_gmail){
    $mail->IsSMTP(); // telling the class to use SMTP
    $mail->SMTPAuth = true; // enable SMTP authentication
    $mail->SMTPSecure = "ssl"; // sets the prefix to the servier
    $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
    $mail->Port = 465; // set the SMTP port for the GMAIL server
    $mail->Username = "your-gmail-account@gmail.com"; // GMAIL username
    $mail->Password = "your-gmail-password"; // GMAIL password
}

// Typical mail data
$mail->AddAddress($email, $name);
$mail->SetFrom($email_from, $name_from);
$mail->Subject = "My Subject";
$mail->Body = "Mail contents";

try{
    $mail->Send();
    echo "Success!";
} catch(Exception $e){
    // Something went bad
    echo "Fail :(";
}

?>

자세한 내용은 PHPMailer 여기를 참조 하십시오 .


@Vikas 답변이 가장 좋았지 만 smtp_port에서 기본 SSL을 사용하면 특정 조건에서 작동하지 않을 수 있습니다.이 답변은 실제로 나를 위해 수정
했으므로

@Vikas 답변을 사용했지만 emtp_port로 465를 사용하는 조각을 사용했습니다. 어쨌든 좋은 일
Temitayo

치명적인 오류 : 82 행의 C : \ xampp \ htdocs \ myweb \ email_script.php에서 클래스 'PHPMailer'를 찾을 수 없음
Shafizadeh

7

내 개인적인 경험에서와 마찬가지로 Vikas Dwivedi의 답변과 매우 유사한 것이 잘 작동한다는 것을 알았습니다.

1 단계 (php.ini 파일)

에있는 php.ini 파일에서 xampp\php\php.ini. 다음과 같이 설정을 변경하십시오.

 extension=php_openssl.dll
 [mail function]
 sendmail_path =":\xampp7\sendmail\sendmail.exe -t"
 mail.add_x_header=On

다른 변수 mail funciton;앞에 두어 끄십시오 . 예 :;smtp_port=25

2 단계 (sendmail.ini 파일)

xampp \ sendmail \ semdmail.ini에있는 sendmail.ini에서 다음으로 변경하십시오.

 smtp_server=smtp.gmail.com
 smtp_port=465
 smtp_ssl=auto
 auth_username=address@gmail.com
 auth_password=YourPassword

3 단계 (코드)

PHP 파일을 작성하고 다음을 사용하십시오.

 <?php
    mail($to, "subject", "body", "From: ".$from);
 ?>

주의

  • php.ini를 다시 불러 오려면 아파치를 다시 시작해야합니다.
  • https://myaccount.google.com/u/1/security 에서 Google의 덜 안전한 앱 액세스를 활성화해야합니다.
  • 관리자 권한으로 Xampp를 실행하는 것이 도움이 될 수 있습니다.

2

이 코드는 로컬 호스트 XAMPP 및 Gmail 계정의 메일에 사용됩니다. 이 코드는 매우 쉽고 나를 위해 노력하고 있습니다.

아래 php.ini 파일 변경

SMTP=smtp.gmail.com 
smtp_port=587 
sendmail_from = your@gmail.com 
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 
extension=php_openssl.dll 

sendmail.ini 파일 변경 아래

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log 
auth_username=yourmail@gmail.com 
auth_password=your-gmail-password 
force_sender=yourmail@gmail.com  

이메일을 보내려면 PHP 파일에 사랑 코드를 작성하십시오

<?php 
    $to = "tomail@gmail.com";
    $subject = "Test Mail";
    $headers = "From: from_mail@gmail.com\r\n";
    $headers .= "Reply-To: replytomail@gmail.com\r\n";
    $headers .= "CC: theassassin.edu@gmail.com\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    $message = '<html><body>';
    $message .= '<img src="//css-tricks.com/examples/WebsiteChangeRequestForm/images/wcrf-header.png" alt="Website Change Request" />';
    $message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
    $message .= "<tr style='background: #eee;'><td><strong>Name:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>Email:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>Type of Change:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>Urgency:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>URL To Change (main):</strong> </td><td>Details</td></tr>";
    $addURLS = 'google.com';
    if (($addURLS) != '') {
        $message .= "<tr><td><strong>URL To Change (additional):</strong> </td><td>" . $addURLS . "</td></tr>";
    }
    $curText = 'dummy text';           
    if (($curText) != '') {
        $message .= "<tr><td><strong>CURRENT Content:</strong> </td><td>" . $curText . "</td></tr>";
    }
    $message .= "<tr><td><strong>NEW Content:</strong> </td><td>New Text</td></tr>";
    $message .= "</table>";
    $message .= "</body></html>";

    if(mail($to,$subject,$message,$headers))
    {
        echo "Mail Send Sucuceed";
    }
    else{
        echo "Mail Send Failed";    
    }
?>

0

이를 위해 SMTP서버와 포트 를 정의해야 합니다. 라이브 호스트에서 메일을 보내는 것을 제외하고는 모두

이것은 이것에 관한 유용한 링크 입니다.

주의 : 포트는 사용하지 않아야합니다. 주의 사항 : 일부 응용 프로그램 Skype은 기본 포트를 사용하므로 메일 전송을 방지합니다.


스카이프가 포트 80을 사용하는 것을 방지 할 수 있습니다. 스카이프의 연결 설정
astroanu

0

이 작업을 위해 한 시간 이상을 보냈습니다. 게시되지 않은 모든 제안에 대해 같은 문제를 겪는 모든 사람을 위해 : XAMPP 인터페이스에서 Apache를 다시 시작해야합니다! XAMPP를 다시 시작하면 작동하지 않습니다!


0

XAMPP Localhost에서 메일을 보내려면 여러 가지 방법을 시도했지만 XAMPP가 SSL 인증서를 가지고 있지 않기 때문에 Gmail 또는 유사한 SMTP 서비스 제공 업체가 내 이메일 요청을 차단했습니다.

그런 다음 로컬 smtp 서버에 MailHog를 사용했습니다. 실행해야합니다. localhost : 1025는 smtp 서버용이고 localhost : 8025는 메일 서버용이며 보낸 이메일을 확인할 수 있습니다.

여기 내 코드가 있습니다 :

    require_once "src/PHPMailer.php";
    require_once "src/SMTP.php";
    require_once "src/Exception.php";

    $mail = new PHPMailer\PHPMailer\PHPMailer();

      //Server settings
    $mail->SMTPDebug = 3;                      // Enable verbose debug output
    $mail->isSMTP();                                            // Send using SMTP
    $mail->Host       = 'localhost';                    // Set the SMTP server to send through
    $mail->Port       = 1025;                                    // TCP port to connect to
    // $mail->Username   = '';                     // SMTP username
    // $mail->Password   = '';                               // SMTP password
    // $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
    // $mail->SMTPSecure = 'tls';         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted

    //Recipients
    $mail->setFrom('testtoo@testto.com', 'Mailer');
    $mail->addAddress('testtoo@webbamail.com', 'Joe User');     // Add a recipient

    // Content
    $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 "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }

MailHog Github 리포지토리 링크


0

모든 답변 외에도 sendmail.ini파일에 주의 하십시오.

auth_password = 이것은-귀하의 -Gmail- 비밀번호가 아닙니다

새로운 Google 보안 문제로 인해 다음 단계에 따라이 용도로 애플리케이션 비밀번호를 만들어야합니다.

  1. 보안 탭에서 https://accounts.google.com/ 으로 이동합니다
  2. 2 단계 인증 켜기
  3. 보안 탭으로 돌아가서 앱 비밀번호를 만듭니다 (select-app 드롭 다운 메뉴에서 'other'를 선택할 수 있음)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.