За последние 24 часа нас посетил 17601 программист и 1314 роботов. Сейчас ищут 1720 программистов ...

Почему не работает прямая отправка письма

Тема в разделе "Работа с почтой", создана пользователем Martiros, 4 дек 2011.

  1. Martiros

    Martiros Активный пользователь

    С нами с:
    4 дек 2011
    Сообщения:
    1
    Симпатии:
    0
    Я решил создать подписку на сайте и использовал следующий код, где ошибка, он не рассылает письма. Нужный код полужирный.


    <?php require_once('../Connections/Site.php'); ?>
    <?php
    if (!isset($_SESSION)) {
    session_start();
    }
    $MM_authorizedUsers = "a,m";
    $MM_donotCheckaccess = "false";

    // *** Restrict Access To Page: Grant or deny access to this page
    function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) {
    // For security, start by assuming the visitor is NOT authorized.
    $isValid = False;

    // When a visitor has logged into this site, the Session variable MM_Username set equal to their username.
    // Therefore, we know that a user is NOT logged in if that Session variable is blank.
    if (!empty($UserName)) {
    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login.
    // Parse the strings into arrays.
    $arrUsers = Explode(",", $strUsers);
    $arrGroups = Explode(",", $strGroups);
    if (in_array($UserName, $arrUsers)) {
    $isValid = true;
    }
    // Or, you may restrict access to only certain users based on their username.
    if (in_array($UserGroup, $arrGroups)) {
    $isValid = true;
    }
    if (($strUsers == "") && false) {
    $isValid = true;
    }
    }
    return $isValid;
    }

    $MM_restrictGoTo = "Login.php";
    if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
    $MM_qsChar = "?";
    $MM_referrer = $_SERVER['PHP_SELF'];
    if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
    if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)
    $MM_referrer .= "?" . $QUERY_STRING;
    $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
    header("Location: ". $MM_restrictGoTo);
    exit;
    }
    ?>
    <?php
    if ((isset($_POST['subscribe_run'])) && ($_POST['subscribe_run'] == "yes")) {
    mysql_select_db($database_Site, $Site);
    $query_S = "SELECT author, name, href FROM items WHERE isnew = 1 ORDER BY added DESC";
    $S = mysql_query($query_S, $Site);
    while ($row_S = mysql_fetch_assoc($S)) {
    $body = $body . $row_S['author'] . "\r\n";
    $body = $body . $row_S['name'] . "\r\n";
    $body = $body . $row_S['href'] . "\r\n";
    $body = $body . "\r\n";
    }
    if ($body != "") {
    $query_Adresses = "SELECT * FROM maillist";
    $Adresses = mysql_query($query_Adresses, $Site);
    while ($row_Adresses = mysql_fetch_assoc($Adresses)) {
    $rcpt_to = $rcpt_to . "RCPT TO: " . $row_Adresses['email'] . "\r\n";
    $bcc = ",";
    $bcc = $row_Adresses['email'];
    }
    if ($bcc != "") {
    $connection = fsockopen("smtp://mail.ru", 25);
    fputs($connection, "HELO serg.php\r\n");
    fputs($connection, "MAIL FROM: serg.php@mail.ru\r\n");
    fputs($connection, $rcpt_to);
    fputs($connection, "DATA\r\n");
    fputs($connection, "Content-Type: text/plain; charset=windows-1251\r\n");
    fputs($connection, "From: serg.php@mail.ru\r\n");
    fputs($connection, "Bcc: " . $bcc . "\r\n");
    fputs($connection, "Subject: Обновление 'Нашего архива'\r\n");
    fputs($connection, "\r\n");
    fputs($connection, $body);
    fputs($connection, ".\r\n");
    fputs($connection, "RSET\r\n");
    fclose($connection);
    mysql_query("UPDATE items SET isnew = 0 WHERE isnew = 1");
    }
    mysql_free_result($Adresses);
    }
    mysql_free_result($S);
    header("Location: ../default.php");
    }
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Выполнение рассылки</title>
    </head>

    <body>
    <h1>Выполнение рассылки</h1>
    <form action="Subscribe_run.php" method="post" enctype="application/x-www-form-urlencoded" name="subscribe_run" id="subscribe_run">
    <input name="subscribe_run" type="hidden" id="subscribe_run" value="yes">
    <input type="submit" name="Submit" value="Выполнить">
    </form>
    <p><a href="../default.php">На главную страницу </a></p>
    </body>
    </html>
     
  2. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    $connection = fsockopen("smtp.mail.ru", 25);

    Может так надо
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    функция mail() чем плоха? =)
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    Воистину так надо
    Она не поддерживает авторизацию. Вообще-то говоря, smtp.mail.ru тоже несколько лет уже требует авторизации, поэтому приведенный код - допотопные отходы жизнедеятельности. В него конечно можно добавить пару заголовков, но лучше тупо взять Zend_Mail
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а зачем нужна авторизация? =) надо слать со своего сервера и усё
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    Мне нравится почта для домена от Яндекса. Надежный сервис с удобным интерфейсом - что еще надо? Еще спам-фильтр у них хороший кстати.
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2