通过aws workmail到ec2托管php脚本在amazonses上托管电子邮件

fhity93d  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(410)

我有一个网站托管在亚马逊ec2和我的网站电子邮件地址托管在亚马逊ses,我们也使用亚马逊工作邮件访问电子邮件和发送电子邮件。然而,现在我们想做的是管道所有电子邮件发送到我们的网站电子邮件地址到一个php-mysql脚本(我们正在建立一个通信管理系统)。
但是,我找不到任何关于如何将接收到的电子邮件转发到aws工作邮件收件箱到外部托管php文件的建议或文档?

wztqucjr

wztqucjr1#

您正在寻找的服务是aws简单电子邮件服务(ses)。aws在2015年增加了对入站电子邮件处理的支持。
此处为文档
要开始,您需要在ses中配置和验证您的域,并指向域dns MX 按照控制台中的指示记录到ses。
在此基础上,您可以根据发送消息的目标地址创建规则:lambda函数;s3级;社交网络;或者工作邮件。
对于在ec2上进行处理的情况,您需要将消息发布到sns主题,并使用预订的sqs队列。然后,ec2上的应用程序服务器需要在工作线程中使用来自sqs的消息。
可以使用它来处理您的工作邮件所在域上的所有邮件,但是,除非您的特定产品需要它—我建议您专门为自动化处理的电子邮件地址设置一个子域。

hivapdat

hivapdat2#

第二个答案,因为我没有正确地阅读问题(哎呀,对不起)。
电子邮件附件使用mime编码作为邮件正文的一部分发送。当你收到来自ses的邮件时,你会把它们作为邮件正文的一部分以这种原始格式发送。
但是,当发送到sns时,ses会将消息大小(包括附件)限制为150kb。
为了支持更大的消息(30mb),您需要将它们存储在s3中。要在新消息到达时接收sns事件,您需要为其设置s3事件通知 s3:ObjectCreated:* .
从这里开始,过程是一样的——应用程序将需要从s3中检索对象,并从对象体中提取消息和附件,完成后可以选择从s3中删除原始消息。
用于提取附件的惟一一个外观不错的php库是php mime邮件解析器,在他们的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)
}

相关问题