Как настроить XAMPP для отправки почты с локального хоста?

Я пытаюсь отправить почту с локального хоста. но я не могу отправить почту с localhost, поэтому кто-нибудь может сказать мне, как перенастроить мой xampp для отправки почты с localhost

9 ответов

Вы можете отправлять почту с 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 файл с функцией mail и отправлять почту с 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 с локального хоста, установите флажок PHP+Ubuntu Отправлять электронную почту с помощью формы gmail localhost.

В XAMPP v3.2.1 для целей тестирования вы можете видеть электронные письма, которые XAMPP отправляет в XAMPP/mailoutput. В моем случае на Windows 8 это не требовало дополнительной настройки и было простым решением для тестирования электронной почты.

Вы можете проверить отправку почты на свой компьютер без интернета

Вы должны использовать 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 для более учебника Писет Сок

Не унывайте!

Очень просто отправлять электронную почту на локальный или локальный сервер

Примечание. Я использую тестовое программное обеспечение почтового сервера в Windows 7 64bit с установленным Xampp.

Просто скачайте тестовый почтовый сервер и установите его в соответствии с инструкцией, приведенной на его веб-сайте.

Теперь вам нужно изменить только две строки под php.ini файл

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

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

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

Вы должны настроить SMTP на вашем сервере. Вы можете бесплатно использовать SMTP G Suite от 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 здесь

Как и в моем личном опыте, я обнаружил, что ответ, очень похожий на ответ Викаса Двиведи, будет прекрасно работать.

Шаг 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 перезагрузился.
  • вам нужно активировать Google Безопасный доступ к приложениям в https://myaccount.google.com/u/1/security
  • Это может помочь запустить Xampp с правами администратора.

Для людей на Windows 8, если вы хотите сделать это, я действительно рекомендую прочитать этот учебник, который я нашел: http://yogeshchaugule.com/blog/2013/configure-sendmail-wamp

Это не написано мной, но после того, как я врезал мою голову в бетонную стену в течение 2,5 часов, не получая это работать с самыми странными ошибками, такими как:

  • Время соединения истекло.
  • Соединение закрыто изящно.

В конце концов я обнаружил, что учебное пособие было после установки https://www.stunnel.org/downloads.html и настройки Stunnel. Наконец-то это сработало.

В дополнение ко всем ответам обратите внимание, что в sendmail.ini файл:

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

из-за новой проблемы безопасности Google вам следует выполнить следующие действия, чтобы создать для этой цели пароль приложения:

  1. перейдите на https://accounts.google.com/ на вкладке безопасности
  2. включить двухэтапную аутентификацию
  3. вернитесь на вкладку безопасности и введите пароль приложения (в раскрывающемся меню выбора приложения вы можете выбрать "другое")

Этот код используется для почты с вашего локального хоста 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";    
    }
?>

Я пробовал много способов отправить почту с 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

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

Вы должны определить SMTP сервер и порт для этого. Все, кроме как отправка писем с живых хостов.

Это полезная ссылка по этому поводу.

NB: порт не должен использоваться. Пожалуйста, позаботьтесь о том, чтобы некоторые приложения, такие как Skype использует порты по умолчанию и предотвращает отправку почты.

Если у вас установлена ​​последняя версия xampp, перейдите по этой ссылке для полной документации по отправке электронных писем через xampp. Вы должны включить Apache, прежде чем пытаться получить доступ по ссылке ниже

http://localhost/dashboard/docs/send-mail.html

Другие вопросы по тегам