Я пытаюсь отправить почту с локального хоста. но я не могу отправить почту с 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 = localhost
sendmail_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 вы должны выполнить следующие шаги, чтобы создать пароль приложения для этой цели: