XAMPP'yi localhost'tan posta gönderecek şekilde nasıl yapılandırırım?


256

Localhost'tan posta göndermeye çalışıyorum. ama kimse localhost üzerinden posta gönderemiyorum bu yüzden herkes bana nasıl xampp localhost posta göndermek için yeniden yapılandırmak için söyleyebilir


3
Kodunuzu görebilir miyiz?
aizaz

2
Bize mevcut yapılandırmayı vermezseniz yardım etmek imkansızdır.
arkascha

1
Bu hala Merkür dahil ile alakalı mı (ApacheFriends XAMPP 1.8.2)? Evet düşünürdüm, ama Merkür'ü tercih eden insanlar varsa, lütfen aşağıda belirtin. :) Teşekkürler!
icedwater

Yanıtlar:


372

Sendmail paketi ile localhost'tan posta gönderebilirsiniz, sendmail paketi XAMPP'de inşa edilmiştir. Yani XAMPP kullanıyorsanız, localhost'tan kolayca posta gönderebilirsiniz.

Örneğin Yapılandırabileceğiniz C:\xampp\php\php.inive c:\xampp\sendmail\sendmail.inigmail için posta göndermek için.

içinde C:\xampp\php\php.inifind extension=php_openssl.dllSSL localhost için gmail için çalışan olmak için bu satırın başından noktalı virgül kaldırıp.

php.ini dosyasında bul [mail function]ve değiştir

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

Şimdi Aç C:\xampp\sendmail\sendmail.ini. Sendmail.ini dosyasındaki tüm kodu aşağıdaki kodla değiştir

[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

Şimdi yaptın !! mail fonksiyonu ile php dosyası oluşturun ve localhost'tan mail gönderin.

Not: Yukarıdaki kodda gmail-id ve my-gmail-şifremi değiştirmeyi unutmayın . Ayrıca, ayarları yukarıdan kopyaladıysanız, yinelenen anahtarları kaldırmayı unutmayın. Örneğin , php.ini dosyasında başka bir sendmail_path varsa aşağıdaki satırı yazın :sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"

Değişikliklerin geçerli olması için XAMMP kontrol panelini kullanarak sunucuyu yeniden başlatmayı da unutmayın.

Gmail için , daha az güvenli uygulamalardan erişime izin vermek üzere lütfen https://support.google.com/accounts/answer/6010255 adresini ziyaret edin .

Linux üzerinden e-posta (sendmail paketi ile) localhost'tan Gmail üzerinden göndermek için lütfen PHP + Ubuntu gmail form localhost kullanarak e-posta gönder seçeneğini işaretleyin .


3
yukarıdaki yapılandırmalar dışında, ben sendmail glob.com.au/sendmail
kaz

1
XAMMP 1.7.7'den 2.8.2.3'e yükseltmek zorunda kaldım - sendmail daha yeni XAMPP'ye dahil edildi. Birkaç ay önce 1.7.7 ile daha yeni bir sendmail kullanmayı denedim ve işe yaramadım - sonunda mermiyi ısırdım ve yeni XAMPP'yi kullandım ve açıklandığı gibi çalışıyor.
VanAlbert

2
C: \ xampp \ php \ php.ini konumunun Windows ortamlarına atıfta bulunduğuna inanıyorum. Mac için php.ini dosyanızın xamppfiles / etc dosyasına bakın.
Paul Trotter

3
@Vikas cevap Thirumalai Murugan cevap olarak 465 kullanan belirli koşullarda SMTP_PORT numaralı default ssl kullanarak belki değil iş, aslında benim için sabit belirtti ettiğini iyi, ama not memnun
Temitayo

2
XAMPP 7.0.15 sürümü ile mükemmel çalışıyor Sadece noktalı virgül kaldırmayı ve yapılandırdığınız Gmail kimliğine giriş yapmayı unutmayın, ardından aşağıdaki bağlantıya gidin myaccount.google.com/lesssecureapps?pli=1 ve Daha az güvenli uygulamalara izin ver: AÇIK Postayı doğrudan XAMPP localhost'tan gönderebilirsiniz
raftaar1191

35

Test amacıyla XAMPP v3.2.1'de XAMPP'nin XAMPP / mailoutput'ta gönderdiği e-postaları görebilirsiniz. Benim durumumda Windows 8 için bu herhangi bir ek yapılandırma gerektirmedi ve e-postayı test etmek için basit bir çözümdü


1
Ve eğer bu işe yaramazsa, bahsettiğiniz çizgiyi kontrol edin c:\xampp\php\php.ini, arayın [mail function]ve açın mailtodisk.exe. Bu bölümdeki diğer tüm satırları, bu satır haricinde yorumlu tutun mail.add_x_header.
Tim Malone

3
Yukarıdaki yorumuma bir addemdum olarak, XAMPP'nin daha yeni sürümleri için mailtodisk satırını manuel olarak eklemeniz gerekebilir. Şöyle bir şey olmalı:sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
Tim Malone

@TimMalone'dan yorum yapmak için ek bir ek. E-posta sadece XAMPP yönetici olarak çalıştırılırsa XAMPP / mailoutput için yazılacağını buldum
sohail

@sohail: XAMPP'yi yönetici olarak çalıştırmanız gerekmez, ancak tüm kullanıcıların XAMPP / mailoutput klasörüne yazmasına izin vermeniz gerekir (klasöre sağ tıklayın> güvenlik> tüm kullanıcılar> izinleri düzenle> tam erişim)
cheppsn

@TimMalone Her iki öneriyi de uyguladım, ancak birçok denemeden sonra bile mailoutput dizininde hiçbir şey yok
Vipul Hadiya

25

Localhost veya yerel sunucuya e-posta göndermek çok basit

Not: Test posta sunucusu yazılımını Xampp yüklü Windows 7 64bit üzerinde kullanıyorum

Sadece test posta sunucusu aracını indirin ve kendi web sitesinde verilen talimatlara göre yükleyin Test Posta Sunucusu Aracı

Şimdi php.inidosya altında sadece iki satırı değiştirmeniz gerekiyor

  1. Önceki [mail function]yarım sütunu bulun ve kaldırın;smtp = localhost
  2. Önce noktalı virgül koy sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

Başka bir şey değiştirmeniz gerekmez, ancak yine de e-postaları kontrol etmek yerine almıyorsanız SMTP port, bağlantı noktası numarası aynı olmalıdır.

Yukarıdaki yöntem, Xampp yazılımı tarafından sağlanan varsayılan ayarlar içindir.


7
Bu siteye güvenmiyorsanız, bunun yerine codeplex'ten papercut kullanmak isteyebilirsiniz: papercut.codeplex.com .
Marcel Burkhard

Çalıştırmak için hiçbir şey yapmam gerekmedi, sadece yükleyin.
vonUbisch

Sadece limanı değiştirmek zorunda kaldım
Pablo SG Pacheco

Bu durumda kullanıcı adı ve şifre nedir?
Eoin

@ Kullanıcı adınızı ve şifrenizi girin?
Vikas Khunteta

23

PC'nizde İnternet olmadan posta göndermeyi test edebilirsiniz

posta gönderme test etmek için bu basit uygulamayı Papercut kullanmalısınız . ve hiçbir şey yapılandırmanıza gerek yok.

Sadece çalıştırın ve posta gönderme test deneyin:

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

ve bunu göreceksiniz:

resim açıklamasını buraya girin

Umarım iyi bir gün geçirirsin. Eğer beni bulabilirsiniz Youtube fazla öğretici için Piseth Sok

Cheer!


1
Bu gerçekten harika bir çözüm, hızlı kolay ve doğrudan işe başlayabilirim. Yerel olarak posta sunucuları ile uğraşmak, yalnızca geliştiriciler için bir güçlüktür.
AdheneManx

1
Teşekkürler bunu projemi test etmek için de kullandım.
Piseth Sok

19

Sunucunuzda SMTP yapılandırmanız gerekir. Sen kullanabilirsiniz G Suite SMTP ücretsiz Google tarafından:

<?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 Burada daha fazla bilgi edinin .


@Vikas cevap SMTP_PORT numaralı default ssl kullanarak bu cevap olarak 465 kullanan belirli durumda değil iş, aslında benim için sabit belirtti etmiştir diye iyi oldu ama not memnun
Temitayo

@Vikas cevabını kullandım ama sizden bir parça kullandım yani 465'i emtp_port olarak kullandım. Yine de iyi iş
Temitayo

Önemli hata: 'PHPMailer' sınıfı C: \ xampp \ htdocs \ myweb \ email_script.php satırında 82. satırda
bulunamadı

8

Kişisel deneyimimde olduğu gibi Vikas Dwivedi'nin cevabına çok benzer bir şeyin işe yarayacağını buldum.

Adım 1 (php.ini dosyası)

İçinde bulunan php.ini dosyasında xampp\php\php.ini. Ayarları aşağıdaki gibi değiştirin:

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

Diğer değişkenleri önlerine mail funcitonkoyarak kapatın ;. Örneğin;smtp_port=25

Adım 2 (Sendmail.ini dosyası)

Xampp \ sendmail \ semdmail.ini dosyasında bulunan sendmail.ini dosyasında aşağıdaki gibi değiştirin:

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

Adım 3 (kod)

Bir php dosyası oluşturun ve aşağıdakileri kullanın:

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

Farkına varmak

  • Php.ini dosyasının yeniden yüklenmesi için apache'yi yeniden başlatmanız gerekir.
  • https://myaccount.google.com/u/1/security'de Google Less güvenli uygulama erişimini etkinleştirmeniz gerekiyor
  • Xampp'ı Yönetici izniyle çalıştırmak yardımcı olabilir.

2

Bu kod, localhost XAMPP'nizden ve Gmail hesabınızdan gelen postalar için kullanılır. Bu kod çok kolay ve benim için çalışıyor kendini deneyin.

Php.ini Dosyasındaki Değişikliğin Altında

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 Dosyasındaki Değişikliklerin Altında

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  

E-posta göndermek için lütfen PHP kodunuza sevgili kodunu yazın

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

Bunun için bir SMTPsunucu ve bir bağlantı noktası tanımlamanız gerekir . Canlı ana bilgisayarlardan posta göndermek gibi.

Bu, bununla ilgili faydalı bir bağlantıdır .

Not: Bağlantı noktası kullanılmamalıdır. Lütfen, gibi bazı uygulamaların Skypevarsayılan bağlantı noktalarını kullandığını ve posta göndermesini engellediğini unutmayın.



0

bu işi yapmak için bir saatten fazla zaman harcadım. çalışmayan tüm önerileri ile aynı sorunu olan herkes için: XAMPP inrerface Apache yeniden başlatmanız gerekir! sadece XAMPP yeniden başlatmak işe yaramaz !!


0

XAMPP Localhost'tan posta göndermenin birçok yolunu denedim, ancak XAMPP SSL Sertifikası olmadığından, e-posta isteğim Gmail veya benzer SMTP Hizmet sağlayıcıları tarafından engellendi.

Sonra yerel smtp sunucusu için MailHog kullandım, yapmanız gereken sadece onu çalıştırmak. localhost: 1025, smtp sunucusu içindir, localhost: 8025, gönderdiğiniz e-postaları kontrol edebileceğiniz posta sunucusu içindir.

İşte benim 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!";
    }

MailHog Github Deposu bağlantısı


0

tüm cevaplara ek olarak sendmail.inidosyada lütfen unutmayın :

auth_password = Bu-IS- Değil -senin-Gmail-şifre

yeni google güvenlik sorunu nedeniyle, bu amaçla bir uygulama şifresi oluşturmak için aşağıdaki adımları izlemelisiniz:

  1. https://accounts.google.com/ adresine gidin. güvenlik sekmesinde
  2. iki adımlı doğrulamayı aç
  3. güvenlik sekmesine dönün ve bir Uygulama şifresi oluşturun (uygulama seçme açılır menüsünde 'diğer' seçimini yapabilirsiniz)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.