Как настроить 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
файл
- найти
[mail function]
и удалите точку с запятой, которая перед;smtp = localhost
- Поставить точку с запятой перед
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 вам следует выполнить следующие действия, чтобы создать для этой цели пароль приложения:
- перейдите на https://accounts.google.com/ на вкладке безопасности
- включить двухэтапную аутентификацию
- вернитесь на вкладку безопасности и введите пароль приложения (в раскрывающемся меню выбора приложения вы можете выбрать "другое")
Этот код используется для почты с вашего локального хоста 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!";
}
Просто потратил больше часа, пытаясь сделать эту работу. для всех, у кого были одинаковые проблемы со всеми опубликованными предложениями, не работающими: вы должны перезапустить Apache в своем интерфейсе XAMPP! просто перезапуск XAMPP не будет работать!!
Вы должны определить SMTP
сервер и порт для этого. Все, кроме как отправка писем с живых хостов.
Это полезная ссылка по этому поводу.
NB: порт не должен использоваться. Пожалуйста, позаботьтесь о том, чтобы некоторые приложения, такие как
Skype
использует порты по умолчанию и предотвращает отправку почты.
Если у вас установлена последняя версия xampp, перейдите по этой ссылке для полной документации по отправке электронных писем через xampp. Вы должны включить Apache, прежде чем пытаться получить доступ по ссылке ниже