【发布时间】:2019-11-04 14:30:02
【问题描述】:
在订购表格中,我提供了一些选项来添加一些备注。到目前为止,相关人员使用电子邮件进行订购,实际上他们在实际订单旁边添加了很多备注。 表单有一个文本区域。当我进入
Dit is een oefening.
Komt de mail
a) wel aan
b) geeft hij de juiste weergave?
在 PHP 中贴出的 textarea 显示为:
Dit is een oefening.\r\nKomt de mail\r\na) wel aan\r\nb) geeft hij de juiste weergave?
到目前为止一切顺利,我想。 但是在邮件中,文本并没有按预期中断,而是完全复制为该字符串
Dit is een oefening。\r\nKomt de mail\r\na) wel aan\r\nb) geeft hij de juiste weergave?
有什么方法(最好是简单的方法)我可以格式化这样的文本字符串以按预期执行吗?
字符串($xtravraag) 包含在一行中
if ($xtravraag != '') {$emailvraagk = "\r\n MAILBERICHT BIJ BESTELLING \r\n\r\n $xtravraag";} else {$emailvraagk = '';}
我已经尝试过这个,结果完全搞砸了:
if ($xtravraag != '') {$emailvraagk = "\r\n".' MAILBERICHT BIJ BESTELLING'."\r\n\r\n".$xtravraag;} else {$emailvraagk = '';}
导致
\r\n MAILBERICHT BIJ BESTELLING \r\n\r\n $xtravraag
而且该标题最初运行良好。
邮件标题包括:
'Mime-Version: 1.0' . "\r\n" .
'Content-Type: text/plain; charset=UTF-8' . "\r\n" .
'Content-Transfer-Encoding: quoted-printable' . "\r\n" .
'X-Mailer: PHP/' . phpversion()
删除传输编码是没有选择的。经常使用的变音符号需要它。这需要 UTF-8。
根据要求提供页面内的代码
<fieldset><legend>Overige vragen of opmerkingen die geen bestelling zijn</legend>
<textarea name='xtravraag' id='xtravraag' cols='76' rows='5'> </textarea>
</fieldset>
然后发布
if (isset($_POST['xtravraag'])) {$xtravraag = $mysqli->real_escape_string(trim($_POST['xtravraag']));} else{$xtravraag='';}
echo "extravraag: $xtravraag <br>"; //MOET WEG BIJ OPLEVERING
其中包括显示整行的回声
解决了
real_escape_string 在这里犯了错误。
【问题讨论】:
-
在将消息添加到邮件函数中使用的变量时,您是使用双引号
"还是单引号'? -
我原来用的是双引号。感谢您的提示,我立即尝试。更改为单引号 las 不起作用;拆分它就像它如何完美地适用于表格的线条一样让它变得更糟。改编了这些例子。
-
您能否包含用于读取文本区域和发送电子邮件的完整代码?
-
不要使用
real_escape_string。请改用准备好的语句。这可能是您当前问题的原因。 -
我同意
real_escape_string看起来是这里的罪魁祸首
标签: php email textarea line-breaks