Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
16 / 16 / 2
Регистрация: 09.04.2011
Сообщений: 165
1

Отправка писем на почту через сайт

31.08.2011, 12:33. Просмотров 2053. Ответов 1
Метки нет (Все метки)


Здравствуйте, проблема выскакивает "ошибка при отправке письма", сервер WAMP, установил sendmail в папку сервера...
Мжет мастера помогут?, чета не уловил ошибку

PHP
1
 $success = $_SESSION['success'] ? '<p>Письмо успешно отправлено</p>':'<p>Ошибка при отправке письма</p>';
вот форма:
HTML5
1
2
3
4
5
6
7
8
9
 <form action='send_form.php' method='POST'>
<table class='tableview'>
<tr><td>Имя:</td><td><input type='text' name='name' maxlength='64' value='' /></td></tr>
<tr><td>E-mail:</td><td><input type='text' name='email' maxlength='64' value='' /></td></tr>
<tr><td>Тема:</td><td><input type='text' name='subject' maxlength='64' value='' /></td></tr>
<tr><td>Сообщение:</td><td><textarea name='message' rows='5' cols='30'></textarea></td></tr>
<tr><td>&nbsp;</td><td><input type='submit' name='sendMail' value='Отправить' /></td></tr>
</table>
</form>
этот код обработчика
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
<?php
session_start();
$admin = 'Aleksaaa555@mail.ru';
 
if ( isset( $_POST['sendMail'] ) ) {
  $name  = substr( $_POST['name'], 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>Не заполнено поле "Имя"</li>';
  if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';
  if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';
  if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
  if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
    $error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
  if ( !empty( $error ) ) {
    $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:</p><ul>'.$error.'</ul>';
    $_SESSION['sendMailForm']['name']    = $name;
    $_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 .= "E-MAIL:\r\n".$email."\r\n\r\n";
  $body .= "ТЕМА:\r\n".$subject."\r\n\r\n";
  $body .= "СООБЩЕНИЕ:\r\n".$message;
 
 
 function quoted_printable_encode1 ( $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 send_mail($admin, $body, $email, $filepath, $filename)
{    
  $subject = '=?utf-8?B?'.base64_encode('Заполнена форма на сайте').'?=';
  $boundary = "--".md5(uniqid(time())); // генерируем разделитель
  $headers = "From: ".strtoupper($_SERVER['SERVER_NAME'])."<Aleksaaa555@mail.ru>\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=\"utf-8\"\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"; 
        iconv('WINDOWS-1251', 'UTF-8', $name);
 iconv('WINDOWS-1251', 'UTF-8', $email);
 iconv('WINDOWS-1251', 'UTF-8', $subject);
 iconv('WINDOWS-1251', 'UTF-8', $message);
      }
    }
  }
  $multipart .= $file."--".$boundary."--\r\n";
 
  if( mail($admin, $subject, $multipart, $headers) )
    return true;
  else
    return false;
}
 
function quoted_printable_encode_character ( $matches ) {
   $character = $matches[0];
   return sprintf ( '=%02x', ord ( $character ) );
}
 
 
 
  if ( send_mail($admin, $body, $email, $filepath, $filename) )
    $_SESSION['success'] = true;
  else
    $_SESSION['success'] = false;
  header( 'Location: '.$_SERVER['PHP_SELF'] );
  die();
}
?>
 
 
<html>
<head>
<title>Отправить письмо</title>
</head>
<body>
 
<?php
if ( isset( $_SESSION['sendMailForm'] ) ) {
  echo $_SESSION['sendMailForm']['error'];
  $name    = htmlspecialchars ( $_SESSION['sendMailForm']['name'] );
  $email   = htmlspecialchars ( $_SESSION['sendMailForm']['email'] );
  $subject = htmlspecialchars ( $_SESSION['sendMailForm']['subject'] );
  $message = htmlspecialchars ( $_SESSION['sendMailForm']['message'] );
  unset( $_SESSION['sendMailForm'] );
} else {
  $name  = '';
  $email   = '';
  $subject = '';
  $message = '';
}
 
if ( isset( $_SESSION['success'] ) ) {
    $success = $_SESSION['success'] ? '<p>Письмо успешно отправлено</p>':'<p>Ошибка при отправке письма</p>';
    iconv('WINDOWS-1251', 'UTF-8', $success);
    echo $success;
  unset( $_SESSION['success'] );
}
?>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2011, 12:33
Ответы с готовыми решениями:

Отправка файла на почту через сайт по запросу пользователя на подобие рассылки
Подскажите пожалуйста как можно сделать рассылку файла на почту пользователя на сайте через простую...

Не рабтает отправка писем на почту
Здравтсвуйте. Столкнулся с такой проблемой. Необходимо по клику высылать данные из формы на...

Отправка писем с вложениями на почту без "костылей"
Здравствуйте. Несколько лет назад один человек мне помог с формой отправки файлов на почту....

Доставка писем через mail с хостинга на почту блокируется из-за неверной кодировки
Сегодня возникла такая проблема, что письма не доставляются с сайта на email, хотя вчера и...

1
143 / 109 / 13
Регистрация: 13.02.2010
Сообщений: 522
12.09.2011, 10:18 2
Я так понял на у вас нету почтового сервера, просмотрите инфу. о сервере и обратитесь с тех поддержку вашего сервера.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2011, 10:18

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

Отправка писем через smtp
&lt;?php ini_set( 'html_errors', false ); $_POST = 'mymail@yandex.ru'; - почта, куда придет письмо...

Отправка писем через форму
Есть php код для отправки писем более менее отправляет, задача следующая, как мне нужно его...

Отправка писем через интервал
Всем доброго времени суток! Скажите, можно ли как-то реализовать задержку между отправкой писем?...

Отправка писем на почту
idsmtp2.Host:='smpt.yandex.ru'; idsmtp2.Host:= IntToStr(25); idsmtp2.Username:='*******';...


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

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

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