PHP 字符集和"n"



所以,我的问题是我试图通过PHP发送邮件。我希望所有这些帖子都放在一行上。但是,$header ="内容类型:文本/纯文本;字符集=utf-8\r";这似乎是不可能的。当然,如果我删除那段代码,我就无法在我的邮件中显示 åäö。我已经在这里待了 2 天了。

<?php
$to = "info@mywebsite.se";
$subject = "Bokning från hemsidan.";
$header = "Content-type: text/plain; charset=utf-8rn";
$header .= "From: bokning@mywebsite.sern";
$body = "En bokning:" . "nn" .
    $_POST["namn"] . "n" .
    $_POST["mobilnummer"] . "n" .
    $_POST["hemnummer"] . "n" .
    $_POST["email"] . "n" .
    $_POST["gatuadress"] . "n" .
    $_POST["postnummer"] . "n" .
    $_POST["vaning"] . "n" .
    $_POST["portkod"] . "n" .
    $_POST["bokningsdag"] . "n" .
    $_POST["byggstadning"] . "n" .
    $_POST["flytthjalp"] . "n" .
    $_POST["flyttstadning"] . "n" .
    $_POST["typavbostad"] . "n" .
    $_POST["fonsterputsning"] . "n" .
    $_POST["kontorsstadning"] . "n" .
    $_POST["rojningbortforsling"] . "n" .
    $_POST["visningsstad"] . "n" .
    $_POST["dodsbo"] . "n" .
    $_POST["boyta"] . "n" .
    $_POST["kallare"] . "n" .
    $_POST["vind"] . "n" .
    $_POST["totalkvm"] . "n" .
    $_POST["garage"] . "n" .
    $_POST["forrad"] . "n" .
    $_POST["veranda"] . "n" .
    $_POST["balkongglas"] . "n" .
    $_POST["balkongejglas"] . "n" .
    $_POST["friggebod"] . "n" .
    $_POST["fakgatuadress"] . "n" .
    $_POST["fakpostnummer"] . "n" .
    $_POST["jarut"] . "n" .
    $_POST["nejrut"] . "n" .
    $_POST["meddelande"];

if($_POST){
    mail($to, $subject, $body, $header);
    $feedback = "Tack för din bokning! Vi kommer att kontakta dig inom kort via mail eller telefon för att bekräfta din bokning. Vid bråskande ärenden var vänlig ring kontoret. Våra telefontider är 8.00-12.30.";
}
?>

\r 适用于电子邮件换行符,如 RFC2822 要求:

消息分为字符行。 一条线是一系列用两个字符回车符分隔的字符和换行;即回车 (CR) 字符 (ASCII值 13),紧跟换行 (LF) 字符 (ASCII值 10)。 (回车/换行对通常写在此文档为"CRLF"。

另请参阅:关于"低质量 Unix MTA"php.net 的评论,需要 而不是 \r

r是CR,n是PHP中的LF

我可能应该声明这只对Content-Type:text/plain有效,但邮件系统应该被创建以适应互联网工程任务组的所有相关RFC,包括上述部分。如果要改为发送 HTML,请改用<BR />

根据

php.net,您必须用"\r"分隔每行。

正如其他人所提到的,\r 是电子邮件标头的换行符。 如果你在"换行符"上查看维基百科页面,你会看到这个角色的几个表示。

基于 ASCII 或兼容字符集的系统使用 LF (换行符,'',0x0A,十进制 10)或 CR(回车符,'\r', 0x0D,十进制 13)单独,或 CR 后跟 LF(CR+LF, "\r", 0x0D0A)

Unicode 标准定义了大量字符 符合要求的应用程序应识别为行终止符:[4]
低频:换行,U+000A
...
CR:回车,U+000D

您可以尝试在 UTF-8 正文中传递"\0\r\0",看看是否得到了所需的换行符。

最新更新