钥匙要点
Swift Mailer是一个功能强大的,基于组件的库,允许程序员使用面向对象的方法轻松发送电子邮件,而SPL扩展名则最小的PHP 5.2或更高要求,最小内存限制为8MB。
Swift Mailer可以通过梨安装,也可以通过使用FTP上传文件来安装。它由150多个类别和接口组成,包括邮件,运输商,MIME实体,编码器和插件。- >
Swift Mailer提供了功能,可以与多个收件人,一个主题和平坦的主体创建电子邮件。它还允许附件,自定义SMTP配置以及跟踪未收到电子邮件的收件人。
Swift Mailer还具有一个装饰插件,可让您将相同的电子邮件发送给具有较小差异的几个收件人,例如电子邮件主体内的收件人名称。这对于将新闻通讯发送给订阅者等任务是有益的。- >
以编程方式发送电子邮件是程序员必须经常处理的常见任务。尽管您可以使用PHP的本机功能,但它们可能太低,尤其是当您想将一个或多个文件附加到消息时。如果您不想使用本机函数,或者您想使用面向对象的方法发送邮件,那么这就是您的文章。我将向您介绍Swift Mailer,这是一个功能强大的基于组件的库,可以让您轻松发送电子邮件。
Swift Mailer始于2005年,是一个提供多个类的库,可让您从PHP脚本或Web应用程序中发送电子邮件。 Swift Mailer有一些要求,但是它们很小。图书馆需要PHP 5.2或更高,具有SPL扩展名,最小内存限制为8MB。
引用正式文档,安装Swift Mailer是微不足道的。通常,这只是将提取的源文件上传到您的Web服务器的一种情况。安装库的最简单方法是通过梨或使用FTP上传文件。
从梨通道安装只是两个类型命令的问题:
-
如果您使用共享托管,并且无法访问命令壳,那么第二种方法可能是最容易的方法。只需从官方网站下载图书馆并上传LIB文件夹即可。
Swift Mailer classs -
Swift Mailer由150多个类别和界面组成,将其分成几个组件。他们每个人都有一个特定的目的。
Mailer:由Swift_mailer类实现的Mailer是库中的中央类,也是通过方法发送()实际发送电子邮件的中央类。它的构造函数接受了实现接口swift_transport的类的实例,该类别允许您使用自定义SMTP发送电子邮件。
pear channel-discover pear.swiftmailer.org
pear install swift/swift
>运输商:他们实现接口Swift_transport,其范围是与服务进行通信以传递电子邮件。主要类是Swift_smtptransport,它使用SMTP协议,Swift_SendMailTransport,它与本地sendmail可执行文件进行通信,而Swift_mailtransport则依赖于php natival Mail()函数。
> MIME实体:这是库中的关键组件。您将用来指定接收器,主题,身体等的类,称为Swift_message,由几个分组在一起的实体组成。实体的两个示例是附件和电子邮件标头。
>编码器:此组件不是您要处理的,因为它在幕后行动。编码器有两种类型:base64和引用打印机。他们的目标是将内容转换为符合RFC规范的格式。
>插件:这些用于扩展Swift Mailer的基本功能。某些插件是防液,它允许您限制单个SMTP连接期间发送的消息数,记录器,用于登录发送过程中发生的事情,而Decorator则是一个惊人的插件,它允许您使用电子邮件模板并在电子邮件文本中更改几个差异。
一个基本示例
到目前为止和我在一起吗?好的。现在,您已经了解了如何在图书馆中组织组件,让我们弄脏双手,看看如何利用Swift Mailer的力量和灵活性。在第一个非常简单的示例中,我将向您展示一个电子邮件的创建,该电子邮件具有两个收件人,一个主题和一个普通文本的主体。创建后,它将发送给收件人。
以下代码使用上一节中提到的三个类:swift_mailtransport,swift_mailer和swift_message。此外,请注意代码的第一行,即需要使用库需要的Swift Mailer的自动加载器。
如您所见,Swift_mailtransport用于创建一个将使用本机PHP Mail()函数的传输层实例。然后我创建了一个swift_message
您可以将其视为电子邮件对象的实例。在以下几行中,我使用Setto()方法,使用setSubject(),使用setBody()的电子邮件主体以及使用setFrom()方法来设置收件人。通过定义的层和创建的电子邮件,是时候实际发送电子邮件了,该电子邮件是使用Swift_mailer类的send()方法完成的。
一个带有附件的示例
pear channel-discover pear.swiftmailer.org
pear install swift/swift
毫无疑问,附件是当今电子邮件系统的主要内容。没有他们,没有人可以活着。这个稍微复杂的示例将向您展示如何发送一封电子邮件,不仅具有附件,而且还具有其他功能。
>另外两个接收器,一个在CC中,第二个接收器使用setcc()和setBcc()。
>使用附加方法从磁盘检索的一个附件。
>使用swift_smtptransport类的自定义SMTP配置。
知道哪些收件人尚未使用send()方法的第二个参数收到电子邮件。
>
我使用了不同的传输层,一个使用Swift_smtptransport类设置的SMTP
pear channel-discover pear.swiftmailer.org
pear install swift/swift
。它接受两个参数:SMTP服务器和连接端口。您可以使用该实例设置适当的用户名和密码,以使用setUsername()和setPassword()方法访问服务器。然后,就像第一个示例一样,我创建了一个swift_message对象,并设置收件人,主题等。但是,这次我还利用了SETCC()和SETBCC()
正如您可能猜到的那样,方法可以使您设置碳复制和盲碳复制收件人。
此示例的关键方法是附加(),该方法使用static方法从硬盘中获取的文件(),该静态方法从()沿着要附加作为其参数附加的文件的路径。请注意,这次我还使用Send()方法的第二个参数打印了检索到的失败收件人的数量。
使用模板
第三个也是最后一个示例向您展示了如何使用Decorator插件,非常适合将新闻通讯发送给订户。它使您可以将相同的电子邮件发送给几个具有较小差异的收件人,例如电子邮件主体内的收件人名称。该插件将在模板内(主体)内部查看,并将用设定值替换占位符。
要使用插件,您首先需要使用registerplugin()方法进行注册,然后构建和使用替换值数组。在以下代码中,我将放置两个占位符,
> username
和> transactions
,这些占位符将通过参考用户电子邮件的值替换。
装饰器插件构造函数接受一个参数:一个值阵列以替换占位符。此数组的每个值都使用用户的电子邮件以及包含占位符补充对的子阵列。这正是$替换阵列的目的。在上面的示例中,作为占位符,我在两个括号内使用了一个字符串(即{fullname})但是您可以使用任何想要的东西。这次,我没有像以前一样将所有收件人设置为同一语句中的所有收件人,我使用了循环。之所以这样做,是因为插件拦截了发送过程,读取收件人电子邮件,并使用替换阵列的值替换了占位符。
结论
在本文中,我展示了如何使用Swift Mailer轻松发送电子邮件。如您所见,这是一个非常强大的库,可以使用OOP方法来做很多事情。当然,Swift Mailer还有很多其他方法和课程,我在本文中没有介绍过。您可以在官方文档中研究它们,但这应该足以让您开始毫无麻烦地发送电子邮件。
通过fotolia
图像
经常询问有关Swift Mailer的问题
>如何使用Composer安装Swift Mailer?
> Swift Mailer可以使用Composer轻松安装Composer,该工具是PHP中依赖关系管理的工具。要安装Swift Mailer,您需要在系统上安装作曲家。安装了作曲家后,您可以通过在项目目录中运行以下命令来安装Swift Mailer:作曲家需要“ Swiftmailer/SwiftMailer:^6.0”。此命令告诉作曲家将Swift Mailer软件包及其依赖项下载到您的项目中。
>
>我如何使用Swift Mailer发送电子邮件?
>
>与Swift Mailer一起发送电子邮件涉及创建消息,配置邮件器并发送消息。这是如何使用Swift Mailer发送电子邮件的基本示例:
require_once'/path/to/vendor/autoload.php'php';
> - > setSubject('Hello')
- > setFrom(['john@doe.com'=>'john doe'])
> - > setto(['receiver@domain.org','elethn@domain.org'=>'a name'])
- > setBody('这是消息本身');
> $ transport =(new Swift_smtptransport('smtp.example.org',25))
> - > setUsername('yourSername'')
> - > setPassword('your password');
$ mailer = new swift_mailer($ transport);
$ $ result = $ mailer-> send($ message) >如何使用Swift Mailer将附件添加到电子邮件中?您可以从路径,字符串或现有的Swift附件实例附加文件。这是如何从路径附加文件的示例:
$ message =(new swift_message()) - > setSubject('hello'')
- > setfrom(['john john @doe.com'=>'john doe'])) - > setto(['receiver@domain.org'])
- > setBody('这是消息本身')
- >附加(swift_attachment :: frompath('path/to/to/to/image.jpg'));
>如何使用Swift Mailer发送HTML电子邮件?
Swift Mailer允许您通过将邮件的主体设置为HTML字符串并将内容类型设置为“ text/html”来发送HTML电子邮件。这是一个示例:
$ message =(new Swift_message())
- > setSubject('Hello')
- > setFrom(['john@doe.com'=>'john doe']))
- > setto(['recevive@domain.org'])
- > setBody('
这是 html 消息本身
','text/html');>在发生错误时,如何处理Swift Mailer中的错误?您可以捕获这些例外来处理错误。这是一个示例:
尝试{
$ result = $ mailer-> send($ messagy)发送电子邮件:'。美元设置。这是一个示例:
$ transport =(new Swift_smtptransport('smtp.gmail.com',465,'ssl'))
> - > setUsername('gmail username'your gmail username'') > setPassword('您的gmail密码');
>如何使用Swift Mailer发送多个电子邮件?
> >您可以通过创建多个消息实例并使用同一Mailer实例发送多个电子邮件,并通过Swift Mailer发送多个电子邮件。这是一个示例:
$ message1 =(new swift_message())
- > setSubject('Hello')
- > setFrom(['john@doe.com'=>'john john doe']))
- > setto(['receviver1@domain.org'])
> - > setBody('这是消息本身');
$ message2 =(new Swift_message())
- > setSubject('Hello') - > setFrom(['john@doe.com'=>'John Doe ']))
- > setto(['receiver2@domain.org'])
- > setBody('这是消息本身');
$ result1 = $ mailer-> send($ message1);
$ result2 = $ mailer-> send($ message2);
>
>我如何使用Swift使用SYMFONY?
Swift Mailer与Symfony集成在一起,可以用作服务。您可以通过获取邮件服务并使用它发送消息来与Swift Mailer一起发送电子邮件。这是一个示例:
$ message =(new Swift_message())
- > setSubject('Hello')
- > setFrom(['john@doe.com'=>'john doe']))
- > setto(['recevive@domain.org'])
- > setBody('这是消息本身');
$ this-> get('mailer') - > send($ message);
>>如何使用Swift Mailer?
>您可以通过在消息实例上调用SetPriority方法来设置电子邮件的优先级。优先级是1(最高)和5(最低)之间的整数。这是一个示例:
$ message =(new Swift_message())
- > setSubject('Hello')
- > setFrom(['john@doe.com'=>'john doe']))
- > setto(['recevive@domain.org'])
> setBody('这是消息本身')
> - > setPriority(1);
>如何使用Swift Mailer异步发送电子邮件?但是,您可以使用消息队列实现这一目标。您可以加入消息,然后将它们发送到单独的过程中。这允许您的应用程序继续处理其他任务而无需等待发送电子邮件。>
以上是PHP主|与Swift Mailer一起发送电子邮件的详细内容。更多信息请关注PHP中文网其他相关文章!