ฉันพยายามส่งจดหมายจาก localhost แต่ฉันไม่สามารถส่งจดหมายจาก localhost ได้ดังนั้นใครสามารถบอกฉันได้ว่าวิธีการกำหนดค่า xampp ของฉันเพื่อส่งจดหมายจาก localhost
ฉันพยายามส่งจดหมายจาก localhost แต่ฉันไม่สามารถส่งจดหมายจาก localhost ได้ดังนั้นใครสามารถบอกฉันได้ว่าวิธีการกำหนดค่า xampp ของฉันเพื่อส่งจดหมายจาก localhost
คำตอบ:
คุณสามารถส่งจดหมายจาก localhost ด้วยแพ็คเกจ sendmail, แพคเกจ sendmail นั้นอยู่ใน XAMPP ดังนั้นหากคุณใช้ XAMPP คุณสามารถส่งจดหมายจาก localhost ได้อย่างง่ายดาย
ตัวอย่างเช่นคุณสามารถกำหนดค่าC:\xampp\php\php.ini
และc:\xampp\sendmail\sendmail.ini
ให้ Gmail ส่งอีเมล
ในการC:\xampp\php\php.ini
ค้นหาextension=php_openssl.dll
และลบเครื่องหมายอัฒภาคจากจุดเริ่มต้นของบรรทัดนั้นเพื่อให้ SSL ใช้งานได้กับ gmail สำหรับ localhost
ในไฟล์ 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
PS: อย่าลืมแทนที่my-gmail-idและ my-gmail-passwordในรหัสด้านบน นอกจากนี้อย่าลืมลบคีย์ที่ซ้ำกันหากคุณคัดลอกการตั้งค่าจากด้านบน ตัวอย่างเช่นคอมเม้นต์บรรทัดต่อไปนี้หากมีsendmail_pathอีกอัน: sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
ในไฟล์ php.ini
อย่าลืมรีสตาร์ทเซิร์ฟเวอร์โดยใช้แผงควบคุม XAMMP เพื่อให้การเปลี่ยนแปลงมีผล
สำหรับ gmail โปรดตรวจสอบhttps://support.google.com/accounts/answer/6010255เพื่ออนุญาตการเข้าถึงจากแอปที่ปลอดภัยน้อยกว่า
ส่งอีเมลบน Linux (กับแพคเกจ sendmail) ผ่าน Gmail จาก localhost โปรดตรวจสอบPHP + Ubuntu ส่งอีเมลโดยใช้แบบฟอร์มการ localhost
ใน XAMPP v3.2.1 เพื่อการทดสอบคุณสามารถดูอีเมลที่ XAMPP ส่งใน XAMPP / mailoutput ในกรณีของฉันใน Windows 8 สิ่งนี้ไม่จำเป็นต้องมีการกำหนดค่าเพิ่มเติมใด ๆ และเป็นวิธีง่ายๆในการทดสอบอีเมล
c:\xampp\php\php.ini
มองหา[mail function]
และ uncomment mailtodisk.exe
บรรทัดที่กล่าวถึง ให้ทุกบรรทัดอื่น ๆ ในส่วนนี้แสดงความคิดเห็นยกเว้นสายmail.add_x_header
หนึ่ง
sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
มันง่ายมากที่จะส่งอีเมลบน localhost หรือเซิร์ฟเวอร์ท้องถิ่น
หมายเหตุ: ฉันใช้ซอฟต์แวร์เซิร์ฟเวอร์อีเมลทดสอบใน Windows 7 64 บิตที่ติดตั้ง Xampp
เพียงดาวน์โหลดเครื่องมือเมลเซิร์ฟเวอร์ทดสอบและติดตั้งตามคำแนะนำที่ระบุบนเว็บไซต์เครื่องมือทดสอบเซิร์ฟเวอร์อีเมล
ตอนนี้คุณต้องเปลี่ยนเพียงสองบรรทัดภายใต้php.ini
ไฟล์
[mail function]
และลบเซมิโคลอนที่อยู่ก่อนหน้า;smtp = localhost
sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"
คุณไม่จำเป็นต้องเปลี่ยนแปลงอะไรอีก แต่ถ้าคุณยังไม่ได้รับอีเมลมากกว่าตรวจสอบSMTP port
หมายเลขพอร์ตจะต้องเหมือนกัน
วิธีการข้างต้นใช้สำหรับการตั้งค่าเริ่มต้นโดยซอฟต์แวร์ Xampp
คุณควรใช้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);
?>
และคุณจะเห็นสิ่งนี้:
ฉันหวังว่าคุณจะมีวันที่ดี คุณสามารถหาฉันบนYoutubeสำหรับการกวดวิชาเพิ่มเติมPiseth Sok
เชียร์!
คุณต้องกำหนดค่าSMTPบนเซิร์ฟเวอร์ของคุณ คุณสามารถใช้G Suite SMTPโดย Google ได้ฟรี:
<?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 :(";
}
?>
จากประสบการณ์ส่วนตัวของฉันฉันพบว่าคำตอบของ 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)
ใน sendmail.ini อยู่ใน xampp \ sendmail \ semdmail.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);
?>
แจ้งให้ทราบ
รหัสนี้ใช้สำหรับจดหมายจาก localhost 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
โปรดเขียนโค้ด belove ในไฟล์ 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";
}
?>
คุณต้องกำหนดSMTP
เซิร์ฟเวอร์และพอร์ตสำหรับสิ่งนี้ ทั้งหมดยกเว้นชอบส่งอีเมลจากโฮสต์สด
นี้เป็นลิงค์ที่มีประโยชน์เกี่ยวกับเรื่องนี้
หมายเหตุ: พอร์ตควรไม่ได้ใช้ โปรดระวังว่าแอพพลิเคชั่นบางตัวเช่น
Skype
ใช้พอร์ตเริ่มต้นและป้องกันการส่งเมล
ใช้เวลากว่าหนึ่งชั่วโมงในการพยายามทำงานนี้ สำหรับทุกคนที่มีปัญหาเดียวกันกับคำแนะนำทั้งหมดที่โพสต์ไม่ทำงาน: คุณต้องรีสตาร์ท Apache ใน XAMPP inrerface ของคุณ! เพิ่งเริ่มต้น XAMPP จะไม่ทำงาน !!
ฉันลองหลายวิธีในการส่งจดหมายจาก XAMPP Localhost แต่เนื่องจาก XAMPP ไม่มีใบรับรอง SSL คำขออีเมลของฉันถูกบล็อกโดย Gmail หรือผู้ให้บริการ SMTP ที่คล้ายกัน
จากนั้นฉันก็ใช้ MailHog สำหรับเซิร์ฟเวอร์ smtp ในพื้นที่สิ่งที่คุณต้องทำก็แค่เรียกใช้ 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!";
}
นอกจากคำตอบทั้งหมดโปรดทราบว่าในsendmail.ini
ไฟล์:
auth_password = นี้-ล์ไม่ด์ของคุณใช้ Gmail รหัสผ่าน
เนื่องจากข้อกังวลด้านความปลอดภัยของ google ใหม่คุณควรทำตามขั้นตอนเหล่านี้เพื่อสร้างรหัสผ่านแอปพลิเคชันเพื่อจุดประสงค์นี้: