PHP';s的邮件功能似乎可以删除换行符和制表符
我有一个助手类,用于通过PHP发送电子邮件:PHP';s的邮件功能似乎可以删除换行符和制表符,php,email,newline,line-breaks,Php,Email,Newline,Line Breaks,我有一个助手类,用于通过PHP发送电子邮件: <?php class Mailsend { public $from; public $to; public $subject; public $message; public static function mail() { return new Mailsend(); } public function from($from) { $this-
<?php
class Mailsend {
public $from;
public $to;
public $subject;
public $message;
public static function mail() {
return new Mailsend();
}
public function from($from) {
$this->from = $from;
return $this;
}
public function fromName($fromName) {
$this->fromName = $fromName;
return $this;
}
public function to($to) {
$this->to = $to;
return $this;
}
public function subject($subject) {
$this->subject = $subject;
return $this;
}
public function message($message) {
$this->message = $message;
return $this;
}
public function send() {
$mailFrom = $this->from;
$mailFromName = $this->fromName;
$mailTo = $this->to;
$mailSubject = $this->subject;
$mailSignature = "\n\n-- \n";
$mailSignature .= "Vaš, Format.ba - Primjenjene Vještine.\n";
$mailSignature .= "Za više informacija posjetite nas na: http://www.format.ba/\n";
$mailBody = $this->message . "\n";
$mailBody .= $mailSignature;
$mailHeader = "From: $mailFromName <$mailFrom>\r\n";
$mailHeader .= "MIME-Version: 1.0\r\n";
$mailHeader .= "Content-type: text/html; charset=UTF-8\r\n";
$mailHeader .= "Reply-To: $mailFromName <$mailFrom>\r\n";
$mailHeader .= "X-Mailer: Mailsend.php\r\n";
$mailHeader .= "X-Sender-IP: {$_SERVER['REMOTE_ADDR']}\r\n";
$mailHeader .= "Bcc: $mailFromName <$mailFrom>\r\n";
$mailParams = "-f$mailFrom";
$mailBody = str_replace(' ', '', $mailBody);
return mail($mailTo, $mailSubject, $mailBody, $mailHeader, $mailParams);
}
public function valid($email) {
if (!preg_match("/^[^@]{1,64}@[^@]{1,255}$/", $email)) {
return false;
}
$email_array = explode("@", $email);
$local_array = explode(".", $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
if (!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i])) {
return false;
}
}
if (!preg_match("/^\[?[0-9\.]+\]?$/", $email_array[1])) {
$domain_array = explode(".", $email_array[1]);
if (sizeof($domain_array) < 2) {
return false;
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if (!preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/", $domain_array[$i])) {
return false;
}
}
}
return true;
}
}
正如你在这个例子中看到的,有很多空格是由“空格”缩进的,而不是制表符
当我将该消息发送到我的一封电子邮件时,我得到以下输出:
您好,兹拉坦欢迎访问我们的网站Domain.tdl。你现在可以
使用我们在这里提供的所有服务。访问:www.domain.tdl-
有关我们服务的更多信息和新闻!欢迎
它只是以某种方式剥离了所有的换行符和两个以上的长度空白,并将它们合并在一起,所以我失去了最初的电子邮件格式
我认为,Mailsend
中的这一行可能会导致以下问题:
$mailBody = str_replace(' ', '', $mailBody);
但事实并非如此,到目前为止,我还没有找到任何原因来解释为什么会发生这种情况,也无法阻止这种情况继续下去
有人有过类似的经历吗?是否可能我自己的代码中缺少了某些内容?将其与
$message = "Hello, " . $model->fullname . "<br>,
Welcome to our Website, Domain.tdl. You are now able to use all of our services which we provide here.<br>
Visit: www.domain.tdl - for more information and news about our services!<br>
Greets!";
$message=“你好”$型号->全名。“
,
欢迎访问我们的网站Domain.tdl。您现在可以使用我们在这里提供的所有服务。
访问:www.domain.tdl-有关我们服务的更多信息和新闻!
“欢迎!”;
将其与
$message = "Hello, " . $model->fullname . "<br>,
Welcome to our Website, Domain.tdl. You are now able to use all of our services which we provide here.<br>
Visit: www.domain.tdl - for more information and news about our services!<br>
Greets!";
$message=“你好”$模型->全名。“
,
欢迎访问我们的网站Domain.tdl。您现在可以使用我们在这里提供的所有服务。
访问:www.domain.tdl-有关我们服务的更多信息和新闻!
“欢迎!”;
使用
而不是\r\n
添加此标题以使您的内容具有HTML格式:
Content-type: text/html; charset=UTF-8
要插入选项卡时,请使用多个
。使用
而不是\r\n
添加此标题以使您的内容具有HTML格式:
Content-type: text/html; charset=UTF-8
要插入选项卡时,请使用多个
。您使用的标题如下:
$mailHeader .= "Content-type: text/html; charset=UTF-8\r\n";
但我们将要发送纯文本电子邮件。换成
$mailHeader .= "Content-type: text/plain; charset=UTF-8\r\n";
或者将您的电子邮件格式化为html,您使用的标题如下:
$mailHeader .= "Content-type: text/html; charset=UTF-8\r\n";
但我们将要发送纯文本电子邮件。换成
$mailHeader .= "Content-type: text/plain; charset=UTF-8\r\n";
或者将您的电子邮件格式化为html,是的。。。在任何人将此标记为可能的副本之前。。。我在STO上找到的答案中,没有一个是针对同一个问题的,对我没有帮助!不,它不会移除它。但是你假设客户会尊重这些标签和空格(这是错误的)你如何阅读电子邮件?是你的邮件阅读器导致了这个问题吗?@zerkms相信我,这不是我目前最大的问题:)我想解决这个问题,我在这个问题中详细解释了这个问题!:)@兹拉坦·奥:我再重复一遍:
mail()
没有任何条纹,空格和制表符都在电子邮件中。但html客户端确实将多个空格折叠成一个空格。。。在任何人将此标记为可能的副本之前。。。我在STO上找到的答案中,没有一个是针对同一个问题的,对我没有帮助!不,它不会移除它。但是你假设客户会尊重这些标签和空格(这是错误的)你如何阅读电子邮件?是你的邮件阅读器导致了这个问题吗?@zerkms相信我,这不是我目前最大的问题:)我想解决这个问题,我在这个问题中详细解释了这个问题!:)@兹拉坦·奥:我再重复一遍:mail()
没有任何条纹,空格和制表符都在电子邮件中。但html客户端确实将多个空格折叠为一个空格。我是否应该修改邮件函数的标题?@ZlatanO。不,没有必要。我真傻!直到现在,我还没有注意到这是text/html输出格式!nl2br:)真的变魔术了!谢谢你的指导!我会在2-3分钟内接受你的回答!我应该修改邮件功能的标题吗?@ZlatanO。不,没有必要。我真傻!直到现在,我还没有注意到这是text/html输出格式!nl2br:)真的变魔术了!谢谢你的指导!我会在2-3分钟内接受你的回答!