Mandrill通过Laravel/PHP发送电子邮件

Ste*_*ent 2 php laravel mandrill

我想知道是否有人可以帮我解决一个问题我通过Mandrill研究与Laravel和入站电子邮件处理相关的问题.基本上我希望能够通过Mandrill接收电子邮件并将它们存储在我的Laravel数据库中.现在我不确定我是否用错误的眼睛阅读文档,但Mandrill说它处理入站电子邮件和出站,但我开始认为Mandrill处理入站电子邮件详细信息而不是到实际的入站电子邮件,例如邮件是否已发送等.

我创建了一个新的Mandrill帐户,创建了一个API密钥,创建了一个入站域和我网站的相应子域(例如inboundmail.myproject.co.uk),设置MX记录并且MX记录显示为有效.从那里我已经设置了一条路线(例如queries@inboundmail.myproject.co.uk)和相应的webhook(myproject.co.uk/inboundmail.php),并在此webhook中尝试了API中给出的各种示例(https://mandrillapp.com/api/docs/inbound.php.html),例如添加新路由,检查路由以及尝试添加新域.他们都工作并产生了正确的结果,所以我对Mandrill的身份验证没有问题,但我真正的问题是是否有一个特定的webhook来处理接收传入的邮件?

我不能帮助,但感觉自己是一个绝对的白痴问这个问题,因为我确定答案要么是盯着我,要么是通过Mandrill不可能.

提前致谢.

Ste*_*ent 6

感谢duellsy和debest的帮助,最后我找到了一个脚本并对其进行了扩展,将邮件添加到我自己的数据库中并相应地样式/显示它.希望这可以帮助可能遇到同样麻烦的人:

<?php

require 'mandrill.php';

define('API_KEY', 'Your API Key');
define('TO_EMAIL', 'user@example.com');
define('TO_NAME', 'Foo Bar');

if(!isset($_POST['mandrill_events'])) {
    echo 'A mandrill error occurred: Invalid mandrill_events';
    exit;
}
$mail = array_pop(json_decode($_POST['mandrill_events']));

$attachments = array();
foreach ($mail->msg->attachments as $attachment) {
    $attachments[] = array(
        'type' => $attachment->type,
        'name' => $attachment->name,
        'content' => $attachment->content,
    );
}

$headers = array();
// Support only Reply-to header
if(isset($mail->msg->headers->{'Reply-to'})) {
    $headers[] = array('Reply-to' => $mail->msg->headers->{'Reply-to'});
}

try {
    $mandrill = new Mandrill(API_KEY);
    $message = array(
        'html' => $mail->msg->html,
        'text' => $mail->msg->text,
        'subject' => $mail->msg->subject,
        'from_email' => $mail->msg->from_email,
        'from_name' => $mail->msg->from_name,
        'to' => array(
            array(
                'email' => TO_EMAIL,
                'name' => TO_NAME,
            )
        ),
        'attachments' => $attachments,
        'headers' => $headers,
    );
    $async = false;
    $result = $mandrill->messages->send($message, $async);
    print_r($result);
} catch(Mandrill_Error $e) {
    // Mandrill errors are thrown as exceptions
    echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
    // A mandrill error occurred: Mandrill_PaymentRequired - This feature is only available for accounts with a positive balance.
    throw $e;
}
?>
Run Code Online (Sandbox Code Playgroud)