插件
插件存在扩展或修改的行为迅速梅勒。他们响应事件,在传输期间发送被解雇。
有很多插件提供的基地迅速梅勒包和他们都遵循一个共同的接口来响应事件发射在图书馆。接口是提供给“倾听”每种类型的事件触发和作为期望听事件发生时。
虽然有几个插件提供迅速梅勒开箱即用的,事件系统专门设计为了方便经验丰富的面向对象开发人员编写自己的插件来实现目标,不可能与基础库。
AntiFlood插件
许多SMTP服务器的数量限制在任何一个SMTP消息可以发送连接。AntiFlood插件提供了一种方法来保持在这个极限,同时仍然管理大量的电子邮件。
一个典型的限制为单个连接100封电子邮件。如果您连接到的服务器实施这样一个限制,它期望你断开后的邮件已发送。你可以手动管理这一个循环内,但AntiFlood插件提供了必要的包装器代码,这样你不需要担心这个逻辑。
无论服务器强加的限制,通常是一个好主意可以保守地使用SMTP服务器的资源。发送将会变得缓慢,如果服务器是拥挤所以使用AntiFlood插件不会是个坏主意即使不存在任何限制。
AntiFlood插件的逻辑基本上是立即断开和经常和SMTP服务器每个X发送的电子邮件数量,其中X是一个数字你指定插件。
您还可以指定一个时间周期在几秒钟内迅速梅勒应该暂停/贯通过程之间的脱节。是一个好主意在短时间内暂停(每100封电子邮件说30秒)就给SMTP服务器进程队列和恢复一些资源的机会。
使用AntiFlood插件
AntiFlood插件——像所有插件与梅勒类的添加registerPlugin ()
方法。构造函数需要两个参数:电子邮件暂停后,和可选的秒数暂停。
斯威夫特梅勒发送消息的时候会数一数自上次发送的消息已经贯通。一旦号码打你的指定的阈值就会断开,经常,选择暂停一段指定的时间:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ /创建梅勒使用任何交通工具美元梅勒=新Swift_Mailer (新Swift_SmtpTransport (“smtp.example.org”,25));/ /使用AntiFlood贯通后100封电子邮件美元梅勒- >registerPlugin (新Swift_Plugins_AntiFloodPlugin (One hundred.));/ /暂停并指定一个时间间隔,以秒为单位(30秒)美元梅勒- >registerPlugin (新Swift_Plugins_AntiFloodPlugin (One hundred.,30.));/ /继续正常发送为(美元lotsOfRecipients作为美元收件人){…美元梅勒- >发送(…);}
节流器插件
如果您的SMTP服务器有限制,限制你发送电子邮件的速度,那么你的代码将需要意识到的病原。节流器插件使迅速梅勒以限速反应的速度运行。
许多共享主机不打开他们的SMTP服务器作为一个混战。通常他们有适当的政策(可能是阻止垃圾邮件发送者),只允许发送一个固定数量的电子邮件每小时/天。
节流器插件支持两种病原和每个模式,您将需要做数学计算出你想要的值。插件可以限制基于电子邮件的数量每分钟或传输的字节数计时。
使用节流器插件
节流器插件与梅勒——像所有插件添加类的registerPlugin ()
方法。它有两个需要构造函数参数,告诉它如何做病原。
斯威夫特梅勒发送消息时它将跟踪发送消息的速度发生。如果它意识到,发送是发生得太快,它会使你的程序睡眠()
足够的时间平均速率:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
/ /创建梅勒使用任何交通工具美元梅勒=新Swift_Mailer (新Swift_SmtpTransport (“smtp.example.org”,25));/ /速度限制100封电子邮件计时美元梅勒- >registerPlugin (新Swift_Plugins_ThrottlerPlugin (One hundred.,Swift_Plugins_ThrottlerPlugin::MESSAGES_PER_MINUTE));/ /速率限制为10 mb计时美元梅勒- >registerPlugin (新Swift_Plugins_ThrottlerPlugin (1024年*1024年*10,Swift_Plugins_ThrottlerPlugin::BYTES_PER_MINUTE));/ /继续正常发送为(美元lotsOfRecipients作为美元收件人){…美元梅勒- >发送(…);}
记录器插件
日志记录器插件有助于调试过程中发送。它可以帮助识别为什么拒绝一个SMTP服务器地址,或任何其他很难找的可能出现的问题。
日志记录器插件有两部分。插件本身,连同之一可能的伐木工人,您可以选择使用。例如,在实时记录器可以直接输出消息,或者它可能捕获消息数组中。
另一个显著特点是日志记录器插件的方式改变异常消息。如果异常被抛出,但错误消息并没有提供确凿的信息问题的根源(比如一个模棱两可的SMTP错误)记录器插件包括整个SMTP记录的错误消息,使调试变得更简单的任务。
有一些可用的伐木工附带斯威夫特梅勒,但编写自己的实现非常简单,是通过创建一个短的类实现Swift_Plugins_Logger
接口。
Swift_Plugins_Loggers_ArrayLogger
:保持日志消息的集合在一个数组中。数组内容可以清除或倾倒到屏幕上。Swift_Plugins_Loggers_EchoLogger
:在实时打印输出到屏幕上。方便非常基本的调试输出。
使用日志记录器插件
记录器插件与梅勒——像所有插件添加类的registerPlugin ()
方法。它接受的一个实例Swift_Plugins_Logger
在它的构造函数。
斯威夫特梅勒发送消息时它将记录所有的交互与底层传输使用。根据使用日志记录器的行为会有所不同,但所有的实现提供了一种日志的内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ /创建梅勒使用任何交通工具美元梅勒=新Swift_Mailer (新Swift_SmtpTransport (“smtp.example.org”,25));/ /使用ArrayLogger美元日志记录器=新Swift_Plugins_Loggers_ArrayLogger ();美元梅勒- >registerPlugin (新Swift_Plugins_LoggerPlugin (美元日志记录器));/ /或使用Echo记录器美元日志记录器=新Swift_Plugins_Loggers_EchoLogger ();美元梅勒- >registerPlugin (新Swift_Plugins_LoggerPlugin (美元日志记录器));/ /继续正常发送为(美元lotsOfRecipients作为美元收件人){…美元梅勒- >发送(…);}/ /把日志内容/ /注意:EchoLogger转储在实时转储()没有回声美元日志记录器