Я пытаюсь отправить почту с локального хоста. но я не могу отправить почту с localhost, поэтому кто-нибудь может сказать мне, как перенастроить мой xampp для отправки почты с localhost
Я пытаюсь отправить почту с локального хоста. но я не могу отправить почту с localhost, поэтому кто-нибудь может сказать мне, как перенастроить мой xampp для отправки почты с localhost
Ответы:
Вы можете отправлять почту с 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 файл с функцией 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 это не требовало дополнительной настройки и было простым решением для проверки электронной почты.
c:\xampp\php\php.ini, найдите [mail function]и раскомментируйте указанную строку mailtodisk.exe. Оставьте все остальные строки в этом разделе закомментированными, кроме mail.add_x_headerодной.
sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
Очень просто отправлять электронную почту на локальный или локальный сервер
Примечание. Я использую тестовый почтовый сервер на 64-битной Windows 7 с установленным Xampp.
Просто загрузить инструмент сервер тест почты и установить в соответствии с инструкцией , заданной на своем веб - сайте Test Mail Server Tool
Теперь вам нужно изменить только две строки в php.iniфайле
[mail function]и удалить точку с запятой, которая раньше;smtp = localhostsendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"Вам не нужно ничего менять, но если вы все еще не получаете электронную почту, кроме проверки SMTP port, номер порта должен быть таким же.
Вышеуказанный метод предназначен для настроек по умолчанию, предоставляемых программным обеспечением Xampp.
Вы должны использовать 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 для более учебника Писет Сок
Не унывайте!
Вы должны настроить 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);
?>
уведомление
Этот код используется для почты с вашего локального хоста 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";
}
?>
Вы должны определить SMTPсервер и порт для этого. Все, кроме как отправка писем с живых хостов.
Это полезная ссылка по этому поводу .
NB. Порт не должен использоваться. Пожалуйста, позаботьтесь о том, чтобы некоторые приложения, такие как,
Skypeиспользовали порты по умолчанию и предотвращали отправку почты.
просто потратил больше часа, пытаясь заставить эту работу. для всех, кто испытывает те же проблемы со всеми опубликованными предложениями, которые не работают: вы должны перезапустить Apache в своем интерфейсе XAMPP! просто перезапуск XAMPP не будет работать !!
Я пробовал много способов отправки почты с локального хоста XAMPP, но, поскольку у 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!";
}
В дополнение ко всем ответам, обратите внимание, что в sendmail.iniфайле:
auth_password = это- не- ваш-Gmail-пароль
Из-за новой проблемы безопасности Google вы должны выполнить следующие шаги, чтобы создать пароль приложения для этой цели: