Перейти к содержимому

Сервис обмена электронных валют


  • Закрытая тема Тема закрыта

Как подменить отправителя в mail()

#1 VsOK

VsOK
  • Пользователь
  • 2 сообщений
  • Репутация: 0
0

Отправлено 26 Июль 2010 - 20:17

Есть такой скрипт
<form method="post"><input type="hidden" name="mail" value="example@example.com"><table>
<tr><td colspan=2><center><b>Отправить мне письмо на почту</b></td></tr>
<tr><td>Тема сообщения: </td><td><input name="subj"></td></tr>
<tr><td>Cообщение: </td><td><textarea rows=6 name="text"></textarea></td></tr>
<tr><td></td><td><input type="submit" value="Отправить письмо"></td></tr>
</table></form>


<?php
if(!empty($_POST['subj']) && !empty($_POST['text']) && !empty($_POST['mail']))
{
if(@mail($_POST['mail'], $_POST['subj'], htmlspecialchars($_POST['text'])))
echo "Письмо успешно отправлено.";
else
echo "Произошла ошибка, попробуйте снова.";

// Очищаем переменные, что бы пользователь случайно снова не отправил нам письмо
$_POST['subj'] = ""; $_POST['text'] = ""; $_POST['mail'] = "";
}

?>


Подскажите как вставить сюда отправителя, чтобы приходило письмо не с мылом сервера а то мыло которое я пропишу.

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 26 Июль 2010 - 22:48

VsOK, не все хостеры разрешают подменять адрес и имя отправителя, чтобы обезопасить пользователей. Иначе вы можете отправить почту от любого имени, это критично...
Если у вас собственный почтовый сервер, то пожалуйста:
<?php
if(!empty($_POST['subj']) && !empty($_POST['text']) && !empty($_POST['mail']))
{
if(@mail($_POST['mail'], $_POST['subj'], htmlspecialchars($_POST['text']), "From: ваш@email.ru")) // добавляем в шапку отправителя
echo "Письмо успешно отправлено.";
else
echo "Произошла ошибка, попробуйте снова.";

// Очищаем переменные, что бы пользователь случайно снова не отправил нам письмо
$_POST['subj'] = ""; $_POST['text'] = ""; $_POST['mail'] = "";
}

?>

Если сервак sendmail, то возможно, понадобится пятый параметр, почитать можно по ссылке ниже.
Если ещё что-то заинтересует из заголовков, почитайте - mail()
  • 0

#3 VsOK

VsOK
    Topic Starter
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 26 Июль 2010 - 23:19

Спасибо, то что нужно.

А как добавить чтобы переменная была. Ввожу в форму переменную
E-mail отправителя: <input value="Studio Domino Billing Department <billing@studio-domino.com>" name="from" size="90">

И чтобы введенный адрес и передавался в параметре From.
  • 0

#4 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 27 Июль 2010 - 00:18

Задай тип инпута type="hidden" и вставляй полученные данные в функцию mail();

Но, необходимо заменить угловые скобки на их аналоги ASCII: &gt; &lt;
Иначе интерпретатор HTML будет путаться и думать, что ты закрываешь тэг.
  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 Июль 2010 - 14:58

VsOK,
<?php
if(!empty($_POST['subj']) && !empty($_POST['text']) && !empty($_POST['mail'] && !empty($_POST['from'])))
{
if(@mail($_POST['mail'], $_POST['subj'], htmlspecialchars($_POST['text']), $_POST['from'])) // добавляем в шапку отправителя
echo "Письмо успешно отправлено.";
else
echo "Произошла ошибка, попробуйте снова.";

// Очищаем переменные, что бы пользователь случайно снова не отправил нам письмо
$_POST['subj'] = ""; $_POST['text'] = ""; $_POST['mail'] = "";
}

?>

Если в переменную $_POST['from'] будут поступать выше-приведенные вами данные, то код выше. И так же не забываем, что пери добавлении иных заголовков их нужно разделять переносом коретки и отступом \r\n
В любом случае, если этой формой будете пользоваться только вы, то никаких проверок делать не нужно, а иначе всё же советую делать проверки.

gaaarfild, по-моему не нужно заменять спецсимволы на их эквиваленты, это не тело сообщения, а заголовки :) Там всё четко.
  • 0

#6 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 28 Июль 2010 - 19:36

Так это не для интерпретатора PHP, это для HTML. Оно же у него в теге HTML находится.
  • 0

#7 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 28 Июль 2010 - 21:21

gaaarfild, это не тег HTML. Так пишется адрес отправителя, если указывается так же имя отправителя. Тут не нужно ничего преобразовывать. Сервер поймет всё как нужно.
  • 0

#8 kons

kons
  • Пользователь
  • 5 сообщений
  • Репутация: 0

Отправлено 04 Август 2010 - 12:26

Программы для массовой рассылки писем тоже по-моему могут подменять отправителя.
  • 0

#9 CashMagnat

CashMagnat
  • Пользователь
  • 24 сообщений
  • Репутация: 0

Отправлено 05 Август 2010 - 00:57

Если надо подмнить отправителя, то в 4й параметр фунции mail надо прописать From: Admin <tralals@tt.ru>
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru