первая - для заказа консультации, вторая - для оформления подписки. Подскажите, каким образом можно настроить отправку писем мне на почту с данного лендинга, с данными, который ввел пользователь. При оформлении подписки, нужно просто чтоб в теме письма был заголовок, указывающий, на то, что пользователь хочет оформить подписку. Заранее благодарен.
На странице с формой код формы должен выглядеть примерно так:
....
<form action="sendmail.php" method="POST">
<input name="name" type="text" placeholder="Ваше имя">
<input name="email" type="text" placeholder="Ваша почта">
<input name="phone" type="text" placeholder="Ваш телефон">
<input name="details" type="text" placeholder="Детали заявки">
....
<input type="submit" value="Оставить заявку">
</form>
....
тут важно обратить внимание на method='POST' (способ как будем отправлять и следовательно получать данные сервером), action="sendmail.php" (страница на которую будем отправлять данные с формы, её мы создадим в следующем шаге) и name каждого input-a для того чтобы указать его в серверной части, таким образом получив его значение.
Создаём файл sendmail.php в нём пишем что-то вроде:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$details = $_POST['details'];
require_once('mail.class.php'); //подключим настройки phpmailer, этот файл мы создадим на 5 шаге
$message_data = array(
'to' => 'почта@приема.заявок',
'to_name' => 'Новая заявка от '.$name,
'text' => $name.', '.$email.', '.$phone.','.$details
);
$mailer = new mail; //класс из файла mail.class.php который мы подключили выше
$sendmail = $mailer->send($message_data);
$answer = 'EMPTY';
if ($sendmail == 0)
{
$answer = 'Заявка оставлена!';
} else {
$answer = 'Ошибка! Письмо не было отправлено.';
}
echo $answer;
?>
Файл mail.class.php (так уж и быть, распишу настройки PHPMailer-a) должен выглядеть примерно так:
<?php
class mail{
private $smtp_data = array(
"host" => 'ЗАПОЛНИТЬ', // SMTP сервер
"debug" => 0, // Уровень логирования (0 выкл, 1 - вывод ошибок, 2- полный лог)
"debugoutput"=> 'html', //формат вывода лога, если включено логирование
"auth" => true, // Авторизация на сервере SMTP. Если ее нет - false
"port" => ЗАПОЛНИТЬ, // Порт SMTP сервера
"username" => 'ЗАПОЛНИТЬ', // Логин на SMTP сервере
"password" => 'ЗАПОЛНИТЬ', // Пароль на SMTP сервере
"fromname" => 'ЗАПОЛНИТЬ', // Отображаемое имя отправителя
"replyto" => array(
"address" => 'ЗАПОЛНИТЬ', // адрес почты для ответа
"name" => 'ЗАПОЛНИТЬ' //отображаемое имя владельца ящика
),
"notification" => array(
"address" => 'ЗАПОЛНИТЬ', // Почта оповещения админа (не оповещать оставить пустым)
"name" => 'ЗАПОЛНИТЬ' //отображаемое имя владельца ящика
),
"secure" => 'ЗАПОЛНИТЬ', // Тип шифрования. Например ssl или tls
"charset" => 'UTF-8', //кодировка отправляемых писем
"verify" => '0' // Верификация сертификата. 0 -выкл, 1 - вкл (выключить при возникновении ошибок связанных с SSL сертификатами при отправке)
);
private $mail_content = array(
'title' => 'ЗАПОЛНИТЬ',
'header' => '',
'footer' => ''
);
private function fullText($text)
{
if(!empty($text))
{
return $this-> mail_content['header'] . $text . $this->mail_content['footer'];
}
else
{
die("Отсутствует текст письма");
}
}
public function send($message_data)
{
require_once('C:/..ПУТЬ../PHPMailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail-> isSMTP();
if($this-> smtp_data['verify'] == 0) {
$mail-> SMTPOptions = array('ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
));
}
$mail-> Host = $this-> smtp_data['host'];
$mail-> SMTPDebug = $this -> smtp_data['debug'];
$mail-> Debugoutput = $this-> smtp_data['debugoutput'];
$mail-> SMTPAuth = $this-> smtp_data['auth'];
$mail-> Port = $this-> smtp_data['port'];
$mail-> Username = $this-> smtp_data['username'];
$mail-> Password = $this-> smtp_data['password'];
$mail-> SMTPSecure = $this-> smtp_data['secure'];
$mail-> CharSet = $this-> smtp_data['charset'];
$mail-> setFrom($this-> smtp_data['username'],
$this-> smtp_data['fromname']);
$mail-> addReplyTo($this-> smtp_data['replyto']['address'],
$this-> smtp_data['replyto']['name']);
if(!empty($this-> smtp_data['notification']['address'])) {
$mail-> addAddress($this-> smtp_data['notification']['address'],
$this-> smtp_data['notification']['name']);
}
$mail-> addAddress($message_data['to'], $message_data['to_name']);
$mail-> Subject = $this-> mail_content['title'];
$mail-> msgHTML($this-> fullText($message_data['text']));
$mail-> AltBody = strip_tags($this-> fullText($message_data['text']));
if (!$mail-> send()) {
die("Mailer Error: " . $mail-> ErrorInfo);
} else {
return 0;
}
}
}
Удачи вам в решении задачи! Выглядит всё громоздко и трудно, но на самом деле достаточно легко. Гугл будет верным союзником при возникновении каких либо трудностей и вопросов на этапах выполнения описанных мною шагов. P.S.: Описанный мной способ подразумевает что у вас будет зарегистрирован почтовый ящик ДЛЯ ОТПРАВКИ ПИСЕМ на любом почтовом сервисе (google/mail/yandex/...) и письма будут отправляться с него при помощи PHP+PHPMailer на нужные e-mail адреса (в вашем случае это ваш собственный e-mail адрес)
В файле index.html
<form method="POST" action="send.php">
<input type="text" name="name">
<input type="text" name="mail">
<input type="submit">
</form>
Файл send.php
<?php
$subject = "Заголовок письма";
$text = $_POST['email']."\nТекст: ".$_POST['vopros'];
$address = "admin@stite.ru";
mail($address, $subject, $text, 'Content-Type: text/plain; charset=utf-8');
echo "Отправлено";
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Кто сталкивался, интересует пример ответа 1с, стандартные варианты не подходят, делаю без логина и пароля, пробовал с проверкой
У меня есть три микросервиса, которые я запускаю в докере