用HTML链接替换电子邮件链接,并用HTML <br/>标记替换退货和换行符

时间:2019-02-26 15:57:01

标签: php regex email preg-replace vbulletin

我想使用vBulletin,以HTML而不是纯文本形式发送电子邮件。我使用了nl2br,但这通过删除存储在数据库的电子邮件短语中的\ r \ n标记而破坏了电子邮件文本的布局。

我在线搜索了preg_replace函数,以用
标记替换返回值和换行符。这很好。

我的下一个问题是电子邮件中的链接。使用nl2br,这删除了链接,仅保留了文本。我再次搜索了一种用html标记替换链接的函数,并找到了一个。这很好。

我现在遇到的问题是,电子邮件中有一个“已发送”字样的随机空间。有什么想法为什么会发生以及代码是否可以改进?

这是我的代码。

$linkReplace = preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$1</a>', $message); 
$returnReplace = preg_replace("/\r\n|\r|\n/",'<br/>',$linkReplace); 
$message = $returnReplace; 
$headers = str_replace('Content-Type: text/plain', 'Content-Type: text/html', $headers);  

这是从电子邮件短语中获取的$ message:

  

请勿回复此电子邮件!

     
     

尊敬的$ touserinfo [username],

     

您已经收到来自$ vboptions [bbtitle]的新私人消息,来自   $ fromusername,标题为“ $ plaintext_title”。

     

要阅读原始版本,回复或删除此消息,请   必须在这里登录:$ vboptions [bburl] /private.php

     

这是发送的消息:

     
     

$ plaintext_message

     
     

同样,请不要回复此电子邮件。您必须转到以下   回复此私人消息的页面:$ vboptions [bburl] /private.php

     

祝一切顺利,$ vboptions [bbtitle]

这是电子邮件:

email sent

0 个答案:

没有答案