Email Routing для веб-форм PHP - PullRequest
0 голосов
/ 03 июня 2011

Я создал веб-форму с помощью PHP, и я бы хотел, чтобы кто-то мог выбирать из списка получателей в поле выбора.Это возможно с PHP?Я знаю, что вы можете разместить электронные письма в качестве значения параметра, но есть ли более безопасный метод?Спасибо.

РЕДАКТИРОВАТЬ :

Должен ли я сделать что-то вроде:

if ($_POST['emailTo']=="president")
{
$to = president@example.com;

else if ($_POST['emailTo']=="vice-president")
{
$to = vPresident@example.com;
}
mail("$to", "subject", message, $from);

Ответы [ 3 ]

2 голосов
/ 03 июня 2011

Ваша главная проблема - злоупотребление - злонамеренный пользователь может изменить запрос POST и заставить ваш код отправлять электронную почту на любой выбранный им адрес.

Вы должны защитить свое приложение, указав в форме не сами адреса электронной почты, а ссылки на адреса электронной почты. Затем ваш код должен будет перевести отправленное значение в адрес электронной почты

Тривиальным примером может быть установка в полях выбора целочисленных значений. Ваш код может перевести выбранную опцию в адрес электронной почты через поиск какой-либо формы.

HTML:

<select name="recipient">
   <option value="1">Example 1</option>
   <option value="2">Example 2</option>
   <option value="3">Example 3</option>
</select>

PHP:

switch ($_POST['recipient') {
    case 1:
        $emailAddress = 'one@example.com';
        break;

    case 2:
        $emailAddress = 'two@example.com';
        break;

    case 3:
        $emailAddress = 'three@example.com';
        break;
}
0 голосов
/ 03 июня 2011

В коде PHP, который отправляет электронное письмо, вы можете создать массив действительных электронных писем получателя, и если выбранное электронное письмо пользователя находится в массиве, то отправьте электронное письмо, если нет, верните ошибку. Таким образом, вы бы

$valid_emails = array("validemail1@email.com", "validemail2@email.com", "validemail3@email.com", "validemail4@email.com");

if(in_array($_REQUEST['recipient_email'], $valid_emails))
{
   send_email($_REQUEST['recipient_email']);
}
else
{
   return_error("Invalid recipient email."); 
}
0 голосов
/ 03 июня 2011

Если вы хотите, чтобы он отправлялся на несколько электронных писем, просто добавьте форму с флажками для всех адресов электронной почты. Разрешить пользователям проверять адреса в списке, а затем добавлять их к получателю / отправлять в переменную. Сделайте их запятыми. У меня есть пример, который я однажды построил, вроде того, что вы просите. Дай мне его найти.

РЕДАКТИРОВАТЬ: Найдено это ...

// РЕДАКТИРОВАТЬ ЛИНИИ НИЖЕ, КАК ТРЕБУЕТСЯ

$email_to = "EMAIL1, EMAIL2, EMAIL3";

$email_subject = "Someone Signed Up! :)";

В разделе $ email_to просто введите проверенные электронные письма в это поле. Если вам нужен весь мой сценарий, я могу дать его вам. Вам просто нужно будет ввести форму для этого поля.

Как отметил кто-то еще, безопасность - это проблема. Если это просто кто-то, кто хочет эту функцию для подобной почтовой системы, вы, вероятно, можете быть в порядке, но если это что-то вроде свободного правящего пользователя, вы можете ограничить использование формы. Разрешить проверку только 3 электронных писем или иметь 3 поля, которые можно ввести таким образом, только столько электронных писем можно отправить одновременно.

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