Як налаштувати XAMPP для надсилання пошти з localhost?


255

Я намагаюся надсилати пошту від localhost. але я не в змозі надіслати пошту з localhost, тому хтось може мені сказати, як перенастроїти мій xampp для надсилання пошти з localhost


3
Чи можемо ми побачити ваш код?
аїзаз

2
Неможливо допомогти, якщо ви не надасте нам поточну конфігурацію.
arkascha

1
Це все ще актуально з включеною Меркурієм (ApacheFriends XAMPP 1.8.2)? Я думаю, що так, але якщо є люди, які віддають перевагу Меркурію, будь ласка, вкажіть нижче. :) Дякую!
крижана вода

Відповіді:


370

Ви можете відправляти пошту з 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 для локального хоста.

у файлі 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-пароль у наведеному вище коді. Також не забудьте видалити повторювані ключі, якщо ви скопіювали налаштування зверху. Наприклад, прокоментуйте наступний рядок, якщо є інший 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 Надіслати електронну пошту за допомогою gmail форми localhost .


3
крім конфігурацій вище, мені потрібно було оновити свою sendmail glob.com.au/sendmail
kaz

1
Мені довелося оновити з XAMMP 1.7.7 до 2.8.2.3 - sendmail включений у новіший XAMPP. Я спробував використати новіший sendmail з 1.7.7 кілька місяців тому, і я не міг змусити його працювати - нарешті покусав кулю і використав новий XAMPP, і він працює як описано.
ВанАльберт

2
Я вважаю, що розташування C: \ xampp \ php \ php.ini відноситься до середовищ Windows. Для Mac дивіться у xamppfiles / тощо для вашого файлу php.ini.
Пол Троттер

3
@Vikas відповідь була найкращою, але зауважте, що використання ssl за замовчуванням на smtp_port може не працювати в певному стані, використовуючи 465, як відповідь Тірумалай Муруган заявив, що це фактично зафіксувало для мене
Temitayo

2
Він ідеально працює з XAMPP версії 7.0.15. Не забудьте видалити з нього крапку з комою, а також увійдіть у той самий ідентифікатор Gmail, який ви налаштували, перейдіть за посиланням нижче myaccount.google.com/lesssecureapps?pli=1 і Дозволити менш захищені програми: Увімкнено. Тепер ви можете відправляти пошту безпосередньо з localhost XAMPP
raftaar1191

35

У XAMPP v3.2.1 для тестування ви можете побачити електронні листи, які XAMPP надсилає в XAMPP / mailoutput. У моєму випадку в Windows 8 це не вимагало додаткової конфігурації і було простим рішенням для тестування електронної пошти


1
І якщо це не працює, перевірте c:\xampp\php\php.ini, шукайте [mail function]та скасуйте цей згаданий рядок mailtodisk.exe. Залишайте коментований кожен інший рядок у цьому розділі, крім mail.add_x_headerодного.
Тім Малоун

3
Як додаток до мого коментаря вище, для більш пізніх версій XAMPP вам може знадобитися вручну додати рядок головного диска. Це має виглядати приблизно так:sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
Тім Малоун

Додатковий додаток до коментаря від @TimMalone. Я виявив, що пошта буде написана на XAMPP / mailoutput, лише якщо запустити XAMPP в якості адміністратора
sohail

@sohail: Вам не потрібно запускати XAMPP як адміністратор, але ви повинні дати дозвіл усім користувачам писати у папку XAMPP / mailoutput (клацніть правою кнопкою миші на папці> безпека> всі користувачі> редагувати дозволи> повний доступ)
cheppsn

@TimMalone Я застосував обидві пропозиції, але нічого в каталозі mailoutput навіть після стількох спроб
Vipul

25

Дуже просто надсилати електронні листи на localhost або локальний сервер

Примітка. Я використовую програмне забезпечення для тестового поштового сервера в ОС Windows 7 64bit із встановленим Xampp

Просто завантажити інструмент сервер тест пошти та встановити в відповідно до інструкції , заданої на своєму веб - сайті Test Mail Server Tool

Тепер потрібно змінити лише два рядки під php.iniфайлом

  1. Знайдіть [mail function]і вийміть напівкрапку, яка була раніше;smtp = localhost
  2. Покладіть напівколонку раніше sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

Вам більше нічого не потрібно змінювати, але якщо ви все одно не отримуєте електронну пошту, ніж перевіряєте SMTP port, номер порту повинен бути однаковим.

Вищеописаний метод призначений для налаштувань за замовчуванням, передбачених програмним забезпеченням Xampp.


7
Якщо ви не довіряєте цьому веб-сайту, ви можете замість цього використовувати паперову вирізку з codeplex: papercut.codeplex.com .
Марсель Буркхард

Мені нічого не довелося робити, щоб він працював, просто встановив його.
vonUbisch

Мені просто довелося змінити порт
Pablo SG Pacheco

Що таке ім'я користувача та пароль у цьому випадку?
Eoin

@Eoin ім'я користувача та пароль що?
Вікас Хунтета

23

Ви можете перевірити надсилання пошти у свій ПК без Інтернету

Ви повинні використовувати 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

Ура!


1
Це дійсно чудове рішення, швидко просте, і я можу просто вступити прямо в роботу. Наповнитися локальними поштовими серверами - це клопот, коли це лише для розробників.
AdheneManx

1
Дякую, я використав це для тестування свого проекту.
Piseth Sok

19

Ви повинні налаштувати SMTP на своєму сервері. Ви можете безкоштовно використовувати Google 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 :(";
}

?>

Детальніше про це PHPMailer читайте тут .


@Vikas відповідь найкраща, але зауважте, що використання ssl за замовчуванням на smtp_port може не працювати в певному стані, використовуючи 465, оскільки ця відповідь фактично зафіксувала це для мене
Temitayo

Я використав відповідь @Vikas, але я використав фрагмент із вашого, тобто використовуючи 465 як emtp_port. Хороша робота в будь-якому випадку
Temitayo

Фатальна помилка: класу 'PHPMailer' не знайдено в C: \ xampp \ htdocs \ myweb \ email_script.php по лінії 82
Shafizadeh

7

Як і в особистому досвіді, я виявив, що дуже схожа річ на відповідь Вікаса Дуіведі буде добре працювати.

Крок 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);
 ?>

Зауважте

  • Вам потрібно перезапустити apache для того, щоб php.ini перезавантажився.
  • вам потрібно активувати Менш безпечний доступ до програми на веб-сторінці https://myaccount.google.com/u/1/security
  • Це може допомогти запустити Xampp з дозволу адміністратора.

2

Цей код використовується для пошти з вашого локального 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  

Будь ласка, напишіть код у файлі 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";    
    }
?>

0

Для цього потрібно визначити SMTPсервер і порт. Все, крім як надсилання листів від живих хостів.

Це корисне посилання щодо цього .

Примітка: порт не повинен використовуватися. Будь ласка, переконайтеся, що деякі додатки, як-от, Skypeвикористовує порти за замовчуванням і там запобігають надсиланню пошти.


Ви можете заборонити скайпу використовувати порт 80. його на налаштуваннях підключення skype
astroanu

0

щойно витратив більше години, намагаючись зробити цю роботу. для всіх, хто має однакові проблеми з усіма пропозиціями, які не розміщені: вам доведеться перезапустити Apache у своєму інтерфейсі XAMPP! просто перезапустити XAMPP звичайна робота !!


0

Я перепробував багато способів надіслати пошту від 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!";
    }

Посилання на сховище MailHog Github


0

окрім усіх відповідей, зверніть увагу, що у sendmail.iniфайлі:

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

через нове занепокоєння щодо безпеки Google, слід виконати наступні кроки, щоб створити для цієї мети пароль програми:

  1. перейдіть на сторінку https://accounts.google.com/ на вкладці безпеки
  2. увімкніть двоетапну перевірку
  3. поверніться на вкладку безпеки та введіть пароль програми (у спадному меню select app ви можете вибрати "other")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.