如何使用PHPMailer删除裸换行符

2022-08-08 00:00:00 office365 php phpmailer

我已经使用PHPMailer很长一段时间了,没有出现任何问题,直到最近我们公司从一个临时的Exchange服务器迁移到Office365。我们使用PHPMailer,因为它允许我们发送附件。我们实际上收到了来自Office365的回复,其中指出"您的邮件包含NameOfCompanyServer.com的电子邮件服务器不支持的无效字符(裸换行符)"。

所以我的问题是,在使用PHPMailer时,如何删除"空换行符"?或者,是否有其他第三方PHP支持的邮件程序可以用来发送附件?

以下是我的PHP脚本示例

<?php
require_once("phpMailerclass.phpmailer.php");
require_once("phpMailerclass.smtp.php");
$mail             = new PHPMailer();
$body             = file_get_contents('OFFICE365.txt');
$body             = eregi_replace("[]",'',$body);

$mail->IsMail();
$mail->SMTPDebug  = 3;
$mail->Host       = "companyOffice365-domainhere.mail.protection.outlook.com"; 
$mail->Port       = 25; 
$mail->Username   = "";
$mail->Password   = ""; 
$mail->SMTPSecure = 'tls';
$mail->SetFrom('someone@companyOffice365-domainhere.com', 'Mailer');
$mail->AddReplyTo("NoReply@companyOffice365-domainhere.com","");
$mail->Subject    = "Email Test via IsMail, using OFFICE365";
$mail->MsgHTML($body);
//Recipients
$address = "emailaddress@somewhere.com";

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}
?>

希望有人能帮忙,谢谢 B


解决方案

查看示例时,我在任何标题信息(例如From和To地址)中都没有看到附件,也没有看到裸换行符,因此裸换行符的源似乎是您要作为正文导入的文件,以下php语句将用符合标准的行尾顺序(回车符后跟换行符)替换$Body中的裸换行符

$BODY=preg_REPLACE(‘/(?<;!) /‘,&Q; ";,$BODY);

此正则表达式使用";looking";查找要替换的换行符。 环顾四周有四种风格,积极的向前看,消极的向前看,积极的回顾和消极的回顾。在这种情况下,我们将使用负面回顾。也就是说,我们正在寻找前面没有回车符的换行符。圆括号声明了一个环视,更具体地说,是一个左括号,后跟一个问号(必填),然后是一个环视表达式,然后是右括号。如果问号后面跟一个小于号,就像在我的解决方案中一样,那么这是回顾,否则就是展望未来。接下来是一个感叹号,表示对周围持否定态度,或者是一个等号,表示对周围表示正面。在本例中,我们使用了感叹号。最后是要寻找的角色。在我们的例子中,是回程。因此,它要求查找前面没有回车符的所有换行符,并将其替换为回车符换行符序列。

相关文章