WeBinstruments

Инструментарий для веб-мастеров

 

на сайте на всех сайтах для веб разработчиков везде
 
 Скрипты
  PHP скрипты   
  Flash скрипты   
  Javascript скрипты   

 Софт
  Инструменты SEO   
  Разработка сайтов   
  Серверное ПО   

 Документация
  MySQL   
  PHP   
  HTML   
  Протоколы и сервисы Internet   

 Статьи
  PHP   
  MySQL   
  Сервер   
  еще...   

 Услуги и сервисы
  Домены   
  Хостинги   
  Блоки для сайта   

 Новости


 Контакты
  icq: 158325531
  email:
  все контакты: здесь




Atom все поступления
Раздел Файлы
Раздел Услуги и сервисы
Раздел Новости
Раздел Статьи
комментарии



 Партнеры


Главная / Статьи / PHP / Отправка писем через SMTP с авторизацией


email
smtp php

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

13.08.2007
сайт автора: http://webi.ru
публикация данной статьи разрешена только со ссылкой на сайт автора статьи

Как отправить почту с помощью php через SMTP сервер используя сокеты. Рассматривается отправка почты с прикрепленными файлами и просто текста.

Читать всю статью


Комментарии

RSS комментарии


23.11.2010 админ
Nat, а вы так и посылаете во втором RCPT два двоеточия "RCPT TO:: " ?



23.11.2010 Nat
Нет, адрес меняла когда вставила...



23.11.2010 Nat
Сначала пробовала в цикле отправлять - адреса брала из текстового файла, не получилось, стала вот так с двумя адресами пробовать...



23.11.2010 админ
Nat, приведите конкретно свой пример, который у вас в скрипте используется, измените только email адреса, все остальное оставьте без изменений. Так как приведенный вами пример содержит синтаксические ошибки, может быть у вас тоже имеются ошибки...

И через какой сервер отправляете? Может там стоит запрет на отправку нескольких писем, попробуйте отправить через другой сервер.



23.11.2010 Nat
Сегодня вообще получилось :)
Из файла как-то не так читаю что ли, первый раз отправилось, потом уже нет...и ругается на RCPT TO опять же
вот кусок
//это файл с адресами
$addr = file("addr.txt");
for ($i=0; $i < count($addr); $i++)
{
echo $addr[$i]."<br>";
fputs($smtp_conn,"RCPT TO:".$addr[$i]."\r\n");
$code = substr(get_data($smtp_conn),0,3);
}

Думаю это мой косяк, спасибо вообще большое!



24.11.2010 админ
Nat, ну да, похоже на какой-то глюк в самом скрипте.
Может среди адресов в файле попадаются переносы строк? Или какие-то символы



09.12.2010 Аноним
>$addr = file("addr.txt")
Заменяйте переносы строк в полученном массиве.



13.12.2010 VorVV
кто подскажет - строка типа name="=?windows-1251?Q?=EE=F5 ... указывает что кодировка имени атач файла винды но каким образом узнать как это имя кодируется в символы =EE=F5 и тд?



13.12.2010 виктор
VorVV, цитирую статью

... при написании имен русскими символами, придется их конвертировать
=?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('Максим')))."?= <login@mail.ru>

Выбрось лишнее и получится
=?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('Текст')))."?=



21.12.2010 Виктор
Почему то не работает такая конструкция
нет фложений приходит просто текст


if(isset($_FILES['file']['name'])&&$_FILES['file']['size']>0 &&$_FILES['file']['error']==0)
{
$header.="Content-Type: multipart/mixed; boundary=\"----------A4D921C2D10D7DB\"\r\n";

$file= $_FILES['file']['name'];
$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=\"".$file."\"
Content-transfer-encoding: base64
Content-Disposition: attachment; filename=\"".$file."\"

".$code_file1."
------------A4D921C2D10D7DB
Content-Type: application/octet-stream; name=\"2.txt\"
Content-transfer-encoding: base64
Content-Disposition: attachment; filename=\"2.txt\"

".$code_file2."
------------A4D921C2D10D7DB--
";
}
else
{
$header.="Content-Type: text/plain; charset=windows-1251\r\n";
$header.="Content-Transfer-Encoding: 8bit\r\n";

$text = $_POST['message'];
}




21.12.2010 Виктор
Проблему решил, просто звбыл закачать на сервер
$file= $_FILES['file']['name'];
if (copy($_FILES['file']['tmp_name'], $file));



21.12.2010 Виктор
Почему не отправляется копия и скрытая копия письма?
$header.="Cc: $copy\r\n";
$header.="Bcc: $copy\r\n";
причем при получении почты в заголовках показано, что копия отправленна туду-то, туда-то.

Необходимо ли добавлять в RCPT
у меня так
for ($i=0; $i < count($who); $i++)
{
fputs($smtp_conn,"RCPT TO:".$who[$i]."\r\n");
$code = substr(get_data($smtp_conn),0,3);
}
if($code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"; fclose($smtp_conn); exit;}




21.12.2010 админ
Виктор, на сколько я помню, добавлять скрытую копию в заголовок не нужно, поэтому она и называется скрытой, что ее нет в заголовках.
И конечно необходимо эти адреса добавлять в RCPT.

А вообще, если вы хотите получше с этим разобраться, скачайте мой готовый класс для отправки писем, там все то же самое, готовый рабочий пример с комментариями.
http://webi.ru/webi_files/php_libmail.html
Может и не придется самому изобретать, берете и пользуетесь.



09.01.2011 Роман
Добрый день!
При выполнении fsockopen("smtp.mail.ru", 25,$errno, $errstr, 10);
Выскакивает предупреждение: Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.mail.ru:25 (Permission denied)
В чём может быть проблема?



10.01.2011 админ
Роман, скорее всего на вашем сервере запрещен внешний доступ к другим сайтам, либо запрещен выход по 25 порту.
Где тестируете?
На своем сервере или на хостинге?



10.01.2011 Роман
Тестирую на хостинге.
В службе поддержке хостинга ответили следующее "Обратите внимание, что при отправке через SMTP, SMTP аутентификация должна быть разрешена, поскольку это требуется нашем сервере."
Как разрешить аутентификацию?



10.01.2011 админ
Роман, данный скрипт и так работает с утентификацией(авторизациейц).
Вам нужно спросить в тех поддержке, разрешен ли на хостинге удаленный коннект к сайтам, а конкретно коннект по 25 порту к чужому SMTP используя сокеты.



10.01.2011 Роман
Если я в fsockopen("mail.exclusivehosting.net", 25,$errno, $errstr, 10); прописываю свой smtp, то возникает таже самая ошибка.

А соединение через telnet mail.exclusivehosting.net 25 в cmd.exe превосходно работает!

?





10.01.2011 Роман
Проблему решил. Спасибо за помощь



10.01.2011 сергей
роман, так а в чем была проблема то?


<<< 2 3 4 5 6 7 8 9 10

Добавить свой комментарий


Ваше имя(* обязательно)


Текст сообщения(* обязательно)









 
 
  запомнить

 
Copyright © 2003-2024 WeBi Constructor
Rambler's Top100