如何伪造电子邮件

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 4.1,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何伪造电子邮件

Symfony邮件程序的默认行为是立即发送电子邮件消息。ob娱乐下载但是,您可能希望避免与电子邮件服务器的通信对性能的影响,这可能会导致用户在发送电子邮件时等待加载下一页。这可以通过选择“假转盘”而不是直接发送电子邮件来避免。

这使得邮件发送器不尝试发送电子邮件消息,而是将其保存在诸如文件之类的地方。然后,另一个进程可以从线轴读取并负责发送线轴中的电子邮件。目前只支持假脱机到文件或内存。

使用内存的线轴

当您使用假脱机将电子邮件存储到内存中时,它们将在内核终止之前发送。这意味着,只有当整个请求在没有任何未处理的异常或错误的情况下执行时,才会发送电子邮件。要配置此spool,请使用以下配置:

  • YAML
  • XML
  • PHP
1 2 3 4
#配置/包/ swiftmailer.yamlswiftmailer:#……线轴:类型:内存

使用文件的Spool

当您使用文件系统进行假脱机时,Symfony将在给定的路径中为每个邮件服务创建一个文ob娱乐下载件夹(例如。“default”表示默认服务)。此文件夹将包含线轴中每个电子邮件的文件。所以确保这个目录可以被Symfony(或者你的webserver/php)写入!ob娱乐下载

为了使用带有文件的spool,请使用以下配置:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/包/ swiftmailer.yamlswiftmailer:#……线轴:类型:文件路径:/ / spooldir /路径

提示

如果希望将假脱线存储在项目目录中的某个位置,请记住可以使用% kernel.project_dir %参数引用项目的根目录:

1
路径:“% kernel.project_dir % / var / spool”

现在,当你的应用程序发送一封电子邮件时,它不会实际发送,而是添加到线轴。从线轴发送消息是单独完成的。在spool中有一个控制台命令来发送消息:

1
PHP bin/console swiftmailer:spool:send——env=prod

它有一个选项来限制要发送的消息数量:

1
PHP bin/console swiftmailer:spool:send——message-limit=10——env=prod

您还可以设置时间限制,单位为秒:

1
PHP bin/console swiftmailer:spool:send——time-limit=10——env=prod

在现实中,您很可能不希望手动运行此命令。相反,控制台命令应该由cron作业或计划任务触发,并定期运行。

谨慎

当您使用SwiftMailer创建消息时,它会生成一个Swift_Message类。如果swiftmailer服务是惰性加载的,它会生成一个名为Swift_Message_ < someRandomCharacters >

如果使用内存线轴,此更改是透明的,没有影响。但是当使用文件系统假脱机时,消息类被序列化在一个具有随机类名的文件中。问题是这个随机的类名在每次缓存清除时都会改变。因此,如果您发送邮件,然后清除缓存,消息将不会是不可序列化的。

在下一次执行时swiftmailer:线轴:发送将引发一个错误,因为类Swift_Message_ < someRandomCharacters >已经不存在了。

解决方案是使用内存线轴或加载swiftmailer懒惰的选项(见懒惰的服务).

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。