Два письма при отправке через SMTP - PullRequest
0 голосов
/ 12 мая 2009

Я использовал два сценария электронной почты PHP и направлял их через мой SMTP-сервер, когда я делаю это, хотя он отправляет два одинаковых сообщения.

Когда я использую mail (), этого не происходит, но я бы предпочел использовать SMTP.

Есть идеи, почему это может происходить?

Ответы [ 5 ]

1 голос
/ 12 мая 2009

Если вы устанавливаете заголовок «Кому» и / или «Получатель» несколько раз, SMTP-сервер может интерпретировать это как отдельный адрес электронной почты, поэтому вы получите несколько сообщений электронной почты.

Я бы рекомендовал использовать класс PEAR Mail. Очень прост в использовании и выполняет большую часть работы за вас. Он поддерживает несколько бэкэндов, включая SMTP. Аналогичным образом, если вы хотите расширить свой класс для отправки электронных писем в формате HTML, класс Mail_Mime прекрасно справляется с этим, предоставляя методы для установки тела в виде простого текста и тела HTML (в случае, если получатель не поддерживает HTML).

0 голосов
/ 13 мая 2009

Я согласен с тем, что сказал da5id, почему вы не выводите второе сообщение об ошибке. Далее вы проверили получателя, действительно ли они получают 2 сообщения?

0 голосов
/ 13 мая 2009

Исходя из вашего кода, если виноват класс, вы могли бы ожидать, что «Message Sent OK» дважды (хотя я не понимаю, почему это произойдет). Если вы этого не сделаете, то я бы посмотрел на ваш SMTP-сервер (возможно, позвонив в службу поддержки).

Я предполагаю, что вы отключили функцию Ответить, чтобы исключить ее как причину в этом случае? Примечание. Я не предполагаю, что это может повлиять на что-либо (кроме того, что вы, вероятно, классифицированы как спам).

Кстати, я перешел из PHPMailer в Swift Mailer некоторое время назад и никогда не оглядывался назад. Если вы не получаете удовольствия от поддержки, то я бы попробовал хотя бы протестировать с Swift Mailer.

0 голосов
/ 13 мая 2009

Так что если вы используете только PHPMailer без редактирования его кода, это не ошибка вашего скрипта. Может быть, проверить конфигурацию вашего SMTP-сервера?

0 голосов
/ 12 мая 2009
function send_email($from, $fromname, $to, $subject, $body, $alt = '')
{
    require_once('class.phpmailer.php');
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

    $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

    $mail->IsSMTP(); // telling the class to use SMTP

    try
    {
        $mail->Host       = 'localhost'; // SMTP server
        $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
        //$mail->AddReplyTo($from, $fromname);
        $mail->AddAddress($to);
        $mail->SetFrom($from, $fromname);
        $mail->Subject = $subject;
        //$mail->AltBody = $alt; // optional - MsgHTML will create an alternate automatically
        $mail->MsgHTML($body);
        $mail->Send();
        echo 'Message Sent OK';
    }
    catch (phpmailerException $e)
    {
        echo $e->errorMessage(); //Pretty error messages from PHPMailer
    }
    catch (Exception $e)
    {
        echo $e->getMessage(); //Boring error messages from anything else!
    }
}   

Это текущая функция на данный момент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...