Войти

Показать полную графическую версию : [решено] отправка почты из скрипта


elfoflorien
03-11-2006, 00:25
есть задача - при заполнении формы генерить письмо и отправлять его на некоторый адрес.
функция imap_mail работает почему-то коряво, даже после imap_open
может, кто-нибудь подскажет как все-таки послать письмо из скрипта?

vadimiron
03-11-2006, 00:35
imap_mail работает почему-то коряво
А какие признаки корявости наблюдаются?

Для отправки есть функция mail


Корявости также зависят от ОС. У вас Винды? или?

elfoflorien
03-11-2006, 12:21
корявости: во-первых отправляются письма через раз (или реже), во-вторых часто получаю ошибку 503: authorization required, и, наконец, страница с отправкой письма грузится порой очень долго, и в итоге получаю "сервер не найден" или просто пустую страницу, причем почта не отправлена
функция mail действует точно также.
у меня винды хр

Prisoner
03-11-2006, 18:23
elfoflorien, что есть в логах сервера (http и php, если используется он)?

elfoflorien
03-11-2006, 20:44
Prisoner
в логах апача (error.log) вот такое
Cannot find module (IP-MIB): At line 0 in (none)
Cannot find module (IF-MIB): At line 0 in (none)
Cannot find module (TCP-MIB): At line 0 in (none)
Cannot find module (UDP-MIB): At line 0 in (none)
Cannot find module (SNMPv2-MIB): At line 0 in (none)
Cannot find module (SNMPv2-SMI): At line 0 in (none)
Cannot find module (UCD-SNMP-MIB): At line 0 in (none)
Cannot find module (UCD-DEMO-MIB): At line 0 in (none)
Cannot find module (SNMP-TARGET-MIB): At line 0 in (none)
Cannot find module (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none)
Cannot find module (SNMP-COMMUNITY-MIB): At line 0 in (none)
Cannot find module (UCD-DLMOD-MIB): At line 0 in (none)
Cannot find module (SNMP-FRAMEWORK-MIB): At line 0 in (none)
Cannot find module (SNMP-MPD-MIB): At line 0 in (none)
Cannot find module (SNMP-USER-BASED-SM-MIB): At line 0 in (none)
Cannot find module (SNMP-NOTIFICATION-MIB): At line 0 in (none)
Cannot find module (SNMPv2-TM): At line 0 in (none)

Sham
03-11-2006, 21:51
elfoflorien
а у тебя IMAP-модуль корректно установлен? Т.е., где файлы модуля лежат (в отдельной папке или нет...) и т.д...
коли у тебя винды, не исключай и разрешения на файлы\папку модуля, должен быть доступ...
можешь php_imap.dll в php.ini прописать...
я бы еще посмотрел в сторону службы HTTP SSL (в смысле запустить)
вообще, должен быть мануал к модулю, поищи тут ftp://ftp.cac.washington.edu/imap/ или http://www.imap.org/biblio.html

elfoflorien
03-11-2006, 22:01
Sham
а у тебя IMAP-модуль корректно установлен?
хотелось бы это узнать
можешь php_imap.dll в php.ini прописать...
в смысле extension=php_imap.dll?

imap все-таки работает, хоть и через раз.
мне больше интересно почему "сервер не найден"

vadimiron
03-11-2006, 23:10
Может там ещё Файервол что нибудь кроет???

Prisoner
04-11-2006, 01:09
Логи жиденькие, да. Возможно поможет пошаговая отладка (тем же PhpED), ровно как и поглядеть в сторону не только логов апача, но и php, у них логи разные... могут быть. Кстати, "сервер не найдет" может происходить также и по причине отвала по таймауту, что может свидетельствовать или о рекурсии в скрипте, или в общем случае так или иначе об огромной задержке при выполнении на сервере.

Sham
04-11-2006, 06:53
имеет смысл в системные логи глянуть.... eventvwr.msc (может там чего интересного пишут...). Интересно, после чего все началось то, хотелось бы предысторию узнать тскть :) а то непонятки... вообще к установке IMAP модуля особые требования (в мануале PHP, где описание ф-ий IMAP)...

elfoflorien
04-11-2006, 18:22
vadimiron
не пользуюсь фаерволом из-за того, что он очень сильно все тормозит
Prisoner
по причине отвала по таймауту
специально не проверял, но php таймаут стоял где-то на час, а страницу "сервер не найден" я получал намного раньше
Sham
на счет предыстории: просто понадобилась отправить письмо из скрипта, полез в пхп мануал, наткнулся на имап, с трудом заставил пхп найти все модули, и началось...
имеет смысл в системные логи глянуть.... eventvwr.msc
ничего интересного я там не увидел... хренотень какая-то
All
мне бы не причину глюков, а способы решения узнать :)

vadimiron
04-11-2006, 18:48
Попробуй использовать что нибудь другое, а не встроенное решение
Так обычно быстрей находяться проблемы
Я слышал, что данное решение неплохое: здесь (http://www.phpclasses.org/browse.html/package/14)

elfoflorien
04-11-2006, 20:08
vadimiron
спасибо, скачал, попробовал, но получил в итоге:

Resolving POP3 authentication host "pop.yandex.ru"...
Connecting to host address "213.180.204.37" port 110...
S +OK POP Ya! v1.0na
C USER ***
S +OK password, please.
C PASS ***
S +OK 0 message(s) 0 bytes.
Resolving SMTP server domain "smtp.yandex.ru"...
Connecting to host address "213.180.204.38" port 25...
Connected to SMTP server "smtp.yandex.ru".
S 220 Yandex ESMTP (NO UCE)(NO UBE) server ready at Sat, 4 Nov 2006 19:58:38 +0300
C EHLO localhost
S 250-smtp2.yandex.ru expected "EHLO ts12-a28.Spb.dial.rol.ru"
S 250-SIZE 10485760
S 250-8BITMIME
S 250-PIPELINING
S 250-CHUNKING
S 250-ENHANCEDSTATUSCODES
S 250-DSN
S 250-AUTH=LOGIN
S 250-AUTH LOGIN
S 250-STARTTLS
S 250 HELP
C MAIL FROM:<***@yandex.ru>
C RCPT TO:<***@mail.ru>
C DATA
S 530 5.3.0 Sorry [212.46.202.28]; Authentication required
Disconnected.
Cound not send the message to ***@mail.ru. Error: 530 5.3.0 Sorry [212.46.202.28]; Authentication required

vadimiron
04-11-2006, 21:08
elfoflorien
А если с другого сервака попробывать отсылать?? Например с mail.ru на yandex ???

vadimiron
04-11-2006, 21:25
А если тупо руками попробывать?

<?php
$smtp_server = "smtpserver.com";
$port = 25;
$mydomain = "mydomain.com";
$username = "username"; $password = "password";
$sender = "sender email";
$recipient = "email that the content will be sent to";
$subject = "the subject";
$content = "the message";

// SMTP connection

$handle = fsockopen($smtp_server,$port);
fputs($handle, "EHLO $mydomain\r\n");

// SMTP authorization
fputs($handle, "AUTH LOGIN\r\n");
fputs($handle, base64_encode($username)."\r\n");
fputs($handle, base64_encode($password)."\r\n");

// Send out the e-mail
fputs($handle, "MAIL FROM:<$sender>\r\n");
fputs($handle, "RCPT TO:<$recipient>\r\n");
fputs($handle, "DATA\r\n");
fputs($handle, "To: $recipient\n");
fputs($handle, "Subject: $subject\n\n");
fputs($handle, "$content\r\n");
fputs($handle, ".\r\n");

// Close connection to SMTP server
fputs($handle, "QUIT\r\n");
?>


Кстати, Error 530 =
Must issue a STARTTLS command first. Encryption required for requested authentication mechanism.

elfoflorien
04-11-2006, 21:34
vadimiron
да, с mail.ru на яндекс посылается нормально, спасибо (я имею в виду вашу рекомендацию
Попробуй использовать что нибудь другое, а не встроенное решение
Так обычно быстрей находяться проблемы
Я слышал, что данное решение неплохое: здесь
сейчас попробую ваш скрипт с яндексом

elfoflorien
04-11-2006, 21:51
vadimiron
огромное спасибо
все стало работать нормально, письмо даже с яндекса послалось :)




© OSzone.net 2001-2012