在没有 symfony 框架的情况下使用 symfony/mailer 组件

Use the symfony/mailer component without the symfony framework

我正在做一个不使用任何框架的项目,我想使用 Symfony Mailer 组件来处理发送电子邮件。

安装部分 (composer require) 处理得很好,所有内容都包含在我的代码中,没有任何错误。但是,我仍然有一个问题:该组件的文档似乎只是为了将其与 symfony 框架一起使用而编写的。 实际上,它指的是自动加载的配置文件 显然不存在于我的应用程序中。

这个实现似乎很棘手,我想知道你们中是否有人遇到过同样的问题,你们想出了什么解决方案?

你的问题也让我想知道只用邮件程序组件发送邮件是多么容易。

所以我从头开始创建了一个新项目,并尝试了 mailer component documentation 之后最简单的版本。


use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Mailer\Transport;
use Symfony\Component\Mime\Email;

class MyMailer
{
    // googleDns format is gmail+smtp://USERNAME:PASSWORD@default
    public function __construct(private string $googleDsn)
    {
    }

    public function send()
    {
        $template = file_get_contents('https://raw.githubusercontent.com/leemunroe/responsive-html-email-template/master/email.html');

        $transport = Transport::fromDsn($this->googleDsn);
        $mailer = new Mailer($transport);

        $email = (new Email())
            ->from('mygmail@address.com')
            ->to('thedelivery@gmail.com')
            ->subject('Time for Symfony Mailer!')
            ->html($template);

        $mailer->send($email);
    }
}

并且我成功收到了我的邮件。我用 gmail 发送邮件,供您参考。 Transport class 应该为您完成发送工作,但如果没有,您可以查看 vendor/symfony/mailer/Transport 文件夹

内部