Проблема с $ mail-> Body в PHPMailer

новичок здесь.

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

Я работаю над проектом PHP. Как это работает, пользователь переходит на страницу и пишет некоторые комментарии в форме (текстовый редактор) и нажимает кнопку «Отправить». Я могу получить его сообщение в моем письме. Я установил пароль и хост пуст по понятным причинам, но позже это будет мое реальное письмо с моим собственным доменом.

Проблема 2 проблемы здесь:

  • Я не хочу отправлять статическое тело с $ mail-> Body, но я хочу, чтобы программа взяла сообщение пользователя, имя и адрес электронной почты и отправила это сообщение на мою электронную почту.
  • Когда я получаю письмо, я не вижу имя и адрес электронной почты отправителя, что означает, что программа не может получить адрес электронной почты и имя пользователя из сеанса.

Не могли бы вы дать свое предложение или пример кода, который помогает. Спасибо.

if($_POST['mode']=='send'){

$mail = new PHPMailer();

$mail->IsSMTP();                                // telling the class to use SMTP
$mail->Host     = "myhost";                     // SMTP server
//$mail->SMTPSecure = 'ssl';
$mail->From     = "my email";
$mail->port     = '26';                             // can also change to 465
$mail->SMTPAuth = true;
$mail->Username= "my email";
$mail->Password = "my password";

$mail->AddAddress("my email");

$Name = mysql_real_escape_string($_POST['part_fname']);    //this code is not getting the name and email
$Email = mysql_real_escape_string($_POST['part_email']);

$mail->Subject  = "New Bug Report";
$mail->Body     = "User Information, Name = " . $Name . " ||  Email = " . $Email; // I want to get the user's message not a static message!
$mail->WordWrap = 50;

if(!$mail->Send())
{
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
else
{
$message = 'Thanks for your suggestion';
}
}

Вот форма в HTML:

<form role="form" name="Form2" action="" method="post" class="form-horizontal">
<textarea name="bug" cols="100" rows="15" id="textarea" placeholder="Enter text ..."></textarea>
<input name="mode" value="send" type="hidden">
<p style="margin-top:5px;"><input type="reset" value="Clear Text!" class="btn btn-danger">&nbsp; <button type="submit" class="btn btn-primary">Send report</button></p>
</form>

0

Решение

Удалить mysql_real_escape_string это требует подключения к MySQL.

$Name = $_POST['part_fname'];
$Email = $_POST['part_email'];
$message= $_POST['bug'];//add this to get the textarea value

затем добавьте значение к телу:

$mail->Body = "User Information, Name = " . $Name . " ||  Email = " . $Email;
$mail->Body .= "Message: ".$message;

Если вы хотели сессий

когда пользователь входит в систему:

session_start();
$_SESSION['part_fname'] = $Name;
$_SESSION['part_email'] = $Email;

при отправке электронной почты:

session_start();
$Name = $_SESSION['part_fname'];
$Email = $_SESSION['part_email'];
$message= $_POST['bug'];
1

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

к форме нужно добавить поля для имени и адреса электронной почты примерно так:

<input name="part_fname" value="" type="text">
<input name="part_email" value="" type="text">

затем измените код:

$Name = $_POST['part_fname'];
$Email = $_POST['part_email'];
$message= $_POST['bug'];// textarea value

$mail->Body = "User Information, Name = " . $Name . " ||  Email = " . $Email;
$mail->Body .= "Message: ".$message;
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector