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

Сервис обмена электронных валют


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

#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. Отправка письма на почту
  2. Скрипт не отправляет письмо на почту
  3. Как настроить файл email для отправки писем
  4. Приходит письмо, что нужно оплатить хостинг
  5. Пришло забавное письмо "Нам нужен специалист по СЕО продвижение в гугл"

#2 ShowPrint

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

Отправлено 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
  • Пользователь
  • 696 сообщений
  • Репутация: 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