搜索
首页后端开发php教程PHP主|与Swift Mailer一起发送电子邮件

PHP Master | Sending Email with Swift Mailer

PHP主|与Swift Mailer一起发送电子邮件

钥匙要点

    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中文网其他相关文章!

    声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    在Laravel中使用Flash会话数据在Laravel中使用Flash会话数据Mar 12, 2025 pm 05:08 PM

    Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

    php中的卷曲:如何在REST API中使用PHP卷曲扩展php中的卷曲:如何在REST API中使用PHP卷曲扩展Mar 14, 2025 am 11:42 AM

    PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

    简化的HTTP响应在Laravel测试中模拟了简化的HTTP响应在Laravel测试中模拟了Mar 12, 2025 pm 05:09 PM

    Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

    在Codecanyon上的12个最佳PHP聊天脚本在Codecanyon上的12个最佳PHP聊天脚本Mar 13, 2025 pm 12:08 PM

    您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

    在Laravel中发现文件下载的存储::下载在Laravel中发现文件下载的存储::下载Mar 06, 2025 am 02:22 AM

    Laravel框架的Storage::download方法提供了一个简洁的API,用于安全地处理文件下载,同时管理文件存储的抽象。 以下是一个在示例控制器中使用Storage::download()的例子:

    解释PHP中晚期静态结合的概念。解释PHP中晚期静态结合的概念。Mar 21, 2025 pm 01:33 PM

    文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

    PHP记录:PHP日志分析的最佳实践PHP记录:PHP日志分析的最佳实践Mar 10, 2025 pm 02:32 PM

    PHP日志记录对于监视和调试Web应用程序以及捕获关键事件,错误和运行时行为至关重要。它为系统性能提供了宝贵的见解,有助于识别问题并支持更快的故障排除

    如何注册和使用Laravel服务提供商如何注册和使用Laravel服务提供商Mar 07, 2025 am 01:18 AM

    Laravel的服务容器和服务提供商是其架构的基础。 本文探讨了服务容器,详细信息服务提供商创建,注册,并通过示例演示了实际用法。 我们将从OVE开始

    See all articles

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    AI Hentai Generator

    AI Hentai Generator

    免费生成ai无尽的。

    热工具

    MinGW - 适用于 Windows 的极简 GNU

    MinGW - 适用于 Windows 的极简 GNU

    这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

    mPDF

    mPDF

    mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

    WebStorm Mac版

    WebStorm Mac版

    好用的JavaScript开发工具

    Atom编辑器mac版下载

    Atom编辑器mac版下载

    最流行的的开源编辑器

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    功能强大的PHP集成开发环境