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

Статус
В этой теме нельзя размещать новые ответы.

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 (тоесть используя акаунт на внешнем почтовом сервере) в данной форме, чтобы как и здесь письмо уходило на разные ящики, взависимости от выбранного города?
 
Так в чём вопрос то? Вместе с классом идут примеры рассылки через разные сервера, например гмаил
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
Спасибо я читал о PHPMAILER. Мне не ясно каким образом можно заставить данную форму отправлять почту на разные e-mail в зависимости от выбранного города используя PHPMAILER. Вот в твоем примере видно что получатель определен - он один. Чет я не догоняю, ткните носом.
 
Спасибо я читал о PHPMAILER. Мне не ясно каким образом можно заставить данную форму отправлять почту на разные e-mail в зависимости от выбранного города используя PHPMAILER. Вот в твоем примере видно что получатель определен - он один. Чет я не догоняю, ткните носом.
Ну эт просто, например в $_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
Прописал два своих разных ящика на гмаил

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:
 
Прописал два своих разных ящика на гмаил

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:
Оййй: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
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху