Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 21
1

Отправка письма с сайта

05.03.2013, 13:39. Просмотров 2170. Ответов 5
Метки нет (Все метки)


Добрый день!
Подскажите где допустил ошибку,дело в том что при отправке письма с сайта,на почту приходит все кроме имени автора,вот сам код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
<?php
 
session_start();
$admin = 'Kalygin.artur@yandex.ru , Arturlove13@mail.ru';
 
if ( isset( $_POST['sendMail'] ) ) {
  $name  = substr( $_POST['name'], 0, 64 );
  $fone  = substr( $_POST['fone'], 0, 64 );
  $email   = substr( $_POST['email'], 0, 64 );
  $subject = substr( $_POST['subject'], 0, 64 );
  $message = substr( $_POST['message'], 0, 250 );
 
  $error = '';
  if ( empty( $name ) ) $error = $error.'<li><FONT color="white">Не заполнено поле "Имя"</FONT></li>';
  if ( empty( $fone ) ) $error = $error.'<li><FONT color="white">Не заполнено поле "Телефон"</FONT></li>';
  if ( empty( $email ) ) $error = $error.'<li><FONT color="white">Не заполнено поле "E-mail"</FONT></li>';
  if ( empty( $subject ) ) $error = $error.'<li><FONT color="white">Не заполнено поле "Тема"</FONT></li>';
  if ( empty( $message ) ) $error = $error.'<li><FONT color="white">Не заполнено поле "Сообщение"</FONT></li>';
  if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
    $error = $error.'<li><FONT color="white">поле "E-mail" должно соответствовать формату somebody@somewhere.ru</FONT></li>';
  if ( !empty( $error ) ) {
    $_SESSION['sendMailForm']['error']   = '<p><FONT color="white">При заполнении формы были допущены ошибки:</FONT></p><ul>'.$error.'</ul>';
    $_SESSION['sendMailForm']['name']    = $name;
    $_SESSION['sendMailForm']['fone']    = $fone;
    $_SESSION['sendMailForm']['email']   = $email;
    $_SESSION['sendMailForm']['subject'] = $subject;
    $_SESSION['sendMailForm']['message'] = $message;
    header( 'Location: '.$_SERVER['PHP_SELF'] );
    die();
  }
  
  $filepath = array();
  $filename = array();
  for( $i = 0; $i < count($_FILES['file']); $i++) {
    if ( !empty( $_FILES['file']['tmp_name'][$i] ) and $_FILES['file']['error'][$i] == 0 ) {
      $filepath[] = $_FILES['file']['tmp_name'][$i];
      $filename[] = $_FILES['file']['name'][$i];
    }
  }
 
  $body = "АВТОР:\r\n".$name."\r\n\r\n";
  $body = "Телефон:\r\n".$fone."\r\n\r\n";
  $body .= "E-MAIL:\r\n".$email."\r\n\r\n";
  $body .= "ТЕМА:\r\n".$subject."\r\n\r\n";
  $body .= "СООБЩЕНИЕ:\r\n".$message;
 
  if ( send_mail($admin, $body, $email, $filepath, $filename) )
    $_SESSION['success'] = true;
  else
    $_SESSION['success'] = false;
  header( 'Location: '.$_SERVER['PHP_SELF'] );
  die();
}
 
// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($admin, $body, $email, $filepath, $filename)
{
  $subject = '=?windows-1251?B?'.base64_encode('Заполнена форма на сайте').'?=';
  $boundary = "--".md5(uniqid(time())); // генерируем разделитель
  $headers = "From: ".strtoupper($_SERVER['SERVER_NAME'])." <".$email.">\r\n";   
  $headers .= "Return-path: <".$email.">\r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
  $multipart = "--".$boundary."\r\n";
  $multipart .= "Content-type: text/plain; charset=\"windows-1251\"\r\n";
  $multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
 
  $body = quoted_printable_encode( $body )."\r\n\r\n";
 
  $multipart .= $body;
  
  $file = '';
  $count = count( $filepath );
  if ( $count > 0 ) {
    for ( $i = 0; $i < $count; $i++ ) {
      $fp = fopen($filepath[$i], "r");
      if ( $fp ) {
        $content = fread($fp, filesize($filepath[$i]));
        fclose($fp);
        $file .= "--".$boundary."\r\n";
        $file .= "Content-Type: application/octet-stream\r\n";
        $file .= "Content-Transfer-Encoding: base64\r\n";
        $file .= "Content-Disposition: attachment; filename=\"".$filename[$i]."\"\r\n\r\n";
        $file .= chunk_split(base64_encode($content))."\r\n";      
      }
    }
  }
  $multipart .= $file."--".$boundary."--\r\n";
 
  if( mail($admin, $subject, $multipart, $headers) )
    return true;
  else
    return false;
}
 
function quoted_printable_encode ( $string ) {
   // rule #2, #3 (leaves space and tab characters in tact)
   $string = preg_replace_callback (
   '/[^\x21-\x3C\x3E-\x7E\x09\x20]/',
   'quoted_printable_encode_character',
   $string
   );
   $newline = "=\r\n"; // '=' + CRLF (rule #4)
   // make sure the splitting of lines does not interfere with escaped characters
   // (chunk_split fails here)
   $string = preg_replace ( '/(.{73}[^=]{0,3})/', '$1'.$newline, $string);
   return $string;
}
 
function quoted_printable_encode_character ( $matches ) {
   $character = $matches[0];
   return sprintf ( '=%02x', ord ( $character ) );
}
?>
 
<html>
<head>
<title>Отправить письмо</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style type="text/css">
body {
    background-image: url(pattern.gif);
}
.s {
    background-image: url(333.jpg);
    color: #000000;
}
.a {
    color: #0FF;
}
</style>
</head>
<body>
 
<p>
  <?php
if ( isset( $_SESSION['sendMailForm'] ) ) {
  echo $_SESSION['sendMailForm']['error'];
  $name    = htmlspecialchars ( $_SESSION['sendMailForm']['name'] );
  $fone    = htmlspecialchars ( $_SESSION['sendMailForm']['fone'] );
  $email   = htmlspecialchars ( $_SESSION['sendMailForm']['email'] );
  $subject = htmlspecialchars ( $_SESSION['sendMailForm']['subject'] );
  $message = htmlspecialchars ( $_SESSION['sendMailForm']['message'] );
  unset( $_SESSION['sendMailForm'] );
} else {
  $name  = '';
  $fone  = '';
  $email   = '';
  $subject = '';
  $message = '';
}
 
if ( isset( $_SESSION['success'] ) ) {
  if ( $_SESSION['success'] )
    echo '<p><h3><FONT color="black">Письмо успешно отправлено</FONT></h3></p>';
  else
    echo '<p><FONT color="black">Ошибка при отправке письма</FONT></p>';
  unset( $_SESSION['success'] );
}
?>
</p>
<p>&nbsp;</p>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST" enctype="multipart/form-data">
<table width="1011" height="349">
<tr>
  <td width="202" height="50"><img src="54.gif" width="150" height="22" border="0"></td>
  <td width="797"><input name="name" type="text" class="s" value="<?php echo $name ?>" maxlength="64" /></td></tr>
  <td width="202" height="50"><img src="54.gif" width="150" height="22" border="0"></td>
  <td width="797"><input name="fone" type="text" class="s" value="<?php echo $fone ?>" maxlength="11" /></td></tr>
<tr>
  <td height="54"><img src="55.gif" width="150" height="22" border="0"></td><td><input name="email" type="text" class="s" value="<?php echo $email ?>" maxlength="64" /></td></tr>
<tr>
  <td height="40"><img src="56.gif" width="150" height="22" border="0"></td><td><input name="subject" type="text" class="s" value="<?php echo $subject ?>" maxlength="64" /></td></tr>
<tr>
  <td><img src="57.gif" width="150" height="22" border="0"></td><td><textarea name="message" cols="60" rows="15" class="s"><?php echo $message ?></textarea></td></tr>
  <tr>
  <tr><td>&nbsp;</td><td><input type="submit" name="sendMail" value="Отправить" /></td></tr>
</table>
<p>&nbsp;</p>
</form>
 
</body>
</html>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2013, 13:39
Ответы с готовыми решениями:

Отправка письма с сайта
Всем здравствуйте. Пока только изучаю PHP (по урокам всеми нелюбимого Евгения Попова), и мой...

Отправка письма с сайта
Что то я намудрил что не так понять не могу выдает Notice: Undefined variable: mail in...

Отправка письма на почту с сайта
Здравствуйте, хочу отправить письмо на почту с сайта. Нашел в сети пример html страницы и php...

Отправка письма с сайта на почту
Использовала эту функцию ранее, она работала, все отправлялось. Теперь данные с формы отправляются...

5
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
05.03.2013, 13:53 2
42 строка, нужна точка для склейки.
1
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 21
05.03.2013, 13:58  [ТС] 3
Спасибо,еще такой вопрос,можно как то отправлять письмо на 2 ящика,так что бы один был основной,а второй скрытая копия?
0
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
05.03.2013, 14:16 4
ну так в хедерах укажи CC: или BCC: или тупо всё в функцию вынеси и вызывай с указанием ящика.
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 21
05.03.2013, 14:33  [ТС] 5
А как указать в данном коде CC: или BCC ?
0
188 / 184 / 54
Регистрация: 23.10.2010
Сообщений: 1,335
05.03.2013, 14:36 6
PHP
1
2
$headers .= "CC: ".strtoupper($_SERVER['SERVER_NAME'])." <".$email.">\r\n";   
$headers .= "BCC: ".strtoupper($_SERVER['SERVER_NAME'])." <".$email.">\r\n";
Как то так
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2013, 14:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Отправка письма php. Письма со скрипта на локальном сервере (Denwer) не приходят на почту.
Доброго Времени Суток!!! Я запускаю Денвером php скрипт со следующим кодом &lt;?php $name=$_GET;...

отправка письма
Здравствуйте, при отправки письма с формы, столкнулся с такой ситуацией. Первая проблема в том...

Отправка письма
Всем привет! есть файл с кодом: &lt;?php function selfurl() { $s =...

Отправка письма
добрый вечер, нужна помощь есть сайт на хостинге timeweb, через панель управления создал ящик...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.