当前位置: 首页 > 编程笔记 >

PHP处理postfix邮件内容的方法

子车凌龙
2023-03-14
本文向大家介绍PHP处理postfix邮件内容的方法,包括了PHP处理postfix邮件内容的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了PHP处理postfix邮件内容的方法。分享给大家供大家参考。具体如下:

<?php
//从输入读取到所有的邮件内容
$email = "";
$fd = fopen("php://stdin", "r");
while (!feof($fd)) {
 $email .= fread($fd, 1024);
}
fclose($fd);
//记录所有的内容,测试
file_put_contents("/tmp/mail/".time(), $email);
//处理邮件
$lines = explode("\n", $email);
// empty vars
$from = "";
$date = "";
$subject = "";
$message = "";
$splittingheaders = true;
for ($i=0; $i<count($lines); $i++) {
 if ($splittingheaders) {
  // look out for special headers
  if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) {
   $subject = $matches[1];
  }
  if (preg_match("/^From: (.*)/", $lines[$i], $matches)) {
   if(strpos($lines[$i],"<")){
    //the name exist too in from header
    $data = explode('<',$lines[$i]);
    $from = substr(trim($data[1]),0,-1);
   }else{
    //only the mail
    $from = $matches[1];
   }
  }
  if (preg_match("/^Date: (.*)/", $lines[$i], $matches)) {
   $date = $matches[1];
  }
 } else {
  // not a header, but message
  $message .= $lines[$i]."\n";
 }
 if (trim($lines[$i])=="") {
  // empty line, header section has ended
  $splittingheaders = false;
 }
}
$when = date("Y-m-d G:i:s");
$data = explode('@',$from);
$username = $data[0];
//记录到数据库
$sql = "insert into mails ( `username`, `from`, `subject`, `date`, `message`) values ( '$username', '$from', '$subject', '$when', '$message')";
//测试
file_put_contents("/tmp/mail2.log", $sql);
?>

希望本文所述对大家的php程序设计有所帮助。

 类似资料:
  • HTTP客户端可能发送一些协议头来告诉服务端它们已经看过了哪些资源。这在获取网页(使用HTTPGET请求)时非常常见,可以避免发送客户端已经获得的完整数据。然而,相同的协议头可用于所有HTTP方法(POST, PUT, DELETE, 以及其它)。 对于每一个Django从视图发回的页面(响应),都会提供两个HTTP协议头:ETag和Last-Modified。这些协议头在HTTP响应中是可选的。

  • 问题内容: 背景 将XML文档写入浏览器的响应流,并使浏览器显示“另存为”对话框。 问题 请考虑以下方法: 在Firefox中,XML内容显示在浏览器窗口中。在IE 7中,不会显示XML内容-您必须查看文档源。两种情况都不是理想的结果。 该网页对该按钮使用以下代码: 生成的XML 并非以 开头,而是XML内容类似于: 更新#1 请注意以下代码行: 更新#2 使用是问题。一个正常的表现如预期。使用可

  • 我目前正在将我的docker部署迁移到k8s清单,我想知道如何处理秘密。目前,我的docker容器获取/run/secrets/app_secret_key以env-var的形式获取容器内的敏感信息。但与k8s机密处理相比,这有什么好处吗?因为在另一方面,我也可以在我的声明中这样做。yaml: 然后直接将秘密作为env变量放入容器中...我能够注意到的唯一区别是,如果我在容器内提取/run/sec

  • 本文向大家介绍php文件下载处理方法分析,包括了php文件下载处理方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php文件下载的处理方法。分享给大家供大家参考。具体分析如下: php能够处理多种条件的文件下载,先来看下面示例: 分析上述代码: 第一行代码是强制下载; 第二行代码是给下载的内容指定一个名字; 第三行代码是把下载的内容读进文件中。   一直以为要在一个页面中同时下载多

  • 我在MonoForAndroid中有一个活动,它利用Zaxy. Net. Mobile在Android上扫描条形码。就扫描和返回结果而言,一切都很好。但是,当我尝试处理scanOverlie上的任何事件时,我得到nullRe的异常。我的代码在下面,任何帮助都将不胜感激。 上面的所有代码都工作正常。但是,当我尝试处理布局上的完成按钮时,我得到了NullRe的异常 下面是例外的详细信息

  • 问题内容: 我正在尝试阅读我的消息,我可以获取它来打印标题,但发件人和内容显示得很滑稽。这是我用来显示消息的代码: 输出如下: 为什么不打印出from语句的实际电子邮件地址?为什么不打印出实际的身体内容?(我只是在纯文本中很有趣。) 整个代码: 谢谢! 问题答案: 对于纯文本和html消息: 对于分段消息: