Mail()仅从主题发送第一个单词

时间:2014-06-10 13:05:49

标签: php email

当我发送一些电子邮件时,它只发送主题中的第一个单词:

示例:我发送的电子邮件名称为"发送电子邮件",它只发送单词"发送",我该如何防止?

代码:

在选择框中选择主题

<td><a>
<?=  ' '.$val['email'].'  '; ?>
<input type="text" value="<?=  $val['email']; ?>" name="to"/>
</a></td>

<td>
<select name="subject">
<?php
  foreach($templatesarr as $val){
   echo '<option value='.$val['name'].'>'.$val['name'].'</option>';
  }
  echo '</select></td>
  <td><input type="submit" name="send" value="Send e-mail" /></td>
  </td></tr>
  ';
  ?>
  </form>

检查按钮是否被点击

if(isset($_POST['send'])){
$sendername = 'Company';
$from = 'noreplay@compaty.com';
$to      = safe($_POST['to']);

$subject =  safe($_POST['subject']);
$message = 'teste';

$headers  = 'MIME-Version: 1.0' . PHP_EOL;
$headers .= 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL;
$headers .= "From: $sendername <$from>".PHP_EOL;

mail($to, $subject, $message, $headers);

}else{
$to = NULL;

}

安全功能

function safe($value) {
    return mysql_real_escape_string($value);
}

1 个答案:

答案 0 :(得分:1)

主要问题是由没有转义变量而未正确封装您的属性值引起的;请改用:

foreach($templatesarr as $val){
   printf('<option value="%1$s">%1$s</option>', 
       htmlspecialchars($val['name'], ENT_QUOTES, 'UTF-8')
   );
}

现在使用""来分隔选项元素的value属性。