proxiedmail/laravel-receive-email

Laravel 通过 ProxiedMail 库接收电子邮件,允许创建代理电子邮件并通过 Webhook 或 Rest API 接收电子邮件。

0.0.4 2024-04-22 23:50 UTC

This package is auto-updated.

Last update: 2024-09-23 00:43:49 UTC


README

ProxiedMail 👷‍♀️ 是一个用于创建代理电子邮件和接收 Webhook 或简单地浏览电子邮件列表的简单包。您可以在 https://github.com/proxied-mail/proxiedmail-php-client 找到基本 PHP 库。

欢迎您查看文档

什么是 ProxiedMail?

ProxiedMail 是一款将电子邮件体验提升到新水平的工具,因为它基于“隐私优先”的概念,每次使用独特的电子邮件,使其成为第二密码,同时也让您对通信有更多控制。此外,它还允许您在几秒钟内切换到另一个电子邮件提供商。因为我们有这样的系统,所以我们还旨在将更多功能带入使用电子邮件进行开发的体验。

功能

🛠 使用 ProxiedMail 域名(例如 abc@proxiedmail.comabcd@pxdmail.comabcde@pxdmail.net)创建无限代理电子邮件

🛠 设置转发电子邮件或禁用转发

🛠 设置回调到您的 URL

🛠 在接收到的电子邮件端点浏览接收到的电子邮件

🛠 设置自定义域名。您也可以使用您的域名做所有这些。

🛠 域名到域名转发。以防万一您需要,我们可以通过掩码转发电子邮件,如 *@domainhostedatproxiedmail.com -> *someotherdomain.com。在这种情况下,第一个域的 MX 应指向 ProxiedMail,第二个域应通过 TXT 记录进行验证。

📦 安装

通过 composer

$ composer require proxiedmail/laravel-receive-email

设置服务提供者

此包提供服务提供者的自动发现

如果 Laravel 包自动发现被禁用,请手动将服务提供者添加到 /config/app.php。有一些服务提供者您必须添加

\ProxiedMail\Client\Providers\ProxiedMailServiceProvider::class

发布客户端配置

php artisan vendor:publish --tag=proxiedmail

配置 ProxiedMail 客户端

将您的 ProxiedMail API 令牌放入 /config/proxiedmail.php。您可以在 ProxiedMail API 设置 中找到此令牌。

return [
    'apiToken' => 'YOUR API TOKEN',
    'host' => 'https://proxiedmail.com',
];

🚀 互动示例

此示例演示了创建代理电子邮件、浏览接收到的电子邮件以及通过 Webhook 接收电子邮件。

use ProxiedMail\Client\Bridge\ProxiedMailClient;
use ProxiedMail\Client\Facades\ApiFacade;

class ExampleController
{
    public function browseReceivedEmails(ProxiedMailClient $proxiedMailClient)
    {
        /**
         * @var ApiFacade $api
         */
        $api = $proxiedMailClient->getClient();

        $proxyEmail = $api->createProxyEmail(
            [],
            null,
            null,
            null,
            true
        );


        // while (true) with 100 seconds limit
        foreach (range(0, 180) as $non) {
            echo "PROXY-EMAIL: " . $proxyEmail->getProxyAddress() . "\n";
            echo "Time limit is 3 mins \n";
            echo "Send the email to this proxy-email to get email payload printed here \n";

            //checking webhook receiver

            $receivedEmails = $api->getReceivedEmailsLinksByProxyEmailId($proxyEmail->getId())->getReceivedEmailLinks();
            echo "Amount of received emails: " . count($receivedEmails) . "\n";
            foreach ($receivedEmails as $receivedEmail) {
                echo "Have received email: \n";
                var_dump($receivedEmail);

                echo "\n";
            }

            echo "\n";

            sleep(1);
        }
    }


    public function receiveEmailViaWebhook(ProxiedMailClient $proxiedMailClient)
    {
        /**
         * @var ApiFacade $api
         */
        $api = $proxiedMailClient->getClient();

        $wh = $api->createWebhook(); //creating webhook-receiver
        $proxyEmail = $api->createProxyEmail(
            [],
            null,
            $wh->getCallUrl() //specifying webhook url
        );


        // while (true) with 100 seconds limit
        foreach (range(0, 100) as $non) {
            echo "PROXY-EMAIL: " . $proxyEmail->getProxyAddress() . "\n";
            echo "Send the email to this proxy-email to get email payload printed here";

            //checking webhook receiver
            $whStatus = $api->statusWebhook($wh->getId());

            echo "Webhook STATUS: \n";
            echo "Received: " . ($whStatus->isReceived() ? 'yes' : 'no') . "\n"; //printing webhook status

            //printing payload if received
            if ($whStatus->isReceived()) {
                echo "WEBHOOK PAYLOAD: \n";
                echo json_encode($whStatus->getPayload());
                break;
            }


            echo "\n";

            sleep(1);
        }
    }
}

管理 UI

您可以在 ProxiedMail 上创建并找到 UI,以管理您的域名、电子邮件和 Webhook。

🔧 贡献

请随意 fork 并发送 Pull Requests。此项目遵循 语义化版本 2PSR-2

📄 许可证

GPL3。有关更多信息,请参阅 许可证文件

问题

如有任何问题,请联系 laraclient@pxdmail.com

额外

请查阅我们博客中的文章如何在Laravel中接收邮件。如果您对使用PHP接收邮件感兴趣,请使用纯PHP库

文章:如何在PHP中接收邮件