Перейти к содержимому


fozzy

От чего не приходит письмо на почту?

#1 hnerd

hnerd
  • Пользователь
  • 284 сообщений
  • Репутация: 18
0

Отправлено 16 Апрель 2015 - 18:10

Дело в том, что на Денвере письмо приходит и сохраняется в папку tmp !sendmail, а вот на почту нет.

Свой email я проверяла 10 раз уже.

 

Вот код:

<?php
    mb_internal_encoding("UTF-8");
    header("Content-Type: text/html; charset=utf-8");
    
        $phone = htmlspecialchars(trim($_POST['phone']));
        $name = htmlspecialchars(trim($_POST['name']));

            $subject = "Новая заявка!";
            $message = "<h1>Новая заявка!</h1><br/><b>телефон: </b> ".$phone."<br/>";
            if($name != '')
                $message .= "<b>Имя:</b>".$name."<br/>";
            
            $headers = "From: Lafesta\r\nReply-To: Lafesta\r\nContent-type: text/html; charset=utf-8\r\n";
            $email = 'standfordeli@yandex.ru';
            mail($email, $subject, $message, $headers);
?>

На маил, Яндекс и Гугл , вообще никуда не приходит письмо. Помогите!


 

 

Сообщение отредактировал hnerd: 16 Апрель 2015 - 18:12

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Заголовок From в функции mail()
  2. Отправка письма на почту
  3. Не отправляется e-mail только на mail.ru
  4. 2 письма в обратной связи на php
  5. Не отправляется почта с сайта, JS + PHP, подскажите в чем проблема

#2 ShowPrint

ShowPrint
  • Пользователь PRO
  • 1 923 сообщений
  • Репутация: 476

Отправлено 16 Апрель 2015 - 18:24

Я долго мучился в разных вариантах с функцией mail().

В настоящий момент в модуле рассылки у меня работает вот такая конструкция:

// Функция отправки сообщения по электронной почте
function SendEMailMessage($From, $To, $Subject, $Text, $File)
{
$SenderName = "SenderName"; // string
$Company = "CompanyName"; // string
$_MailFrom = "E-Mail@Address.ru";
$_Kod='windows-1251';

// чтение файла с логотипом/картинкой (если нужно)
if ( $File=='' ) $File='./image/ArcturLogo.gif';
$_FileID = fopen($File,"r");
if (!$_FileID)
{
    echo "Файл $File не может быть прочитан";
    exit();
}
$_File = fread($_FileID, filesize($File));
fclose($_FileID);

$_UID = "--".md5(uniqid(time())); // генерируем разделитель
$_Header = 'From: =?'.$_Kod.'?B?'.base64_encode($SenderName).'?= <'.$_MailFrom.">\n";
$_Header .= 'Reply-To: =?'.$_Kod.'?B?'.base64_encode($SenderName).'?= <'.$From.">\n";
$_Header .= "Organization: =?".$_Kod."?B?".base64_encode($Company)."?=\n";
$_Header .= "MIME-Version: 1.0\n";
$_Header .= "Content-Type: multipart/mixed; boundary=\"$_UID\"\n";

$_MultiPart = "";
$_MultiPart .= "--$_UID\n";
$_MultiPart .= "Content-Type: text/html; charset=$_Kod\n";
$_MultiPart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
$_MultiPart .= stripslashes($Text);
$_MultiPart .= "\n\n";

// аттач логотипа/картинки (если нужно)
$_MessagePart = "";
$_MessagePart .= "Content-Type: application/octet-stream; ";
$_MessagePart .= "file_name = \"$File\"\n";
$_MessagePart .= "Content-Transfer-Encoding: base64\n";
$_MessagePart .= "Content-ID: <Logo>\n";
$_MessagePart .= "Content-Disposition: attachment; filename = \"".$File."\"\n\n";
$_MessagePart .= chunk_split(base64_encode($_File))."\n";

$_MultiPart .= "--$_UID\n".$_MessagePart."--$_UID--\n";

if( !mail( $To, '=?'.$_Kod.'?B?'.base64_encode($Subject).'?=', $_MultiPart, $_Header ) )
{
    if( !mail( $To, '=?'.$_Kod.'?B?'.base64_encode($Subject).'?=', $_MultiPart, $_Header ) )
    {
        echo "К сожалению, письмо не может быть отправлено";
    }
}

} // конец функции
Запуск функции из скрипта, следующим образом:
SendEMailMessage( $_SubscribeMail, $_MyMail, $_Subject, wordwrap( $_Text, 70 ,"\n " ) );

где:

$_SubscribeMail - адресат
$_MyMail - что проставляется в поле "от"
$_Subject - тема письма
$_Text - текст письма с использованием html-тегов (если нужно)
 
 
Попробуйте скопипастить - возможно будет работать...
 
П.С. Ну в начале функции в переменные свои значения поставить; за 1251 не бейте - привычка; блок с аттачем гифки с логотипом можно удалить целиком...
 
Ну и кривизну, кто сочтет таковой, тоже не пинайте - не профи я... Писал основываясь на куче разных источников, сводя информацию в одно целое которое меня будет удовлетворять...

Сообщение отредактировал ShowPrint: 16 Апрель 2015 - 18:55

  • 2
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#3 hnerd

hnerd
    Topic Starter
  • Пользователь
  • 284 сообщений
  • Репутация: 18

Отправлено 16 Апрель 2015 - 18:43

Попробуйте скопипастить - возможно будет работать...

 

Здравствуйте! Нашла ошибку, неправильный адрес просто прописала, вместо send.php прописала /send.php - вот и вся ошибка.

Но за ващ код отдельное спасибо! Буду его использовать в дальнейшем!


  • 0

#4 Longiston

Longiston
  • Пользователь
  • 6 сообщений
  • Репутация: 0

Отправлено 23 Май 2015 - 14:04

Почта - это самое каверзное, что есть на сегодня. Попробуй протестировать на разных ящиках, может проблема в этом. Часто такое бывает.


  • 0

#5 fedornabilkin

fedornabilkin
  • Пользователь
  • 697 сообщений
  • Репутация: 91

Отправлено 25 Май 2015 - 09:36

Дело в том, что на Денвере письмо приходит и сохраняется в папку tmp !sendmail, а вот на почту нет.

Насколько я знаю, с локалки вообще нельзя отправить письмо.
В последнее время использую отправку через SMTP и пользуюсь php-классом.
Выглядит приблизительно так:

                                $m = new Mail();  // можно сразу указать кодировку, можно ничего не указывать ($m= new Mail;)
                                $m->From( $mail_from.";no-reply@site.ru" ); // от кого Можно использовать имя, отделяется точкой с запятой
				$m->ReplyTo( $mail_from.";no-reply@site.ru" ); // куда ответить, тоже можно указать имя
				$m->To( $mail );   // кому, в этом поле так же разрешено указывать имя
				$m->Subject( $title_notice ); // заголовок
				//$m->Body( $body );
				$m->Body( $body, "html" ); // текст письма
				$m->Organization($mail_from); // торговое имя
				$m->Priority(3) ;	// установка приоритета
				$m->smtp_on("smtp.site.ru", 'no-reply@site.ru', '12345', 25); // сервер, адрес, пароль, порт
                                $m->Send();	// отправка
				

Рекомендую пользоваться классами, все равно этот этап неизбежен.
Класс для отправки писем


  • 1
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#6 iweb-courses

iweb-courses
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 01 Июнь 2015 - 15:58

Может все же переспам? Задержка получения письма, либо в СПАМ-листах лежит.


  • 0


Оформление форума – IPBSkins.ru