Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
1 / 1 / 1
Регистрация: 03.12.2010
Сообщений: 49
1

Отправка писем через SMTP с авторизацией

27.03.2013, 18:58. Просмотров 5948. Ответов 1
Метки нет (Все метки)


Доброго времени суток. Я начинающий и не с первого раза все выходит=) вот добрался до одной главы в книге "Отправка писем через php" решил поискать примеры, и наткнулся на статью "Отправка писем через SMTP с авторизацией" http://www.php.su/articles/?cat=email&page=007.
Первый пример где нужно отправить простой текст у меня сработал а вот там где я отправляю файлы нет.
Может кто сталкивался с этим примером?
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
<?php
function get_data($smtp_conn)
 {
  $data="";
   while($str = fgets($smtp_conn,515)) 
   {
    $data .= $str;
     if(substr($str,3,1) == " ") { break; }
   }
   return $data;
 }
 
$header="Date: ".date("D, j M Y G:i:s")." +0700\r\n"; 
$header.="From: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('Максим')))."?= <login@mail.ru>\r\n"; 
$header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n"; 
$header.="Reply-To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('Максим')))."?= <login@mail.ru>\r\n";
$header.="X-Priority: 3 (Normal)\r\n";
$header.="Message-ID: <172562218.".date("YmjHis")."@mail.ru>\r\n";
$header.="To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('Сергей')))."?= <qwe@asd.ru>\r\n";
$header.="Subject: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('проверка')))."?=\r\n";
$header.="MIME-Version: 1.0\r\n";
$header.="Content-Type: multipart/mixed; boundary=\"----------A4D921C2D10D7DB\"\r\n";
 
$file="path/1.jpg";
$fp = fopen($file, "rb");
$code_file1 = chunk_split(base64_encode(fread($fp, filesize($file))));
fclose($fp);
$code_file2=base64_encode("привет, это типа второй файл");
 
$text="------------A4D921C2D10D7DB
 Content-Type: text/plain; charset=windows-1251
 Content-Transfer-Encoding: 8bit
 
 привет, это текст письма
 
 ------------A4D921C2D10D7DB
 Content-Type: application/octet-stream; name=\"1.jpg\"
 Content-transfer-encoding: base64
 Content-Disposition: attachment; filename=\"1.jpg\"
 
 ".$code_file1."
 ------------A4D921C2D10D7DB
 Content-Type: application/octet-stream; name=\"2.txt\"
 Content-transfer-encoding: base64
 Content-Disposition: attachment; filename=\"2.txt\"
 
 ".$code_file2."
 ------------A4D921C2D10D7DB--
 ";
 
$smtp_conn = fsockopen("smtp.mail.ru", 25,$errno, $errstr, 10);
 if(!$smtp_conn) {print "соединение с серверов не прошло"; fclose($smtp_conn); exit;}
$data = get_data($smtp_conn);
fputs($smtp_conn,"EHLO mail.ru\r\n");
$code = substr(get_data($smtp_conn),0,3);
 if($code != 250) {print "ошибка приветсвия EHLO"; fclose($smtp_conn); exit;}
fputs($smtp_conn,"AUTH LOGIN\r\n");
$code = substr(get_data($smtp_conn),0,3);
 if($code != 334) {print "сервер не разрешил начать авторизацию"; fclose($smtp_conn); exit;}
 
fputs($smtp_conn,base64_encode("login")."\r\n");
$code = substr(get_data($smtp_conn),0,3);
 if($code != 334) {print "ошибка доступа к такому юзеру"; fclose($smtp_conn); exit;}
 
 
fputs($smtp_conn,base64_encode("password")."\r\n");
$code = substr(get_data($smtp_conn),0,3);
 if($code != 235) {print "не правильный пароль"; fclose($smtp_conn); exit;}
 
fputs($smtp_conn,"MAIL FROM:login@mail.ru\r\n");
$code = substr(get_data($smtp_conn),0,3);
 if($code != 250) {print "сервер отказал в команде MAIL FROM"; fclose($smtp_conn); exit;}
 
fputs($smtp_conn,"RCPT TO:qwe@asd.ru\r\n");
$code = substr(get_data($smtp_conn),0,3);
 if($code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"; fclose($smtp_conn); exit;}
 
fputs($smtp_conn,"DATA\r\n");
$code = substr(get_data($smtp_conn),0,3);
 if($code != 354) {print "сервер не принял DATA"; fclose($smtp_conn); exit;}
 
fputs($smtp_conn,$header."\r\n".$text."\r\n.\r\n");
$code = <;/font>substr(get_data($smtp_conn),0,3);
 if($code != 250) {print "ошибка отправки письма"; fclose($smtp_conn); exit;}
 
fputs($smtp_conn,"QUIT\r\n");
fclose($smtp_conn);
?>
На почту приходит всякая кодированная ерунда, не пойму в чем дело=(.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2013, 18:58
Ответы с готовыми решениями:

SMTP отправка писем с авторизацией
Доброго дня , друзья подскажите вот есть код , нужно сделать отправку писем через SMTP с...

Не работает отправка писем на SMTP google через сокеты
Выдает ошибку 110 Connection timed out Этот код: if (smtpmail('xxx', 'xxx', 'Проверка', 'Проверка...

Отправка писем с localhost путем авторизации на SMTP
Доброго времени суток. Задача: нужен скрипт для рассылки писем (по сути автоматизация действий с...

Отправка данных формы с файлом через SMTP
Всем хорошего настроения! Помогите пожалуйста найти скрипт который будет отправлять данные формы...

1
0 / 0 / 1
Регистрация: 07.03.2013
Сообщений: 10
31.05.2013, 16:28 2
Попробуй кодировку поменять, по идеи должно сработать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2013, 16:28

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

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

Отправка большого количества писем через SMTP
Здравствуйте. Есть такая задачка предположим у меня база майлов юзеров которые подписались на...

Отправка писем через SMTP используя функцию SMTPMAIL
Добрый день! В интернете есть некая функция которая великолепно работает у многих и раньше её я...

Отправка вложений через SMTP
&lt;?php $config = $_POST; //Смените на имя своего почтового ящика. $config = 465; // Порт работы....

Отправка формы через smtp / PHPMailer
Доброго времени, уважаемые знатоки! Подскажите пожалуйста, как сделать отправку форм через smtp....

Отправка на почту через SMTP mail
Не могу найти как решить проблему в коде. Простая форма автоматической отправки сообщения людям на...


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

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

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