Отправка писем через PHP

Серверное программирование
Аватара пользователя
Scamper
Постоялец
Сообщения: 67
Зарегистрирован: 17 дек 2014, 18:09
Откуда: Екатеринбург
Контактная информация:

Отправка писем через PHP

Сообщение Scamper » 21 дек 2014, 13:05

Отправка писем через PHP

Автор:viruskill

Пока пользовался услугами платного хостинга, где все уже настроено, то не было ни каких проблем =) раз у меня сейчас свой хост, где держу сайты, там была проблема, не отправлялись письма через php.... А это не есть хорошо =) начал гуглить.... все советы сводились к установке sendmail, оно конечно же по умолчанию не шло в комплекте =) apt-get install sendmail - установил! В php.ini - раскоментировал строку, которая обращается к этой проге! Полный рестарт, тест и все в пустую ((( Было это недели четыре назад.... Сегодня вспомнил, что у меня на компе попутно с виндой еще стоит убунту и я там пытался наладить почтовый сервер, типа репетировал для реальных условий =) ставлю апачь, пхп, исполняю функцию mail() и письмо дошло! Так что если на хостинге не планируется держать полностью функциональный почтовик, а просто использовать отправку e-mail, тогда тут все просто, apt-get install postfix, во время установки ввожу доменное имя и тип почтовика - Веб-сайт, комментирую в php.ini то что было связано с sendmail, затем полный ребут и вот оно щястье!

Щастье длилось не очень долго, ибо сайты мои в UTF-кодировке и по умолчанию письма приходят в виде иероглифов.... По этому пришлось погуглить еще чуть чуть и найти скрипт в таком варианте -

Код: Выделить всё

<?php

function send_mime_mail($name_from, // имя отправителя
                          $email_from, // email отправителя
                          $name_to, // имя получателя
                          $email_to, // email получателя
                          $data_charset, // кодировка переданных данных
                          $send_charset, // кодировка письма
                          $subject, // тема письма
                          $body // текст письма
                          ) {
    $to = mime_header_encode($name_to, $data_charset, $send_charset)
                   . ' <' . $email_to . '>';
    $subject = mime_header_encode($subject, $data_charset, $send_charset);
    $from =  mime_header_encode($name_from, $data_charset, $send_charset)
                       .' <' . $email_from . '>';
    if($data_charset != $send_charset) {
      $body = iconv($data_charset, $send_charset, $body);
    }
    $headers = "From: $from\r\n";
    $headers .= "Content-type: text/plain; charset=$send_charset\r\n";

    return mail($to, $subject, $body, $headers);
}

function mime_header_encode($str, $data_charset, $send_charset) {
    if($data_charset != $send_charset) {
      $str = iconv($data_charset, $send_charset, $str);
    }
    return '=?' . $send_charset . '?B?' . base64_encode($str) . '?=';
}

?>

send_mime_mail('Автор письма',
                 'sender@site.ru',
                 'Получатель письма',
                 'recepient@site.ru',
                 'CP1251',  // кодировка, в которой находятся передаваемые строки
                 'KOI8-R', // кодировка, в которой будет отправлено письмо
                 'Письмо-уведомление',
                 "Здравствуйте, я Ваша программа!");


Но тут же выпало в ошибку, пока не подправил данный элемент:

Код: Выделить всё

send_mime_mail('Автор письма',
                 'sender@site.ru',
                 'Получатель письма',
                 'yurec_vov@mail.ru',
                 'UTF-8',  // кодировка, в которой находятся передаваемые строки
          'CP1251',  // кодировка, в которой будет отправлено письмо
                 'Письмо-уведомление',
                 "Здравствуйте, я Ваша программа!");

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость

cron