justinkbruce/utilities 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

justinkbruce/utilities

最新稳定版本:0.025

Composer 安装命令:

composer create-project justinkbruce/utilities

包简介

utilities

README 文档

README

  • PHP 8.2+
  • ext-imap

Installation

composer install

Unit Testing

How to create a unit test

vendor/bin/codecept g:test unit <testName>

Run tests

vendor/bin/codecept run

How to use

Open IMAP connection

use Utilities\EmailReader;

$emailReader = new EmailReader("host", "username", "password", 993);

$mailBox = $emailReader->openMailBox("/imap/ssl");

Both port (default: 993) and flags (default: "/imap/ssl") are optional.

Get an array of mailbox folders to choose from

$folders = $emailReader->getMailBoxFolders();

Open the desired mailbox folder from the returned array

Use the returned folders array to select which mailbox folder you want to open:

$mailBoxFolder = $emailReader->openMailBoxFolder($folders[0]);

Get the headers of all the messages in the selected mailbox folder

$headers = $emailReader->getMailBoxHeaders($mailBoxFolder);

Read a selected message in the mailbox folder

Select which message number you want to read from the mailbox folder:

$messageNumber = 418;

$email = $emailReader->getMessageData($messageNumber, $mailBoxFolder);

Dump the attached files to a specified directory location

If there is an attachment on the email you want to download, supply the email data and a valid directory path:

$directory = "C:\\Users\\user\\Downloads\\";

$emailReader->dumpAttachments($email, $directory);

Set message status

Set flags on messages using the EmailFlag enum:

use Utilities\EmailFlag;

$messageNumberSequence = 2;

$emailReader->setMessageStatus($messageNumberSequence, EmailFlag::Seen->value);

Available flags: EmailFlag::Seen, EmailFlag::Flagged, EmailFlag::Deleted, EmailFlag::Draft, EmailFlag::Answered.

Clear message status

Clear flags from messages using the EmailFlag enum:

use Utilities\EmailFlag;

$messageNumberSequence = 2;

$emailReader->clearMessageStatus($messageNumberSequence, EmailFlag::Seen->value);

Move or copy messages to a different mailbox folder

Important: Some email servers require specific flags to be set before moving messages to a specific folder. For example, on a Gmail server, in order for messages to be moved to the Drafts folder ([Gmail]/Drafts) the message first needs to be flagged as EmailFlag::Draft.

Move:

$messageNumberSequence = 2;

$emailReader->messageMove($messageNumberSequence, $folders[2]);

Copy:

$messageNumberSequence = 2;

$emailReader->messageCopy($messageNumberSequence, $folders[2]);

Delete a message in the mailbox folder

$messageNumber = 2;

$emailReader->messageDelete($messageNumber);

Search for messages

Search for message numbers containing specific criteria

Returns an array of message numbers containing the search criteria. A list of search criteria can be found here: https://www.php.net/manual/en/function.imap-search.php

$searchCriteria = "SUBJECT \"test\"";

$searchResults = $emailReader->search($searchCriteria);

Get the headers for the search results

Requires the search results from the initial search and returns the headers of all the searched emails:

$searchResultHeaders = $emailReader->getSearchResultHeaders($searchResults);

Extract message numbers from search result headers

$messageNumbers = $emailReader->getMessageNumbersForSearch($searchResultHeaders);

Error handling

All methods return an EmailReaderError instance on failure. Error codes are defined in the ErrorCode enum:

use Utilities\EmailReaderError;
use Utilities\ErrorCode;

$result = $emailReader->openMailBox();

if ($result instanceof EmailReaderError) {
    $error = $result->getError();
    echo $error->errorCode;    // e.g. "80002"
    echo $error->errorMessage; // e.g. "Failed to open imap stream"
}

Close the IMAP connection

$emailReader->close();

统计信息

  • 总下载量: 99
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2019-08-22