Próbuję wysłać pocztę z hosta lokalnego. ale nie jestem w stanie wysłać poczty z localhost, więc każdy może mi powiedzieć, jak zmienić konfigurację mojego xampp, aby wysyłał mail z localhost
Próbuję wysłać pocztę z hosta lokalnego. ale nie jestem w stanie wysłać poczty z localhost, więc każdy może mi powiedzieć, jak zmienić konfigurację mojego xampp, aby wysyłał mail z localhost
Odpowiedzi:
Możesz wysyłać pocztę z hosta lokalnego za pomocą pakietu sendmail, pakiet sendmail jest wbudowany w XAMPP. Więc jeśli używasz XAMPP, możesz łatwo wysyłać pocztę z localhost.
na przykład możesz skonfigurować C:\xampp\php\php.ini
i c:\xampp\sendmail\sendmail.ini
dla Gmaila wysyłać pocztę.
w C:\xampp\php\php.ini
znajdź extension=php_openssl.dll
i usuń średnik na początku tego wiersza, aby protokół SSL działał dla Gmaila dla hosta lokalnego.
w pliku php.ini znajdź [mail function]
i zmień
SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = my-gmail-id@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
Teraz otwarty C:\xampp\sendmail\sendmail.ini
. Zastąp cały istniejący kod w sendmail.ini następującym kodem
[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
Teraz już skończyłeś !! utwórz plik php z funkcją mail i wyślij pocztę z localhost.
PS: nie zapomnij zastąpić my-gmail-id i my-gmail-password w powyższym kodzie. Nie zapomnij również usunąć duplikatów kluczy, jeśli skopiowałeś ustawienia z góry. Na przykład skomentuj następujący wiersz, jeśli istnieje inna ścieżka_wysyłki : sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
w pliku php.ini
Pamiętaj także o ponownym uruchomieniu serwera za pomocą panelu sterowania XAMMP, aby zmiany zostały wprowadzone.
W przypadku Gmaila sprawdź https://support.google.com/accounts/answer/6010255, aby umożliwić dostęp z mniej bezpiecznych aplikacji.
Aby wysłać wiadomość e-mail w systemie Linux (z pakietem sendmail) za pośrednictwem Gmaila z hosta lokalnego, sprawdź PHP + Ubuntu Wyślij wiadomość e-mail za pomocą Gmaila z adresu localhost .
W XAMPP v3.2.1 do celów testowych możesz zobaczyć e-maile, które XAMPP wysyła w XAMPP / mailoutput. W moim przypadku w systemie Windows 8 nie wymagało to żadnej dodatkowej konfiguracji i było prostym rozwiązaniem do testowania poczty e-mail
c:\xampp\php\php.ini
, [mail function]
odszukaj i odkomentuj wspomnianą linię mailtodisk.exe
. Zachowaj komentarz co drugi wiersz w tej sekcji, z wyjątkiem mail.add_x_header
jednego.
sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
Wysyłanie wiadomości e-mail na localhost lub lokalnym serwerze jest bardzo proste
Uwaga: używam oprogramowania testowego serwera poczty w systemie Windows 7 64bit z zainstalowanym Xampp
Wystarczy pobrać narzędzie testowe serwera pocztowego i zainstalować zgodnie z instrukcją podaną na stronie internetowej Test Mail Server Tool
Teraz musisz zmienić tylko dwa wiersze w php.ini
pliku
[mail function]
i usuń średnik, który był wcześniej;smtp = localhost
sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"
Nie musisz zmieniać niczego innego, ale jeśli nadal nie otrzymujesz wiadomości e-mail, ale sprawdź SMTP port
, numer portu musi być taki sam.
Powyższa metoda dotyczy ustawień domyślnych dostarczonych przez oprogramowanie Xampp.
powinieneś użyć Papercut tej prostej aplikacji do przetestowania wysyłania poczty. i nie musisz niczego konfigurować.
Po prostu uruchom go i spróbuj przetestować wysyłanie poczty:
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);
?>
i zobaczysz to:
Mam nadzieję, że będziesz miał dobry dzień. możesz mnie znaleźć na Youtube po więcej samouczków Piseth Sok
Dopingować!
Musisz skonfigurować SMTP na swoim serwerze. Możesz użyć G Suite SMTP firmy Google za darmo:
<?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 :(";
}
?>
Przeczytaj więcej o PHPMailer
tutaj .
Podobnie jak w moim osobistym doświadczeniu, stwierdziłem, że odpowiedź bardzo podobna do odpowiedzi Vikasa Dwivedi będzie działać dobrze.
Krok 1 (plik php.ini)
W pliku php.ini znajdującym się w xampp\php\php.ini
. Zmień ustawienia na następujące:
extension=php_openssl.dll
[mail function]
sendmail_path =":\xampp7\sendmail\sendmail.exe -t"
mail.add_x_header=On
Wyłącz inne zmienne mail funciton
, umieszczając ;
je przed nimi. na przykład;smtp_port=25
Krok 2 (plik sendmail.ini)
W sendmail.ini znajdującym się w xampp \ sendmail \ semdmail.ini zmień na:
smtp_server=smtp.gmail.com
smtp_port=465
smtp_ssl=auto
auth_username=address@gmail.com
auth_password=YourPassword
Krok 3 (kod)
Utwórz plik php i użyj:
<?php
mail($to, "subject", "body", "From: ".$from);
?>
Ogłoszenie
Ten kod jest używany w przypadku poczty z lokalnego hosta XAMPP i konta Gmail. Ten kod jest bardzo łatwy i działa dla mnie, spróbuj sam.
Poniżej Zmień w pliku 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
Poniżej Zmień w pliku 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
Napisz kod w swoim pliku PHP, aby wysłać e-mail
<?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";
}
?>
W tym celu musisz zdefiniować SMTP
serwer i port. Wszystko oprócz wysyłania maili z żywych hostów.
To jest przydatny link w tym zakresie .
Uwaga: Port nie powinien być używany. Pamiętaj, że niektóre aplikacje, takie jak,
Skype
używają domyślnych portów i tam, uniemożliwiając wysyłanie poczty.
spędziłem ponad godzinę próbując sprawić, by to zadziałało. dla wszystkich, którzy mają ten sam problem z niedziałającymi wszystkimi sugestiami: musisz zrestartować Apache w swoim interfejsie XAMPP! ponowne uruchomienie XAMPP nie będzie działać !!
Próbowałem na wiele sposobów, aby wysłać pocztę z XAMPP Localhost, ale ponieważ XAMPP nie ma certyfikatu SSL, moje zapytanie zostało zablokowane przez Gmaila lub podobnych dostawców usług SMTP.
Następnie użyłem MailHog do lokalnego serwera smtp, wystarczy go uruchomić. localhost: 1025 jest dla serwera smtp, localhost: 8025 jest dla serwera poczty, na którym możesz sprawdzić wysłane e-maile.
oto mój kod:
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!";
}
oprócz wszystkich odpowiedzi należy pamiętać, że w sendmail.ini
pliku:
auth_password = this-is- Not -your-Gmail-password
ze względu na nowe obawy związane z bezpieczeństwem Google, wykonaj następujące kroki, aby utworzyć hasło aplikacji w tym celu: