Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> php отправка email, использование переменной from 
:(
    Опции темы
Cript777
  Дата 11.2.2013, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 30.10.2012

Репутация: нет
Всего: нет



Приветствую!
Есть простейший код отправки на email:

Код

<?php 
  $from = $_POST['from'];
  if(empty($_POST['mail_to'])) exit("Введите адрес получателя");  
  if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $_POST['mail_to'])) exit("Введите верный адрес"); 
  $picture = ""; 
  if (!empty($_FILES['mail_file']['tmp_name'])) 
  { 
    $path = $_FILES['mail_file']['name']; 
    if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path; 
  } 
  $thm = $_POST['mail_subject'];
  $msg = $_POST['mail_msg'];
  $mail_to = $_POST['mail_to'];
  if(empty($picture)) mail($mail_to, $thm, $msg); 
  else send_mail($mail_to, $thm, $msg, $picture); 
  function send_mail($mail_to, $thema, $html, $path)   
  { if ($path) {  
    $fp = fopen($path,"rb");   
    if (!$fp)   
    { print "Cannot open file";   
      exit();   
    }   
    $file = fread($fp, filesize($path));   
    fclose($fp);   
    }  
    $name = $_FILES['mail_file']['name'];
    $EOL = "\r\n"; 
    $boundary     = "--".md5(uniqid(time()));  
    $headers    = "MIME-Version: 1.0;$EOL";   
    $headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  
    $headers   .= "From: [email protected]";  
      
    $multipart  = "--$boundary$EOL";   
    $multipart .= "Content-Type: text/html; charset=windows-1251$EOL";   
    $multipart .= "Content-Transfer-Encoding: base64$EOL";   
    $multipart .= $EOL; 
    $multipart .= chunk_split(base64_encode($html));   

    $multipart .=  "$EOL--$boundary$EOL";   
    $multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";   
    $multipart .= "Content-Transfer-Encoding: base64$EOL";   
    $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";   
    $multipart .= $EOL; 
    $multipart .= chunk_split(base64_encode($file));   

    $multipart .= "$EOL--$boundary--$EOL";   
      
        if(!mail($mail_to, $thema, $multipart, $headers))   
         {return False;          
      }  
    else { 
    return True;  
    }  
  exit;  
  }
?>


Все работает, но есть момент  $headers   .= "From: [email protected]";  , если вместо адреса вставить переменную $from ,  то на почту приходит под видом неизвестного отправителя.  Подскажите кому не лень что нужно сделать, чтобы отправитель был вписан в переменную.. 
PM MAIL   Вверх
Arantir
Дата 11.2.2013, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Может для начала надо эту переменную определить? Или, по-вашему, она внутри функции сама возьмется? Это ж вам не JavaScripts...


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Cript777
  Дата 11.2.2013, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 30.10.2012

Репутация: нет
Всего: нет



Цитата(Arantir @ 11.2.2013,  01:07)
Может для начала надо эту переменную определить? Или, по-вашему, она внутри функции сама возьмется? Это ж вам не JavaScripts...

Так в самом начале кода $from = $_POST['from'];  
PM MAIL   Вверх
Arantir
Дата 11.2.2013, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Цитата(Cript777 @  11.2.2013,  00:13 Найти цитируемый пост)
Так в самом начале кода $from = $_POST['from'];   

Очень смешно... После этого я могу снова переписать свой вопрос без изменений...

Хотел ведь намекнуть, но вам еще надо много чего подучить про php =)

Цитата
<?php 
  $from = $_POST['from'];
  // ...
  function send_mail($mail_to, $thema, $html, $path)   
  { if ($path) {  
    //...
    $headers   .= "From: [email protected]";  
    //...
  }
?>
в php переменные не становятся глобальными автоматически.
Область видимости переменной, php.net

В именно вашем случае можно было использовать
Код

  $from = $_POST['from'];
  // ...
  function send_mail($mail_to, $thema, $html, $path)
  { 
    global $from;  
    // ...
    $headers   .= "From: $from";  
    //...
  }

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


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Cript777
  Дата 11.2.2013, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 30.10.2012

Репутация: нет
Всего: нет



Arantir,  выручил!  smile 

Это сообщение отредактировал(а) Cript777 - 11.2.2013, 17:52
PM MAIL   Вверх
Cript777
  Дата 11.2.2013, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 30.10.2012

Репутация: нет
Всего: нет



К сожалению срабатывает только если вложить файл, а если простое сообщение то так же не определяет.. (
PM MAIL   Вверх
Arantir
Дата 11.2.2013, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 16
Всего: 55



Даю наводку...
Цитата
  if(empty($picture)) mail($mail_to, $thm, $msg); 
  else send_mail($mail_to, $thm, $msg, $picture); 
  // ...
  function send_mail($mail_to, $thema, $html, $path)
  { 
  // ...
        if(!mail($mail_to, $thema, $multipart, $headers))



--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.