Member 13857265 Ответов: 1

Как отправить электронное письмо с сайта с помощью angularjs и PHP-скрипта?


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

Надеюсь, кто-нибудь посмотрит и скажет мне, что я здесь делаю не так.

Что я уже пробовал:

Теперь я очистил свой код, чтобы было легче увидеть, если что-то не так, поэтому у меня нет ничего, чтобы проверить входной текст.

в настоящее время у меня есть 3 файла на моем сервере, которые являются contact.php, contact.html и еще app.js и я создал учетную запись электронной почты на том же сервере, потому что она является частью пакета, когда я его размещал.

Мой html-код:
<div class=" container formcontainer">
        
      <form method="post">
            
            <input type="text" name="subject" class="form-control" placeholder="Subject..." ng-model="formData.subject">
            
            <input type="email" name="email" class="form-control" placeholder="Your email..." ng-model="formData.email">
         
            <textarea  rows="5" cols="50" class="form-control" placeholder="You message" ng-model="formData.message"></textarea>
           
            <button type="submit" ng-click="processForm()" class="btn btn-success btn-lg btn-block">Submit!</button>
      </form>
   </div>


Мой контроллер:
app.controller("contactController", ['$scope', '$http', function ($scope, $http) {


        $scope.formData = {

            subject: '',
            email: '',
            message: ''
        };
        console.log(formData);
        // process the form
        $scope.processForm = function () {
            $http({
                method: 'POST',
                url: 'contact.php',
                data: $scope.formData,
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
            })


        };


    } ]);


Мой php скрипт:
<?php


$post_data = file_get_contents("php://input");
$data = json_decode($post_data);



//email information
$to = "lurtze@hotmail.com";

$subject = $data['subject'];
$userEmail=$data['email'];
$message=$data['message'];



$headers = 'From: ' . $userEmail . "\r\n" .
        'Reply-To:'.$userEmail . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

//php mail function to send email on your email address
mail($to, $subject, $message, $headers);

//Email response
  echo "Thank you for contacting us!";
  }

?>

Richard MacCutchan

Какой SMTP-хост вы используете?

Member 13857265

Ну, вы имеете в виду SMTP-сервер? потому что я думал, что если я использую php-скрипт, то я не использую SMTP, сервер send.one.com

Richard MacCutchan

Вы не можете отправлять почту без SMTP - сервера для обработки транспорта. Он должен быть настроен в вашем файле php.ini.

Member 13857265

Да, но это самое странное, ни одно из руководств, которые я использовал, ничего не упоминало об этом, вопрос в том, когда вы говорите php.ini, вы имеете в виду мой php-скрипт или что-то еще, и как именно я должен это сделать? потому что я попробовал только SMTP-подход, и он тоже не сработал.

Richard MacCutchan

как я уже сказал, Вы не можете отправлять почту без доступа к SMTP-серверу. И почтовая система должна знать адрес этого сервера. Видеть Почтовые функции PHP 5[^] относительно деталей.

Member 13857265

О'кей, спасибо, постараюсь разобраться...

1 Ответов

Рейтинг:
6

Jochen Arndt

Как уже упоминалось в комментариях, вы должны настроить PHP (см. PHP: конфигурация среды выполнения - руководство пользователя[^]) для использования PHP: почта - руководство пользователя[^].

Но ... mail() функция является пережитком старых времен, и отправка почты в настоящее время требует безопасных соединений и аутентификации. Решение состоит в том, чтобы использовать один из почтовых фреймворков PHP, таких как GitHub - PHPMailer/PHPMailer: классическая библиотека отправки электронной почты для PHP[^] или Мощная компонентная почтовая библиотека для PHP – Swift Mailer[^].

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