PDA

Просмотр полной версии : Отправка писем на PHP.



Bolat
30.06.2005, 12:49
<?php
if(mail("zhusupov@vtb.kz", "Some subject", "Some text"))
{echo'Work.';}
?>


На экран выодится Work, но письмо не приходит.

Наверное это из за настроек в php.ini.

Кто нить знает что там надо прописывать?

Absurd
30.06.2005, 14:01
Это письмо сожрала спаморезка какая - нибудь, поскольку у письма нетипичные заголовки.

Bolat
30.06.2005, 14:11
Саморезка - чо енто?

А какие тепичные заголовки?

AiK
30.06.2005, 16:16
Bolat, есть два варианта отправки писем: через smtp или sendmail. Соответственно либо указываешь адрес SMTP либо пишешь путь к sendmail. И всё. Заголовки - посмотри в своём почтовике затейнике.
Нужно заполнять From и Return-Path - иначе действительно могут зарезать как спам.

Absurd
30.06.2005, 18:54
Нужно заполнять From и Return-Path - иначе действительно могут зарезать как спам.
Как то писал под дешевый хостинг который где-то засветился в черном списке. Так там через mail послать не получилось никак. Локально отправлялось, но на rbcmail.ru и pochta.ru не доходило. Пришлось это делать через SMTP.

Bolat
01.07.2005, 16:19
AiK
Вообщем на юниксовом серваке запахала функция mail:


mail('$email', 'the subject', 'the message');


Токо вот письмо приходит с пустым полем "от кого" точнее там написано "nobody".
Из за этого наверное проходит только в тех почтовых серверах где нет анти спама наверное. Так как на mail.ru и др. пристижные ящики не приходит.

Как прописать адресс отправителя?

Oscar
01.07.2005, 17:25
Bolat,
Если ты пишешь одинарные кавычки '$email' то переменная $email не будет распакована, насколько я знаю.
Но в этом случае письмо должно было бы прийти от пользователя $email, почему приходит от nobody - не знаю, может где-то стоит защита от символа $.

Попробуй писать без кавычек:

mail($email, 'the subject', 'the message');

или с двойными:

mail("$email", 'the subject', 'the message');

и первый и второй вариант должен был бы сработать.

Oscar
01.07.2005, 17:31
В общем о проблеме с функцией mail:

Насколько мне известно, она работает только если:
1. Веб-сервер является одновременно и Мейл-сервером (если на сервере разрешено отправлять письма и настройки фаервола, за которым, как правило, стоит сервер пропускают пакеты, пришедшие с определённого порта )
2. На сервере есть необходимые утилиты (например sendmail, о чём говорил Aik, она есть под *nix серверами, как выглядит это дело под Windows - не знаю).

Альтернативное решение:
Если нету 2-го пункта - можно использовать внешние SMTP серверы для отправки почты (скорей всего нужна авторизация)
Если стоит запрет 1-го плана, - можно сделать веб-интерфейс на внешнем сервере, где разрешено отсылать емейлы, и передавать данные туда со своего сервера.

Надеюсь, что это хоть немного поможет.

berkut
01.07.2005, 20:01
почему приходит от nobody - не знаю, может где-то стоит защита от символа $.
:) класс! первым параметром в mail() - адрес получателя письма.
А адрес from или return-path нужно передавать четвёртым параметром.

Oscar
01.07.2005, 20:10
berkut,
:lol: Прикольно! )))

Bolat
02.07.2005, 10:18
berkut, Oscar

Пишу без кавычек, стало приходить везде. Спасибо.
Но все равно "Nobody".


<?php

$email = 'bolat2002@mail.ru';
$from = 'hosterkz@mail.kz';

mail($email, 'Subject', 'Message',$from);

?>

Приходит письмо с текстом:
hosterkz@mail.kz
Message

Bolat
02.07.2005, 10:23
А все разобрался:


<?php

$email = 'bolat2002@mail.ru';


mail($email, 'the subject', 'the message','From: mymail@mail.com');

?>