Làm cách nào để định cấu hình XAMPP để gửi thư từ localhost?


255

Tôi đang cố gắng gửi mail từ localhost. nhưng tôi không thể gửi thư từ localhost vì vậy mọi người có thể cho tôi biết cách cấu hình lại xampp của tôi để gửi thư từ localhost


3
Chúng tôi có thể xem mã của bạn?
aizaz

2
Không thể giúp nếu bạn không cung cấp cho chúng tôi cấu hình hiện tại.
arkascha

1
Điều này có còn phù hợp với Sao Thủy đi kèm không (ApacheFriends XAMPP 1.8.2)? Tôi sẽ nghĩ là có, nhưng nếu có người thích Sao Thủy, vui lòng cho biết dưới đây. :) Cảm ơn!
đá

Bản sao có thể có của sendmail.exe mở khi gửi thư
Pascal

Câu trả lời:


371

Bạn có thể gửi thư từ localhost với gói sendmail, gói sendmail được inbuild trong XAMPP. Vì vậy, nếu bạn đang sử dụng XAMPP thì bạn có thể dễ dàng gửi thư từ localhost.

ví dụ bạn có thể cấu hình C:\xampp\php\php.inic:\xampp\sendmail\sendmail.inicho gmail gửi mail.

trong C:\xampp\php\php.initìm extension=php_openssl.dllvà loại bỏ các dấu chấm phẩy từ đầu dòng để làm cho SSL làm việc cho gmail cho localhost.

trong tập tin php.ini tìm [mail function]và thay đổi

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

Bây giờ mở C:\xampp\sendmail\sendmail.ini. Thay thế tất cả các mã hiện có trong sendmail.ini bằng mã sau

[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

Bây giờ bạn đã làm xong !! tạo tập tin php với chức năng thư và gửi thư từ localhost.

PS: đừng quên thay thế my-gmail-idmy-gmail-password trong đoạn mã trên. Ngoài ra, đừng quên xóa các khóa trùng lặp nếu bạn sao chép cài đặt từ trên. Ví dụ: nhận xét dòng sau nếu có một sendmail_path khác : sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"trong tệp php.ini

Cũng nhớ khởi động lại máy chủ bằng bảng điều khiển XAMMP để các thay đổi có hiệu lực.

Đối với gmail, vui lòng kiểm tra https://support.google.com/accountsfurt/6010255 để cho phép truy cập từ các ứng dụng kém an toàn hơn.

Để gửi email trên Linux (với gói sendmail) thông qua Gmail từ localhost, vui lòng kiểm tra PHP + Ubuntu Gửi email bằng mẫu gmail localhost .


3
khác với các cấu hình ở trên, tôi cần cập nhật sendmail của mình trên toàn cầu.com / aundmail
kaz

1
Tôi đã phải nâng cấp từ XAMMP 1.7.7 lên 2.8.2.3 - sendmail được bao gồm trong XAMPP mới hơn. Tôi đã thử sử dụng một sendmail mới hơn với 1.7.7 vài tháng trước và không thể làm cho nó hoạt động được - cuối cùng đã cắn viên đạn và sử dụng XAMPP mới và nó hoạt động như mô tả.
VanAlbert

2
Tôi tin rằng vị trí C: \ xampp \ php \ php.ini đề cập đến môi trường windows. Đối với mac, hãy tìm trong xamppfiles / etc cho tệp php.ini của bạn.
Paul Trotter

3
Câu trả lời của @Vikas là tốt nhất, nhưng xin lưu ý rằng việc sử dụng ssl mặc định trên smtp_port có thể không hoạt động trong một số điều kiện nhất định, sử dụng câu trả lời của 465 do Thirumalai murugan đã thực sự sửa nó cho tôi
Temitayo

2
Nó hoạt động hoàn hảo với XAMPP phiên bản 7.0.15. Đừng quên xóa Dấu chấm phẩy khỏi nó và cũng đăng nhập vào cùng một id Gmail mà bạn đã định cấu hình, sau đó truy cập liên kết bên dưới myaccount.google.com/lesssecur Ứng dụng? Pli = 1 và Cho phép các ứng dụng kém an toàn hơn: BẬT Bây giờ bạn có thể gửi Thư trực tiếp từ localhost XAMPP
raftaar1191

35

Trong XAMPP v3.2.1 cho mục đích thử nghiệm, bạn có thể thấy các email mà XAMPP gửi trong XAMPP / mailoutput. Trong trường hợp của tôi trên Windows 8, điều này không yêu cầu bất kỳ cấu hình bổ sung nào và là một giải pháp đơn giản để kiểm tra email


1
Và nếu điều này không hiệu quả, hãy kiểm tra c:\xampp\php\php.ini, tìm kiếm [mail function]và bỏ qua dòng đề cập mailtodisk.exe. Giữ tất cả các dòng khác trong phần này nhận xét ngoại trừ mail.add_x_headermột dòng.
Tim Malone

3
Là một phần bổ sung cho nhận xét của tôi ở trên, đối với các phiên bản XAMPP gần đây hơn, bạn có thể cần phải thêm dòng mailtodisk theo cách thủ công. Nó sẽ trông giống như thế này:sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
Tim Malone

Một phụ lục bổ sung để bình luận từ @TimMopol. Tôi thấy mail mà sẽ chỉ được ghi vào XAMPP / mailoutput nếu chạy XAMPP như admin
Sohail

@sohail: Bạn không phải chạy XAMPP với tư cách quản trị viên nhưng bạn phải cấp quyền cho tất cả người dùng ghi vào thư mục XAMPP / mailoutput (nhấp chuột phải vào thư mục> bảo mật> tất cả người dùng> chỉnh sửa quyền truy cập> truy cập đầy đủ)
cheppsn

@TimMopol Tôi đã áp dụng cả hai đề xuất nhưng không có gì trong thư mục mailoutput ngay cả sau rất nhiều lần thử
Vipul Hadiya

25

Rất đơn giản để gửi email trên localhost hoặc máy chủ cục bộ

Lưu ý: Tôi đang sử dụng phần mềm máy chủ thư thử nghiệm trên Windows 7 64 bit đã cài đặt Xampp

Chỉ cần tải xuống công cụ máy chủ thư thử nghiệm và cài đặt theo hướng dẫn được cung cấp trên trang web Công cụ Kiểm tra Máy chủ Thư

Bây giờ bạn chỉ cần thay đổi hai dòng trong php.initệp

  1. Tìm [mail function]và loại bỏ dấu chấm phẩy trước đó;smtp = localhost
  2. Đặt dấu hai chấm trước sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

Bạn không cần phải thay đổi bất cứ điều gì khác, nhưng nếu bạn vẫn không nhận được email hơn là kiểm tra SMTP port, số cổng phải giống nhau.

Phương pháp trên dành cho các cài đặt mặc định được cung cấp bởi phần mềm Xampp.


7
Nếu bạn không tin tưởng trang web đó, bạn có thể muốn sử dụng cắt giấy từ codeplex thay thế: papercut.codeplex.com .
Marcel Burkhard

Tôi không phải làm bất cứ điều gì để làm cho nó hoạt động, chỉ cần cài đặt nó.
vonUbisch

Tôi chỉ phải thay đổi cổng mặc dù
Pablo SG Pacheco

Tên người dùng và mật khẩu trong trường hợp này là gì?
Eoin

@Eoin tên người dùng và mật khẩu của cái gì?
Vikas Khunteta

23

Bạn có thể kiểm tra gửi thư trong PC mà không cần Internet

bạn nên sử dụng Papercut ứng dụng đơn giản này để kiểm tra gửi thư. và bạn không cần phải cấu hình bất cứ điều gì.

Chỉ cần chạy nó và thử kiểm tra gửi thư:

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);
?>

và bạn sẽ thấy điều này:

nhập mô tả hình ảnh ở đây

Tôi hy vọng bạn sẽ có một ngày tốt lành. bạn có thể tìm thấy tôi trên Youtube để biết thêm hướng dẫn Piseth Sok

Vui lên!


1
Đây là một giải pháp thực sự tuyệt vời, nhanh chóng dễ dàng và tôi có thể đi thẳng vào công việc. Nhồi xung quanh với các máy chủ thư cục bộ là một rắc rối khi nó chỉ dành cho nhà phát triển.
AdheneManx

1
Cảm ơn tôi đã sử dụng điều này để thử nghiệm dự án của tôi quá.
Piseth Sok

19

Bạn phải cấu hình SMTP trên máy chủ của bạn. Bạn có thể sử dụng G Suite SMTP của Google miễn phí:

<?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 :(";
}

?>

Đọc thêm về PHPMailer đây .


Câu trả lời @Vikas là tốt nhất, nhưng xin lưu ý rằng việc sử dụng ssl mặc định trên smtp_port có thể không hoạt động trong một số điều kiện nhất định, sử dụng 465 vì câu trả lời này đã thực sự khắc phục nó cho tôi
Temitayo

Tôi đã sử dụng câu trả lời @Vikas nhưng tôi đã sử dụng một đoạn từ bạn, tức là sử dụng 465 làm emtp_port. Dù sao thì cũng làm việc tốt
Temitayo

Lỗi nghiêm trọng: Không tìm thấy lớp 'PHPMailer' trong C: \ xampp \ htdocs \ myweb \ email_script.php trên dòng 82
Shafizadeh

7

Theo kinh nghiệm cá nhân của tôi, tôi thấy rằng điều tương tự với câu trả lời của Vikas Dwivingi sẽ hoạt động tốt.

Bước 1 (tệp php.ini)

Trong tệp php.ini nằm trong xampp\php\php.ini. Thay đổi cài đặt thành như sau:

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

Tắt các biến khác mail funcitonbằng cách đặt ;trước chúng. ví dụ;smtp_port=25

Bước 2 (tệp sendmail.ini)

Trong sendmail.ini nằm trong xampp \ sendmail \ semdmail.ini thay đổi như sau:

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

Bước 3 (mã)

Tạo một tập tin php và sử dụng như sau:

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

Để ý

  • Bạn cần khởi động lại apache để php.ini tải lại.
  • bạn cần kích hoạt Google Truy cập ứng dụng ít bảo mật hơn trong https://myaccount.google.com/u/1/securance
  • Nó có thể giúp chạy Xampp với sự cho phép của Quản trị viên.

2

Mã này được sử dụng cho thư từ XAMPP localhost và tài khoản Gmail của bạn. Mã này rất dễ dàng và làm việc cho tôi thử bản thân của bạn.

Thay đổi bên dưới tệp 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 

Dưới đây thay đổi tập tin 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  

Vui lòng viết mã belove trong tệp PHP của bạn để gửi email

<?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

Bạn phải xác định một SMTPmáy chủ và một cổng cho việc này. Tất cả ngoại trừ như gửi thư từ máy chủ trực tiếp.

Đây là một liên kết hữu ích liên quan đến điều này .

NB: Cổng không được sử dụng. Xin lưu ý rằng, Một số ứng dụng như Skypesử dụng các cổng mặc định và ở đó bằng cách ngăn gửi thư.


Bạn có thể ngăn skype sử dụng cổng 80. trên cài đặt kết nối của skype
astroanu

0

chỉ dành hơn một giờ cố gắng để làm cho công việc này. đối với tất cả mọi người có cùng rắc rối với tất cả các đề xuất được đăng không hoạt động: bạn phải khởi động lại Apache trong XAMPP inrerface của bạn! chỉ cần khởi động lại XAMPP sẽ không hoạt động !!


0

Tôi đã thử nhiều cách để gửi thư từ XAMPP Localhost, nhưng vì XAMPP không có Chứng chỉ SSL, yêu cầu email của tôi bị chặn bởi Gmail hoặc các nhà cung cấp dịch vụ SMTP tương tự.

Sau đó, tôi đã sử dụng MailHog cho máy chủ smtp cục bộ, điều bạn cần làm chỉ là chạy nó. localhost: 1025 dành cho máy chủ smtp, localhost: 8025 dành cho máy chủ mail, nơi bạn có thể kiểm tra email bạn đã gửi.

đây là mã của tôi:

    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!";
    }

Liên kết kho lưu trữ Github của MailHog


0

Ngoài tất cả các câu trả lời xin lưu ý rằng trong sendmail.initệp:

auth_password = this-is- Not -your-Gmail-password

do mối quan tâm bảo mật mới của google, bạn nên làm theo các bước sau để tạo mật khẩu ứng dụng cho mục đích này:

  1. truy cập https://accounts.google.com/ trong tab bảo mật
  2. bật xác minh hai bước
  3. quay lại tab bảo mật và tạo mật khẩu ứng dụng (trong menu thả xuống chọn ứng dụng, bạn có thể chọn 'khác')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.