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
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
Câu trả lời:
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.ini
và c:\xampp\sendmail\sendmail.ini
cho gmail gửi mail.
trong C:\xampp\php\php.ini
tìm extension=php_openssl.dll
và 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-id và my-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 .
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
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_header
một dòng.
sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
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.ini
tệp
[mail function]
và loại bỏ dấu chấm phẩy trước đó;smtp = localhost
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.
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:
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!
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 .
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 funciton
bằ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);
?>
Để ý
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";
}
?>
Bạn phải xác định một SMTP
má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ư
Skype
sử dụng các cổng mặc định và ở đó bằng cách ngăn gửi thư.
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 !!
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!";
}
Ngoài tất cả các câu trả lời xin lưu ý rằng trong sendmail.ini
tệ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: