Как отправить данные формы без PHP почты? - PullRequest
0 голосов
/ 24 ноября 2018

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

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

Я пытался использовать phpmailer, получил ir от 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 = "user@mysite.com";
    $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="support@mysite.com";

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

?>

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

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

0 голосов
/ 25 ноября 2018

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

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

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

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

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

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

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

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

...