0

我有以下联系表格:

(带有 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 du har förstÃ¥else för detta och att du hittar nÃ¥gon annan marknadsförare! Jag Ã¥terkommer när och om jag startar upp min firma, just nu är det lite osä kert hur det blir med dettas"

我该如何解决这个问题?

4

2 回答 2

0

PHP邮件函数的第 4 个参数并不是发送 from 值的专有参数。根据 PHP 的手册:

- 这通常用于添加额外的标题(发件人、抄送和密送)。多个额外的标头应该用 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)
于 2013-06-19T12:32:22.707 回答
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>';
    }
}

?>
于 2013-06-19T12:31:20.337 回答