Laravel发送的邮件未显示在已发送文件夹的问题求助
各位Laravel开发者们,我遇到一个头疼的问题想请教大家:
我在项目的CRM模块里做了一套邮件发送功能,支持配置to、cc、bcc、附件、邮件正文和主题,还允许用户选择不同的账户来发送邮件。最近用Gmail账户测试的时候发现,发送出去的邮件并没有出现在Gmail的「[Gmail]/Sent Mail」文件夹里。我当然不想只做Gmail专属的适配,希望能找到通用的解决办法,有没有朋友遇到过类似的情况,能给点思路或者解决方案吗?
我自己先梳理了几个可能的方向,也欢迎大家补充纠正:
通过IMAP同步邮件到已发送文件夹:很多邮件服务商(比如Gmail、Outlook)都支持IMAP协议,我们可以在Laravel发送完邮件之后,用IMAP连接到对应的发送账户,把刚发送的邮件内容写入到服务商对应的已发送文件夹里。比如Gmail的已发送文件夹路径是
[Gmail]/Sent Mail,Outlook可能是Sent Items,需要做一下不同服务商的适配。这里可以用php-imap扩展或者第三方包来简化开发。发送时给自己添加Bcc副本:这个是比较简单的临时方案,就是在发送邮件的时候,把发送账户的邮箱地址添加到
bcc列表里,不过有些服务商可能不会自动同步到已发送文件夹,而且如果用户介意自己收到重复邮件的话,这个方案就不太友好。使用邮件服务商的API替代SMTP:比如Gmail用Gmail API、Outlook用Microsoft Graph API,这些API在发送邮件时通常会自动将邮件存入已发送文件夹,但缺点是需要针对不同的服务商做单独的API集成,通用性会差一些,不过如果项目需要支持主流邮件服务商,做个适配层也不是不行。
有没有更优雅的通用解决方案呢?期待大家的分享!
备注:内容来源于stack exchange,提问作者OKKO

