Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/22: Рейтинг темы: голосов - 22, средняя оценка - 4.82
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
1

Отправка почты без sendmail

31.08.2009, 15:56. Показов 4399. Ответов 8
Метки нет (Все метки)

Итак. Цель: отправить письмо. Фичи: желательно с аттачментом, и ХТМЛя побольше!!!!
Проблемы: Ну нету у меня сендмайла.
Решение:

Объявляем класс:
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
<?
class html_mime_mail {
  var $headers; 
  var $multipart; 
  var $mime; 
  var $html; 
  var $parts = array(); 
 
function html_mime_mail($headers='') { 
    $this->headers=$headers; 
} 
 
function add_html($html='') { 
    $this->html.=$html; 
} 
 
function build_html($orig_boundary,$kod) { 
    $this->multipart.='--$orig_boundary
'; 
    if ($kod=='w' || $kod=='win' || $kod=='windows-1251') $kod='windows-1251'
    else $kod='koi8-r'
    $this->multipart.='Content-Type: text/html; charset=$kod
'; 
    $this->multipart.='Content-Transfer-Encoding: Quot-Printed
 
'; 
    $this->multipart.='$this->html
 
'; 
} 
 
function add_attachment($path='', $name = '', $c_type='application/octet-stream') { 
    if (!file_exists($path.$name)) {
      print 'File $path.$name dosn't exist.';
      return;
    }
    $fp=fopen($path.$name,'r');
    if (!$fp) {
      print 'File $path.$name coudn't be read.';
      return;
    } 
    $file=fread($fp, filesize($path.$name));
    fclose($fp);
    $this->parts[]=array('body'=>$file, 'name'=>$name,'c_type'=>$c_type); 
} 
 
function build_part($i) { 
    $message_part=''; 
    $message_part.='Content-Type: '.$this->parts[$i]['c_type']; 
    if ($this->parts[$i]['name']!='') 
       $message_part.='; name =  ''.$this->parts[$i]['name'].' '
'; 
    else 
       $message_part.='
'; 
    $message_part.='Content-Transfer-Encoding: base64
'; 
    $message_part.='Content-Disposition: attachment; filename =  ''.
       $this->parts[$i]['name'].' '
 
'; 
    $message_part.=chunk_split(base64_encode($this->parts[$i]['body'])).'
';
    return $message_part; 
} 
 
function build_message($kod) { 
    $boundary='=_'.md5(uniqid(time())); 
    $this->headers.='MIME-Version: 1.0
'; 
    $this->headers.='Content-Type: multipart/mixed; boundary= '$boundary '
'; 
    $this->multipart=''; 
    $this->multipart.='This is a MIME encoded message.
 
'; 
    $this->build_html($boundary,$kod); 
    for ($i=(count($this->parts)-1); $i>=0; $i--)
      $this->multipart.='--$boundary
'.$this->build_part($i); 
    $this->mime = '$this->multipart--$boundary--
'; 
} 
 
function send($server, $to, $from, $subject='', $headers='') { 
 
    $headers='To: $to
From: $from
Subject: $subject
X-Mailer: The Mouse;)
$headers';
    $fp = fsockopen($server, 25, &$errno, &$errstr, 30);
    if (!$fp)
       die('Server $server. Connection failed: $errno, $errstr');
    fputs($fp,'HELO $server
');
    fputs($fp,'MAIL FROM: $from
');
    fputs($fp,'RCPT TO: $to
');
    fputs($fp,'DATA
');
    fputs($fp,$this->headers);
    if (strlen($headers))
      fputs($fp,'$headers
');
    fputs($fp,$this->mime);
    fputs($fp,'
.
QUIT
');
    while(!feof($fp))
      $resp.=fgets($fp,1024);
    fclose($fp);
  } 
}
?>
И отправляе
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2009, 15:56
Ответы с готовыми решениями:

Отправка почты без перезагрузки страницы
Здравствуйте! Пытаюсь реализовать отправку почты без перезагрузки страницы. Вот код html со...

Отправка почты БЕЗ проверки загружаемых файлов
Здравствуйте. Я тут делаю форму отправки данных ч/з mail(), все дела Тут задумался: А зачем мне...

Отправка почты с сайта без перезагрузки страницы
Всем привет. Проблема есть: форма в html &lt;form action=&quot;mail.php&quot;&gt;блабла&lt;/form&gt; и код пхп...

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

8
0 / 0 / 0
Регистрация: 05.10.2010
Сообщений: 46
26.10.2010, 16:07 2
$resp.=fgets($fp,1024); //Notice: Undefined variable: resp
0
4 / 4 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
26.10.2010, 16:47 3
запиши в самом начале этой функции $resp=''; тогда конструкция присвоения к самому себе сработает!
0
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 116
10.12.2010, 08:12 4
А как это всё сделать со своим собственным сендмайлом ?
0
4 / 4 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
10.12.2010, 09:50 5
наверно здесь
$mail->send('адрес_смтп_сервера', 'to@smth.com', 'from@smth.com','subj ') ;

нужно указать путь к семэйлу!
Сам не пробовал!
0
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 46
22.12.2010, 15:11 6
Про отправку письма с аттачментом я понял, а как произвести SMTP-аутентификацию?
У меня в Bat'е в настройках SMTP-сервера указаны логин и пароль для аутентификации(RFC-2554) и галочка стоит на MD5. Как это все в скрипте отразить? Без этих параметров письма не отправляются.
0
81 / 57 / 68
Регистрация: 15.03.2007
Сообщений: 6,908
23.12.2010, 10:56 7
Придется переделывать метод send() в соотв. с RFC 2554
http://ietf.org/rfc/rfc2554.txt?number=2554

Или использовать готовый класс.
Например,
http://www.phpclasses.org/browse/package/9.html
http://phpclasses.segmenta.ru/browse/package/14.html
0
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 46
26.12.2010, 10:14 8
Понятно, что надо переделывать send. Я читал RFC, но на практике реализовать не получается. А по поводу готовых классов, на тех сайтах просят зарегистрироваться, а для меня это проблематично. Может где-то есть, где не надо регистрироваться
0
81 / 57 / 68
Регистрация: 15.03.2007
Сообщений: 6,908
26.12.2010, 11:14 9
Поищите в инете. Я нашел эти примеры с помощью google.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2010, 11:14

Отправка сообщений php sendmail ssl
Здравствуйте! Есть VDS на server 2008r2 IIS 7 + PHP Сайт планирует использовать корпоративную...

Не поддерживается функция mail(), но даётся путь к sendmail /usr/sbin/sendmail
Граждане, помгите советом или куском кода! Не поддерживается функция mail(), но даётся путь к...

Отправка почты
Доброго времени суток. Имеется html код &lt;!doctype html&gt; &lt;head&gt;&lt;script&gt; function send_form()...

Отправка почты
Отправляю почту через phpMailer , руководствовался следующим примером ссылка мне выдает следующее...

Отправка почты
Добрый вечер. Вот выложил сайт на бесплатном хостинге - byethost. Но столкнулся с проблемой...

отправка почты
Добрый времени суток! Подскажите пожалуйста , хочу отправить почтовое письмо при регистрации ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru