Подскажите с phpmailer

Тема в разделе "PHP", создана пользователем ecco, 18 июл 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ecco

    ecco Постоялец

    Регистр.:
    21 апр 2007
    Сообщения:
    63
    Симпатии:
    16
    Есть такая форма отправки e-mail с помощью php mail()

    HTML:
    <html>
    <head></head>
    <body>
         <div>
          <form action="send.php" method="post">
             <table>
               <tr>
                <td>
                  <span><label for="city_adress">Город<sup class="red">*</sup></label></span>
                </td>
                <td>
                  <select id="city_adress" name="city_adress">
    				<option value="">&nbsp;&nbsp;</option>
    				<option value="Киев">Киев</option>
    				<option value="Харьков">Харьков</option>
    			</select>
                </td>
              </tr>
              <tr>
                <td>
                  <span><label for="contact_name">Контактное лицо</label></span>
                </td>
                <td>
                  <input class="w100" name="contact_name" id="contact_name"/>
                </td>
              </tr>
            </table>
            <div><input type="submit" value="Отправить"></div>
          </form>
        </div>
      </body>
    </html>

    PHP:
    <?

    $city = array
    (
        
    "Киев"            => array ( "test_mail@kyiv.ua"),
        
    "Харьков"        => array ("test_mail@kharkov.ua")
     );


    $city_adress                     $HTTP_POST_VARS['city_adress'];                     //  Город
    $contact_name                      $HTTP_POST_VARS['contact_name'];                     //  Контактное лицо


    $header="From: test@mail.ru\nReply-To: test@mail.ru";
    $header.="\nContent-type: text/html; charset=\"windows-1251\"";
    $text="<HTML>\r\n";
    $text.="<HEAD>\r\n";
    $text.="<META http-equiv=Content-Type content='text/html; charset=windows-1251'>\r\n";
    $text.="</HEAD>\r\n";
    $text.="<BODY bgcolor=\"#FFFFFF\" text=\"#000000\" link=\"#C10435\" vlink=\"#7e0068\" style=\"margin:0;padding:24\">\r\n";
    $text.="<div style=\"font:12px Verdana\"><p>Заказ с сайта</p>\r\n" ;

    $text.="<hr>\r\n";
    $text.="<table cellpadding=\"0\" cellspacing=\"8\" border=\"0\" class=\"vm\">\r\n";
    $text.="<tr>\r\n";

    $text.="</tr>\r\n";
    $text.="<tr>\r\n";
    $text.="<td>Город:</td>\r\n";
    $text.="<td>".$city_adress."</td>\r\n";

    $text.="</tr>\r\n";
    $text.="<tr>\r\n";
    $text.="<td>Контактное лицо:</td>\r\n";
    $text.="<td>".$contact_name."</td>\r\n";


    $text.="</tr>\r\n";
    $text.="</table>\r\n";
    $text.="<hr>\r\n";
    $text.="</div>" ;
    $text.="</BODY>\r\n";
    $text.="</HTML>";

    Mail ($city[$city_adress][0], " Вам пришла заявка с сайта" $text$header);
    header("Location: sent.html?".$city[$city_adress][1]);
    exit;

    ?>
    Каким образом можно реализовать отправку e-mail с помощью sendmail (тоесть используя акаунт на внешнем почтовом сервере) в данной форме, чтобы как и здесь письмо уходило на разные ящики, взависимости от выбранного города?
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Так в чём вопрос то? Вместе с классом идут примеры рассылки через разные сервера, например гмаил
    PHP:
    <?php
    include("class.phpmailer.php");
    include(
    "class.smtp.php");
     
    if(isset(
    $_POST['send'])){
        
    $body=$_POST[email];
    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->SMTPAuth   true// enable SMTP authentication
    $mail->SMTPSecure "ssl"// use ssl
    $mail->Host "ssl://smtp.gmail.com"// GMAIL's SMTP server
    $mail->Port  465// SMTP port used by GMAIL server
    $mail->Username   "myaccount@gmail.com"// GMAIL username
    $mail->Password   "mypassword"// GMAIL password
    $mail->AddReplyTo("account@domain.com","FirstName LastName"); // Reply email address
    $mail->From "myaccount@gmail.com";
    $mail->FromName "myname"// Name to appear once the email is sent
    $mail->Subject "testing 123"// Email's subject
    //$mail->Body = "Hello World,<br />This is the HTML BODY<br />"; //HTML Body
    $mail->AltBody "This is a test email"// optional, comment out and test
    $mail->WordWrap 50// set word wrap
    $mail->MsgHTML($body); // [optional] Send body email as HTML
    $mail->AddAddress("account@domain.com");  // email address of recipient
    //$mail->AddAttachment("files/files.zip"); // [optional] attachment
    $mail->IsHTML(true); // [optional] send as HTML
    if(!$mail->Send())
    echo 
    "Mailer Error: " $mail->ErrorInfo;
    else
    echo 
    "Message sent!";
    }
    ?>
    В сети так же полно советов как отправить письмо

    Перейти по ссылке
    Перейти по ссылке
     
    ecco нравится это.
  3. ecco

    ecco Постоялец

    Регистр.:
    21 апр 2007
    Сообщения:
    63
    Симпатии:
    16
    Спасибо я читал о PHPMAILER. Мне не ясно каким образом можно заставить данную форму отправлять почту на разные e-mail в зависимости от выбранного города используя PHPMAILER. Вот в твоем примере видно что получатель определен - он один. Чет я не догоняю, ткните носом.
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Ну эт просто, например в $_POST['siti']- название города
    PHP:
    <?php
     
    $body
    =$_POST['email'];
    $mail = new PHPMailer();
    switch(
    $_POST['siti']){
     
     case 
    'gorod1':
     case 
    'gorod2'
     
    // настройки для ПОЧТЫ1
    $mail->IsSMTP();
    $mail->SMTPAuth   true// enable SMTP authentication
    $mail->SMTPSecure "ssl"// use ssl
    $mail->Host "ssl://smtp.gmail.com"// GMAIL's SMTP server
    $mail->Port  465// SMTP port used by GMAIL server
    $mail->Username   "myaccount@gmail.com"// GMAIL username
    $mail->Password   "mypassword"// GMAIL password
    $mail->AddReplyTo("account@domain.com","FirstName LastName"); // Reply email address
    $mail->From "myaccount@gmail.com";
     
     
     break;
     
     case 
    'gorod3':
     case 
    'gorod4':  
     case 
    'gorod5'
     
    // настройки для ПОЧТЫ2 
     
     
     
    break; 
     
    }
    // общие настройки, одинаковые для всех почтовиков
    $mail->FromName "myname"// Name to appear once the email is sent
    $mail->Subject "testing 123"// Email's subject
    //$mail->Body = "Hello World,<br />This is the HTML BODY<br />"; //HTML Body
    $mail->AltBody "This is a test email"// optional, comment out and test
    $mail->WordWrap 50// set word wrap
    $mail->MsgHTML($body); // [optional] Send body email as HTML
    $mail->AddAddress("account@domain.com");  // email address of recipient
    //$mail->AddAttachment("files/files.zip"); // [optional] attachment
    $mail->IsHTML(true); // [optional] send as HTML
    if(!$mail->Send())
    echo 
    "Mailer Error: " $mail->ErrorInfo;
    else
    echo 
    "Message sent!";
     
    ?>
    Просто для разных городов передаёшь разные настройки подключения- сервер, юзер, пароль и тд.
     
    ecco нравится это.
  5. ecco

    ecco Постоялец

    Регистр.:
    21 апр 2007
    Сообщения:
    63
    Симпатии:
    16
    Прописал два своих разных ящика на гмаил

    HTML:
     <td>
                  <select id="city_adress" name="city_adress">
    				<option value="kharkov">Харків</option>
    				<option value="poltava">Полтава</option>
     <td>

    PHP:
    <?

    $body=$_POST['person_name'];
    $mail = new PHPMailer();
     switch(
    $_POST['sity_adress']){

     case 
    'kharkov':
    $mail->IsSMTP();
    $mail->SMTPAuth   true// enable SMTP authentication
    $mail->SMTPSecure "ssl"// use ssl
    $mail->Host "ssl://smtp.gmail.com"// GMAIL's SMTP server
    $mail->Port  465// SMTP port used by GMAIL server
    $mail->Username   "user1@gmail.com"// GMAIL username
    $mail->Password   "pass1"// GMAIL password
    $mail->AddReplyTo("user1@gmail.com","User 1"); // Reply email address
    $mail->From "user1@gmail.com";


     break;

     case 
    'poltava':
    $mail->IsSMTP();
    $mail->SMTPAuth   true// enable SMTP authentication
    $mail->SMTPSecure "ssl"// use ssl
    $mail->Host "ssl://smtp.gmail.com"// GMAIL's SMTP server
    $mail->Port  465// SMTP port used by GMAIL server
    $mail->Username   "user2@gmail.com"// GMAIL username
    $mail->Password   "pass2"// GMAIL password
    $mail->AddReplyTo("pass2@gmail.com","User 2"); // Reply email address
    $mail->From "user2@gmail.com";



     break;

       default:

    // общие настройки, одинаковые для всех почтовиков
    $mail->FromName "zayavka"// Name to appear once the email is sent
    $mail->Subject "Test123"// Email's subject
    //$mail->Body = "Hello World,<br />This is the HTML BODY<br />"; //HTML Body
    $mail->AltBody "This is a test email"// optional, comment out and test
    $mail->WordWrap 50// set word wrap
    $mail->MsgHTML($text); // [optional] Send body email as HTML
    $mail->AddAddress("user3@ukr.net");  // email address of recipient
    //$mail->AddAttachment("files/files.zip"); // [optional] attachment
    $mail->IsHTML(true); // [optional] send as HTML
    if(!$mail->Send())
    echo 
    "Mailer Error: " $mail->ErrorInfo;
    else
    echo 
    "Message sent!";

    }

    ?>
    но почта все равно приходит только сюда $mail->AddAddress("user3@ukr.net");

    Может еще что-то дописать нужно? Такое впечатление что скрипт эти case-ы вообще не видит. Спасибо большое за ответы.:thenks:
     
  6. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Оййй:ah: Я ошибся. Думал что нужно отправлять почту С разных, а не На

    В общем сейчас в switch выбирается с какого emailа он будет слать сообщения. Потом при перепечатке ты допустил ошибку-
    default неверно добавил, тот код,что ты включил в него, должен идти вне конструкции switch.

    Надо
    PHP:
    $body=$_POST['person_name'];
    $mail = new PHPMailer();
     switch(
    $_POST['sity_adress']){
     case 
    'kharkov':// если выбрано значение kharkov то письмо уйдёт сюда 
    $mail->AddAddress("user1@ukr.net"); 
     break;
     case 
    'poltava':// если выбрано значение poltava то письмо уйдёт сюда 
    $mail->AddAddress("user2@ukr.net");  
     break;
     
     default:
    // В остальных слачаях отправить письмо сюда 
     
    $mail->AddAddress("user3@ukr.net");  
     break; 
     
    }
     
    // общие настройки, одинаковые для всех почтовиков
    $mail->IsSMTP();
    $mail->SMTPAuth   true// enable SMTP authentication
    $mail->SMTPSecure "ssl"// use ssl
    $mail->Host "ssl://smtp.gmail.com"// GMAIL's SMTP server
    $mail->Port  465// SMTP port used by GMAIL server
    $mail->Username   "user1@gmail.com"// GMAIL username
    $mail->Password   "pass1"// GMAIL password
    $mail->AddReplyTo("user1@gmail.com","User 1"); // Reply email address
    $mail->From "user1@gmail.com";
     
    $mail->FromName "zayavka"// Name to appear once the email is sent
    $mail->Subject "Test123"// Email's subject
    //$mail->Body = "Hello World,<br />This is the HTML BODY<br />"; //HTML Body
    $mail->AltBody "This is a test email"// optional, comment out and test
    $mail->WordWrap 50// set word wrap
    $mail->MsgHTML($text); // [optional] Send body email as HTML
    //$mail->AddAttachment("files/files.zip"); // [optional] attachment
    $mail->IsHTML(true); // [optional] send as HTML
    if(!$mail->Send())
    echo 
    "Mailer Error: " $mail->ErrorInfo;
    else
    echo 
    "Message sent!";
     
     
     
     
     
    ecco нравится это.
Статус темы:
Закрыта.