使用PHP和IMAP获取没有原始消息的普通/文本电子邮件正文

时间:2018-06-02 14:16:09

标签: php email parsing imap email-parsing

我尝试从未读电子邮件中提取所有信息,以便将它们添加到数据库中。不幸的是,$email_body有时包含HTML签名,这在普通/文本中看起来不太好。我也不想将引用的文本保存在用户回复的数据库中(我的意思是原始的电子邮件消息;见下文)。我只想保存用户回复。

这是我当前的代码(return false,因为它是Laravel Artisan命令的handle()函数)

<?php
$mailbox = "{mail.example.com:993/imap/ssl}INBOX";
$mailbox_username = "contact@example.com";
$mailbox_password = "secretPassword";

echo "Fetching new emails for $mailbox_username using IMAP from '$mailbox'...";

$mbox_connection = imap_open($mailbox, $mailbox_username, $mailbox_password) or die("Could not connect to IMAP server due of following error: " . imap_last_error());

$unseen_emails = imap_search($mbox_connection, 'UNSEEN');

if($unseen_emails == false) {
    $this->comment("No unseen emails found.");
    return false;
}

foreach($unseen_emails as $email_id) {
    echo "+----------------------------+";
    $email_header = imap_headerinfo($mbox_connection, $email_id);
    $email_body = trim(quoted_printable_decode(imap_fetchbody($mbox_connection, $email_id, 1)));

    echo "subject: " . $email_header->subject;
    echo "message_id: " . $email_header->message_id;
    echo "from-name: " . imap_utf8($email_header->from[0]->personal);
    echo "from-email: " . $email_header->from[0]->mailbox."@".$email_header->from[0]->host;
    echo "body: " . $email_body;
}

imap_close($mbox_connection);

通常情况下,当您回复时,您会发送这样的电子邮件:

Hey,

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.


Best Regards,
<signature>


from: you@example.com
subject: Lorem ipsum dolor sit amet

Hey,

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.


Best Regards,
<signature>

在这种情况下,我只想保存回复:

Hey,

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.


Best Regards,
<signature>

我该怎么做?

我发现了这个:Remove the signature from a MIME encoded email with PHP

是否有任何RFC,它定义了电子邮件回复的方式,以便在此位置剪切它们?

有没有办法删除HTML签名,这些签名被格式化为普通/文本,因为它们看起来非常糟糕?

0 个答案:

没有答案