当我发送一些电子邮件时,它只发送主题中的第一个单词:
示例:我发送的电子邮件名称为"发送电子邮件",它只发送单词"发送",我该如何防止?
代码:
在选择框中选择主题
<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);
}
答案 0 :(得分:1)
主要问题是由没有转义变量而未正确封装您的属性值引起的;请改用:
foreach($templatesarr as $val){
printf('<option value="%1$s">%1$s</option>',
htmlspecialchars($val['name'], ENT_QUOTES, 'UTF-8')
);
}
现在使用""
来分隔选项元素的value属性。