管道电子邮件托管在亚马逊SES与aws workmail到ec2托管的PHP脚本

时间:2018-01-10 18:48:14

标签: php mysql email amazon-ses amazon-workmail

我有一个亚马逊ec2上的网站,我有亚马逊SES托管的网站电子邮件地址,我们也使用亚马逊工作邮件来访问电子邮件和发送电子邮件。但是现在我们想要做的是将发送到我们网站的所有电子邮件发送到一个php mysql脚本(我们正在建立一个通信管理系统)。

但是我找不到任何关于如何将收到的电子邮件转发到aws workmail收件箱的建议或文档到外部托管的php文件?

2 个答案:

答案 0 :(得分:1)

第二个答案是因为我没有正确地阅读这个问题(哎呀,对不起)。

电子邮件附件使用MIME encoding作为邮件正文的一部分发送。当从SES接收电子邮件时,您将以原始格式获取它们作为邮件正文的一部分。

但是,SES会在发送给SNS时将邮件大小(包括附件)限制为150kb。

要支持更大的邮件(30MB),您需要将这些邮件存储在S3中。要在新邮件到达时收到SNS事件,您需要为s3:ObjectCreated:*设置S3 Event Notification

从那里开始,过程是相同的 - 您的应用程序将需要从S3检索对象,并从对象的主体中提取消息和附件,可选择在完成后从S3中删除原始消息。 / p>

用于提取附件的唯一体面的PHP库是php-mime-mail-parser,并且在他们的GitHub页面上有一个不错的示例。

我已经调整了这个例子来展示相关的部分:

$Parser = new PhpMimeMailParser\Parser();
$Parser->setText($raw_email);

foreach ($Parser->getAttachments(true) as $attachment) {
    echo 'Filename : '.$attachment->getFilename().'<br />'; // logo.jpg
    echo 'Filesize : '.filesize($attach_dir.$attachment->getFilename()).'<br />'; // 1000
    echo 'Filetype : '.$attachment->getContentType().'<br />'; // image/jpeg
    echo 'MIME part string : '.$attachment->getMimePartStr().'<br />'; // (the whole MIME part of the attachment)
}

答案 1 :(得分:0)

您正在寻找的服务是AWS Simple Email Service(SES)。 AWS在2015年增加了对入站电子邮件处理的支持。

Documentation here

要开始使用,您需要配置&amp;在SES中验证您的域,并按照控制台中的指示将域DNS MX记录指向SES。

从那里,您可以根据目的地地址创建规则,以发送以下消息:Lambda Function; S3; SNS;或者工作邮件。

对于您在EC2上处理的情况,您希望使用订阅的SQS队列将消息发布到SNS主题。然后,EC2上的应用程序服务器需要在工作线程中使用来自SQS的消息。

可以使用它来处理您有WorkMail的域上的所有邮件,但是除非您的特定产品需要它 - 我建议专门为自动化处理的电子邮件地址设置子域。 / p>