📜  如何使用PHP和 IMAP 获取电子邮件?

📅  最后修改于: 2021-08-31 07:53:32             🧑  作者: Mango

使用PHP从 Gmail 帐户读取电子邮件将是 Web 开发人员的一项丰富任务,因为它通过IMAP (互联网消息访问协议)简化了代码。有时,Web 项目或客户可能需要完整管理收件箱电子邮件或从其 Gmail 帐户访问电子邮件内容。此功能在电子邮件营销或电子邮件通讯中也很有用,这些电子邮件将按特定时间表自动发送。因此,在研究 Gmail 帐户访问权限时,应该尝试使用PHP及其 IMAP 功能扩展列出来自 Gmail 帐户的电子邮件。

IMAP 是客户端使用的 Internet 标准协议,用于通过具有 SSL 安全性的 TCP/IP 连接从邮件服务器获取电子邮件。 PHP库中提供的 IMAP 扩展可有效处理其电子邮件结构,并通过与电子邮件服务器通信来访问电子邮件。
我们使用PHP代码连接到 Gmail 服务器,并使用标准 IMAP 函数打开 Gmail 帐户并根据特定条件访问或获取电子邮件。

基本要求:开发功能需要以下条件。

  1. PHP5 或最新的PHP版本。
  2. 在PHP安装中启用 IMAP 扩展。
  3. 在 Gmail 帐户设置中,应启用 IMAP。

在 XAMPP 中启用 IMAP 的步骤:

  1. 转到PHP.ini 配置文件
  2. 搜索“;extension=php_imap.dll”
  3. 去掉分号的开头,它应该是“extension=php_imap.dll”
  4. 同时编辑 max_execution_time = 4000

在 Gmail 帐户中启用 IMAP 的步骤:

  1. 打开 Gmail。
  2. 单击设置。
  3. 选择转发和 POP/IMAP 蓝色选项卡。
  4. 选择“IMAP 访问:”部分和启用 IMAP 单选按钮。
  5. 单击保存更改。
  6. 不要忘记为 Gmail 帐户的安全性较低的应用程序打开访问权限。

注意:对于普通应用程序,IMAP 服务器侦听 143 端口号。

PHP代码:以下是列出来自 Gmail 帐户的电子邮件的 HTML 和PHP代码。要连接到 Gmail,开发者需要在代码中设置个人的“用户名”和“密码”。连接后,我们使用imap_search()函数根据特定条件搜索所有电子邮件或电子邮件。电子邮件以相反的方式排序,以便使用PHP rsort()函数将最新的邮件放在顶部。这个PHP函数按降序对数组进行排序。对于返回的每封电子邮件,都会捕获主题、发件人、部分内容和日期时间消息。 imap_fetchbody()函数获取电子邮件正文的特定部分。因此,要获取电子邮件的纯文本部分,我们可以使用“1.1”选项作为第三个参数。

HTML


  

    
    
  
    

  

    

List Emails from Gmail using PHP and IMAP

       
             
    
           ';                 }// End foreach                 $mailOutput.= '';                 echo $mailOutput;             }//endif                 /* imap connection is closed */             imap_close($conn);             ?>     
  


CSS
body {
   font-family: Arial;
 }
  table {
     font-family: arial, sans-serif;
     border-collapse: collapse;
     width: 100%;
 }
  tr:nth-child(even) {
     background-color: #dddddd;
 }
 td, th {
     padding: 8px;
     width:100px;
     border: 1px solid #dddddd;
     text-align: left;                
 }
 .form-container {
     padding: 20px;
     background: #F0F0F0;
     border: #e0dfdf 1px solid;                
     border-radius: 2px;
 }
 * {
     box-sizing: border-box;
 }
 
 .columnClass {
     float: left;
     padding: 10px;
 }
 
 .row:after {
     content: "";
     display: table;
     clear: both;
 }
 
 .btn {
     background: #333;
     border: #1d1d1d 1px solid;
     color: #f0f0f0;
     font-size: 0.9em;
     width: 200px;
     border-radius: 2px;
     background-color: #f1f1f1;
     cursor: pointer;
 }
 
 .btn:hover {
     background-color: #ddd;
 }
 
 .btn.active {
     background-color: #666;
     color: white;
 }


CSS 代码:以下是上述代码中使用的“style.css”文件的代码。

CSS

body {
   font-family: Arial;
 }
  table {
     font-family: arial, sans-serif;
     border-collapse: collapse;
     width: 100%;
 }
  tr:nth-child(even) {
     background-color: #dddddd;
 }
 td, th {
     padding: 8px;
     width:100px;
     border: 1px solid #dddddd;
     text-align: left;                
 }
 .form-container {
     padding: 20px;
     background: #F0F0F0;
     border: #e0dfdf 1px solid;                
     border-radius: 2px;
 }
 * {
     box-sizing: border-box;
 }
 
 .columnClass {
     float: left;
     padding: 10px;
 }
 
 .row:after {
     content: "";
     display: table;
     clear: both;
 }
 
 .btn {
     background: #333;
     border: #1d1d1d 1px solid;
     color: #f0f0f0;
     font-size: 0.9em;
     width: 200px;
     border-radius: 2px;
     background-color: #f1f1f1;
     cursor: pointer;
 }
 
 .btn:hover {
     background-color: #ddd;
 }
 
 .btn.active {
     background-color: #666;
     color: white;
 }

输出:以下是检索到的主题为“评论”的电子邮件的输出。