我有以下联系表格:
(使用PHP的HTML)
<form method="post" action="index.php">
<p>
<label>Namn</label>
<input name="name" placeholder="Skriv här">
<label>Epost adress</label>
<input name="email" type="email" placeholder="Skriv här">
<label>Meddelande</label>
<textarea name="message" placeholder="Skriv här"></textarea>
<label>Hur mycket är 2+2? (Anti-spam)</label>
<input name="human" placeholder="Skriv här">
</p>
<p>
<input id="submit" name="submit" type="submit" value="Submit">
</p>
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'Från: Forall.se';
$to = 'info@forall.se';
$subject = 'Ny meddelande';
$human = $_POST['human'];
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
if ($_POST['submit']) {
if ($name != '' && $email != '') {
if ($human == '4') {
if (mail ($to, $subject, $body, $from)) {
echo '<p>Ditt meddelande har skickats!</p>';
} else {
echo '<p>Någonting gick fel. Var vänlig och försök igen!</p>';
}
} else if ($_POST['submit'] && $human != '4') {
echo '<p>Du har gett fel svar på Anti-Spam frågan!</p>';
}
} else {
echo '<p>Du behöver att fylla alla fält i formuläret!</p>';
}
}
?>
</form>
除了ã,õ,ä,å,ö,ç等非英语字符外,其他所有内容都应该如此。如果它不是瑞典网站,这应该不是问题。
以下是我收到的最后一封电子邮件的样本:
“Jag hoppas duharförstÃ¥elsefördetataoch att duhittarnÃ¥ganannanmarknadsförare! JagÃ¥terkommernärochhom jag startar upp min firma,justnuärdedeliteosäkerthurdet blir med dettas“
如何解决此问题?
非常感谢提前!
答案 0 :(得分:0)
您需要添加标题
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'Från: Forall.se';
$to = 'info@forall.se';
$subject = 'Ny meddelande';
$human = $_POST['human'];
$headers = "MIME-Version: 1.0" . PHP_EOL;
$headers .= "From: $from <$email> ". PHP_EOL;
$headers .= "Content-type: text/html;charset=UTF-8 ". PHP_EOL;
$name = str_replace( '[at]','@', $name);
$message = str_replace( '[at]','@', $message);
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
if ($_POST['submit']) {
if ($name != '' && filter_var($email, FILTER_VALIDATE_EMAIL)) {
if ($human == '4') {
if (mail ($to, $subject, $body, $headers)) {
echo '<p>Ditt meddelande har skickats!</p>';
} else {
echo '<p>Någonting gick fel. Var vänlig och försök igen!</p>';
}
} else if ($_POST['submit'] && $human != '4') {
echo '<p>Du har gett fel svar på Anti-Spam frågan!</p>';
}
} else {
echo '<p>Du behöver att fylla alla fält i formuläret!</p>';
}
}
?>
答案 1 :(得分:0)
PHP mail函数第4个参数不是从值发送的唯一参数。根据PHP手册:
- 这通常用于添加额外的标题(From,Cc和Bcc)。应使用CRLF(\ r \ n)分隔多个额外标题。
包含将编码消息文本的字符集。在您的情况下,正如评论所说,您必须使用 UTF-8 。
所以,你的代码就像这样:
$header = "From: somebody@example.com\r\nContent-Type: text/plain; charset=UTF-8";
$message = $_POST['message'];
$to = 'info@forall.se';
$subject = 'Ny meddelande';
mail ($to, $subject, $body, $header)