Как отправить данные формы без функции PHP почты?

Я пытаюсь выяснить мою проблему, у меня есть общий хостинг, который отключил функцию php mail по соображениям безопасности.

Мне нужно отправить некоторые данные формы с помощью php, я знаю только, как отправить данные формы с помощью функции php mail.

Я пытался использовать phpmailer, получил от github, но это не сработало.

у меня очень простой вопрос, есть ли обходной путь для отправки данных формы без функции php mail, чтобы обойти отключенную phpmail и никто не настраивается на моем общем веб-хостинге?

заранее благодарю за помощь

это код, который я использовал

<?php

function send_mail($email, $recipient_name, $message='')
{
require("phpmailer/class.phpmailer.php");
require("phpmailer/class.smtp.php");

$mail = new PHPMailer();

$mail->CharSet="utf-8";
$mail->IsSMTP();
$mail->Host = 'localhost';
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "password";

$mail->setFrom($email, $recipient_name);
$mail->AddAddress($email, $recipient_name);

$mail->WordWrap = 50;
$mail->IsHTML(false);

$mail->Subject = "Contact form";
$mail->Body    = $message;

if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}

echo "Message has been sent";
}

//vars
$subject = "Contac form";

$from = $_POST['email'];

//data
$msg = "NAME: "  .$_POST['name']    ."<br><br>\n";
$msg .= "EMAIL: "  .$_POST['email']    ."<br><br>\n";
$msg .= "WEBSITE: "  .$_POST['website']    ."<br><br>\n";
$msg .= "MESSAGE: "  .$_POST['message']    ."<br>\n";

//Headers
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";


$mail="[email protected]";

//send mail
//mail($mail, $subject, $msg, $headers, "-f $from");
send_mail($from, $_POST['name'], $msg);

?>

0

Решение

Во-первых, вы должны включить все требования для отправки почты с PHP почтовой программы

require 'assets/PHPMailer/PHPMailer/src/Exception.php';
require 'assets/PHPMailer/PHPMailer/src/OAuth.php';
require 'assets/PHPMailer/PHPMailer/src/PHPMailer.php';
require 'assets/PHPMailer/PHPMailer/src/POP3.php';
require 'assets/PHPMailer/PHPMailer/src/SMTP.php';
require('assets/PHPMailer/simple_html_dom.php');

После этого вы определяете настройки, вот конфиг, который я использую: (я использую gmail для отправки почты, чтобы использовать gmail, вы должны включить config в вашем gmail, чтобы использовать менее безопасные приложения)

$mailSub = filter_input('insert mail subject here');
$mailMsg = $html_new;
$mailto = 'inset mail you wish to send here';
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->IsSmtp();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->IsHTML(true);
$mail->CharSet = 'UTF-8';

// LOGIN INFO TO YOUR GMAIL
$mail->Username = 'gmail';
$mail->Password = 'password for gmail';
$mail->SetFrom('name you wish to show as sender');
//-------------------------------------------

$mail->Subject = 'subject';
$mail->Body = 'body of a mail, you can use html here';
$mail->AddAddress('reciever mail');
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->Send()

Вот ссылка на сайт к моему репозиторию github с полным приложением, использующим php mailer, может быть, это поможет.

1

Другие решения

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

Поскольку они отключают функцию mail () в php, я предполагаю, что они пытаются не иметь дело со спамерами, использующими их сервисы.

Таким образом, они, вероятно, также не будут запускать службу SMTP на локальном хосте, и, скорее всего, будут отфильтровывать исходящий трафик на порт 25, чтобы предотвратить его доставку на другие почтовые серверы. Но опять же: они не могут (пока).

Но стоит проверить, что доступно:

  • На локальном хосте работает служба SMTP?
  • Есть ли какая-либо услуга SMTP для исходящей ретрансляции, которую они предоставляют своим законным клиентам?
  • Они фильтруют исходящий SMTP через порт 25 для остального мира?
  • Они позволяют вам подключаться к аутентифицированным SMTP сервисам для доставки?

Это немного работы, и то, как получить ответы, во многом зависит от того, насколько минимальным является обслуживание, которое вы получаете, и какими другими ресурсами вы располагаете в Интернете. В любом случае проще всего просто спросить своего поставщика: они знают, что им разрешено, что они блокируют и что они хотят делать дальше, в зависимости от того, где они пытаются избавиться от спамеров.

В любом случае, лучше всего использовать аутентифицированную доставку на сервер Google с адресом назначения в Gmail или около того. Это наименее вероятно, что его отфильтрует либо Google, либо провайдер общего хостинга, который знает, что они делают. Будьте осторожны: аутентифицированная доставка означает, что веб-сервер имеет способ аутентификации в Google, поэтому, если разделение между разными клиентами неоптимально (далеко не всегда надежно), ваши «соседи» в общем хостинге могут относительно легко получить эти учетные данные. , поэтому убедитесь, что это не та учетная запись, которая вас волнует, поэтому создайте адрес Gmail только для этого использования …

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

1

По вопросам рекламы [email protected]