Silex SwiftMailer 在执行时未建立 SMTP 连接

2024-01-08

我正在制作一个使用 SwiftMail 扩展进行发送的控制台应用程序。根据我们的政策,我有两台虚拟机,一台用作 SMTP 中继,另一台用作应用程序服务器。通过 telnet 手动向中继发送邮件效果很好。使用 SwiftMail 时,它出现故障。

返回标头,并且没有返回任何条目$failure变量为send()

的响应getHeaders()->toString()

Message-ID: <[email protected] /cdn-cgi/l/email-protection>
Date: Wed, 24 Oct 2012 14:50:31 -0400
Subject: [YourSite] Feedback
From: [email protected] /cdn-cgi/l/email-protection
To: [email protected] /cdn-cgi/l/email-protection
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

如果我回响send(), i get 1.

boot.php

$app->register(new Silex\Provider\SwiftmailerServiceProvider(), array(
    'swiftmailer.options' => array(
        'host' => 'ip.host.relay',
        'port' => 25,
        'encryption' => null,
        'auth_mode' => null
    ),
));

app.php

 $message = \Swift_Message::newInstance( )
        ->setSubject('[YourSite] Feedback')
        ->setFrom(array('[email protected] /cdn-cgi/l/email-protection'))
        ->setTo(array('[email protected] /cdn-cgi/l/email-protection'))
        ->setBody("Message!");


    $app['mailer']->send($message, $failures);

当我在应用程序服务器上运行 TCP 转储并运行脚本时,没有建立 SMTP 连接,也没有抛出任何错误。

有人遇到过这个吗?由于我们的应用程序要求,我不想使用 sendmail 或 mail,而是使用 SMTP。


这是因为SwiftmailerServiceProvider uses a Swift_MemorySpool默认情况下,并且仅将其刷新kernel.terminate。让我退一步解释一下其中的每一部分。

  • The SwiftmailerServiceProvider负责注册 Swiftmailer 服务和默认配置。默认情况下,传输(swiftmailer.spooltransport) is Swift_SpoolTransportswiftmailer.spool is Swift_MemorySpool.

  • Swiftmailer 支持不同的发送邮件方式。这些称为运输。假脱机传输充当队列。您可以将此队列存储在文件或内存中。线轴运输有一个flushQueue方法允许将排队的邮件刷新到真正的传输中,该传输应该传递它们。

  • Silex 使用的 Symfony2 HttpKernel 在每个请求的生命周期中都会发出许多事件。它发出的最后一个是kernel.terminate事件。该事件在 HTTP 响应正文发送后触发。这允许您在渲染页面后执行繁重的任务,以便它不再显示为正在加载给用户。

  • The SwiftmailerServiceProvider订阅了kernel.terminate事件以便在页面呈现后刷新内存假脱机。它将其冲洗至swiftmailer.transport服务,这是一个Swift_Transport_EsmtpTransport它通过 SMTP 进行实际发送。

那么让我们来解决实际问题。您处于 CLI 上下文中,因此不会触发任何 HttpKernel 事件。并且自从kernel.terminate事件没有被触发,你的线轴没有被冲洗。因此您的电子邮件不会被发送。

对此有两个很好的解决方案:

  • A) 手动冲洗阀芯。只需执行提供者在其侦听器中所做的操作即可。在 CLI 命令末尾添加以下内容:

    if ($app['mailer.initialized']) {
        $app['swiftmailer.spooltransport']->getSpool()->flushQueue($app['swiftmailer.transport']);
    }
    
  • B) 重新配置mailer服务直接使用 ESMTP 传输而不通过假脱机:

    $app['mailer'] = $app->share(function ($app) {
        return new \Swift_Mailer($app['swiftmailer.transport']);
    });
    

任一解决方案都可以。祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Silex SwiftMailer 在执行时未建立 SMTP 连接 的相关文章

  • 将 rel="nofollow" 添加到 WordPress 帖子中的所有链接

    我想将 rel nofollow 添加到我的 WordPress 帖子中的所有链接 并且我希望能够拥有一个不会获得 nofollow 的链接列表 我已经尝试了很多 但我无法正确完成 因为我真的不能很好地理解正则表达式 所以我有字符串 tex
  • 如何配置 nginx 重写规则以使 CakePHP 在 CentOS 上运行?

    大家好 请帮帮我 我正在尝试在运行 Nginx 和 Fact CGI 的 Centos 服务器上设置 cakephp 环境 我已经在服务器上运行了一个 WordPress 站点和一个 phpmyadmin 站点 因此我已经正确配置了 PHP
  • AWS S3从本地主机批量上传php错误

    我在尝试着批次 散装从本地主机 xampp 上传到我的S3 bucket 它似乎适用于大约 6 个项目 然后我收到一条错误消息 cURL 错误说Failed sending network data from http curl haxx
  • 电子商务是否从头开始

    我需要开发一个包含电子商务部分的新网站 我来这里是想从你那里得到一些关于我应该走哪条路的提示 该网站将有一个静态部分 其中包括一些静态页面和用于销售产品的电子商务部分 我是 Django 和 PHP 开发人员 但这是我第一次需要开发电子商务
  • PHP 下载脚本输出损坏的文件

    我正在用 PHP 为我的 CMS 构建一个文件下载类 当时我注意到它以不同的编码格式输出文件 我尝试使用 readfile file get contents fread 但似乎都在做同样的事情 这就像与输出缓冲有关的东西 我使用脚本下载的
  • 用 PHP 截断文件末尾

    我有一个日志文件 我想在 PHP 读取该文件后将其截断 我的代码目前如下所示 fp fopen file r ftruncate fp 125000 fclose fp 但是 这会通过保留first1MB 不过 我想保留last1Mb 的文
  • CakePHP Auth 组件使用 $this->Auth->login() 时未登录;

    我是 cakePHP 的新手 我已经阅读了他们的文档 并且正在遵循他们的简单身份验证示例 我还广泛搜索 包括本网站上的答案 来寻找我的问题的答案 我正在使用 cakePHP 2 0 我的 UsersController 的登录功能如下所示
  • 将 PHP 中的 openssl AES 转换为 Python AES

    我有一个 php 文件 如下所示 encryption encoded key c7e1wJFz PBwQix80D1MbIwwOmOceZOzFGoidzDkF5g function my encrypt data key encrypt
  • zend 表单验证

    我想知道 Zend Form 如何验证输入 我的意思是它如何知道要验证哪些输入字段 我查看了 php 全局变量 POST GET 但没有看到任何设置为标识符 例如 的内容 以便了解如何验证 有人能给我推荐一些关于这些东西的指南吗 好吧 找出
  • 转义用户数据,无需魔法引号

    我正在研究如何在来自外部世界的数据被用于应用程序控制 存储 逻辑等之前正确地对其进行转义 显然 随着 magic quote 指令在 php 5 3 0 中很快被弃用 并在 php6 中被删除 对于任何想要升级并进入新语言功能 同时维护遗留
  • 如何使用 php DOM 获取 内的值?

    我如何使用 php DOM 获取 内的值 这是我的 xml 中的一些代码
  • 在php中获取大于2GB的文件大小的最佳方法?

    我想检查本地驱动器上的文件大小windows OS 但是PHP原生函数filesize 仅当文件大小小于时才有效2GB 大于的文件2GB将返回错误的数字 那么 是否有其他方法来获取大于的文件大小2GB 非常感谢 您始终可以使用系统的文件大小
  • localhost/live - 通过 HTTP_HOST 检测

    假设我在本地开发并在实时服务器上调试小东西 在我的代码中添加这样的内容是个好主意吗 is local strpos SERVER HTTP HOST localhost false define DEBUG is local 然后在设置内容
  • 通过 post 使用 php 发送 XML

    我知道有很多类似的问题 但我尝试过摆弄所有的解决方案 但似乎无法使其发挥作用 我正在尝试将 xml 直接发布到 Web 服务并获得响应 从技术上讲 我正在尝试连接到freightquote com 您可以在右上角找到该文档this http
  • 如何绕过Access-Control-Allow-Origin?

    我正在一个平台上对我自己的服务器进行ajax调用 他们设置了阻止这些ajax调用的平台 但我需要它从我的服务器获取数据以显示从我的服务器数据库检索到的数据 我的 ajax 脚本正在运行 它可以将数据发送到我的服务器的 php 脚本以允许其处
  • 将客户分配到 magento 的多个客户组

    您好 我想将多个组分配给特定客户 例如 Rajat 客户 属于 批发 零售商 电力 实际上我在上面看到了同样的话题每个客户有多个客户组 https stackoverflow com questions 6153011 multiple c
  • WordPress - 类别和子类别的嵌套列表

    我正在尝试显示带有嵌套子类别的 WordPress 类别列表 到目前为止 我只能获取父类别列表或不包括父类别的子类别列表 但我无法将两者连接在一起 这是我想要创建的结果 Parent Category 子类别 子类别 Parent Cate
  • PHP Json_encode 将空格更改为加号 +

    我有一个网络应用程序 我首先将 JSON 数据存储在 cookie 中 然后每 x 秒保存到数据库 它只是打开与服务器的连接 服务器读取 cookie 它实际上并不通过 POST 或 GET 发送任何内容 当我保存到 cookie 时 我的
  • PHP date() 和 strtotime() 返回错误的月份 31 日

    我在用着date and strtotime 函数在下拉列表中显示接下来的 3 个月 PHP代码 echo date m Y strtotime 0 months echo date m Y strtotime 1 months echo
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht

随机推荐

  • Git-Svn dcommit 导致分支分裂

    我遇到了 git svn dcommits 问题 导致 git 存储库无法跟踪哪些提交 我尝试确保 git 中的 master 分支始终遵循 SVN 存储库中的 trunk 所以每当我工作时 我都会在一个主题分支上 这是我的场景 在主题分支
  • php 中的长计算会导致 503 错误

    我的脚本需要很长时间才能执行 结果服务器响应 503 错误 如何设置更长的执行时间 在我的 PHP 脚本中我设置 set time limit 0 ignore user abort true 这个问题非常类似于PHP 后台进程 https
  • 将数据库从sql server 2008 r2备份恢复到2008

    我需要将sql server 2008R2上的数据库备份和恢复到sql server 2008 备份文件不兼容这种方式 我发现的另一个选项是生成包含数据的脚本 由于我使用大量外键对数据库进行了规范化 插入会成功吗 还有其他可靠的方法吗 正如
  • Web Audio API:停止播放所有预定的声音

    所以我有一堆加载的音频样本 我在下面的代码中调用调度函数 let audio function playChannel let audioStart context currentTime let next 0 for let i 0 i
  • 如何获取离线安装的所有nuget依赖项

    我使用两台电脑 一台有互联网连接 另一台没有互联网连接 我想在脱机计算机上安装 Nuget 包 Nuget server 及其所有依赖项 不幸的是 仅仅下载软件包本身是不可能的 我必须手动下载所有依赖项 而且有几十个依赖项 如何在具有 In
  • 希望从大量 javascript 文件中删除注释

    这是我的困境 我是一个 javascript 菜鸟 目前正在实习并帮助维护两个电子商务网站 我最近被指派删除我们 javascript 库中出现的所有评论 超过 25 000 条评论 显然我想找到一个函数或一些预先存在的程序 可以解析代码
  • 如何更改滑动(可可)自定义工作表的点?

    我想在我的 Mac 应用程序中使用一个带有自定义高度标题栏的主窗口 例如 sparrow twitter 应用程序 mac 阅读器等 我在用着https github com indragiek INAppStoreWindow https
  • SQL Server Nvarchar 和 Java 准备好的语句

    我有一个关于将字符串插入 SQL Server 2008 R2 的问题 当我尝试插入带有一些国家 地区字母的字符串时 我收到 反而 我知道添加N在字符串文字的开头可以解决这个问题 但我使用的是 JDBC 准备好的语句 如下所示 INSERT
  • Selenium:如何通过部分href查找元素?

    工作代码1 Driver Instance FindElement By XPath a contains href PartialLinkHref 工作代码2 ReadOnlyCollection
  • 如何查找基类库中实现特定接口的类型列表?

    有时我想找出实现特定接口的所有标准 NET 类型的列表 通常是出于好奇 有时也有一些实际目的 但这不是重点 我试图从 MSDN 中获取此内容 但类型的页面仅包含类型的子级链接 而不包含实现接口的类型 您知道如何做到这一点的任何技巧 或有帮助
  • 选择R中n个最远的点

    给定一组 xy 坐标 如何选择 n 个点以使这 n 个点彼此距离最远 一种低效方法可能不适用于大数据集 如下所示 从 1000 个点中找出距离最远的 20 个点 xy lt cbind rnorm 1000 rnorm 1000 n lt
  • 为什么 Retrofit 会在所有 URL 中添加尾部斜杠?

    编辑问题并提供更多详细信息 我了解Retrofit中服务接口的使用 我想调用这样的 URL http a com b c http a com b c 稍后使用服务接口附加查询参数 我的限制是 I cannot使用 b c 作为服务接口的一
  • 在 python 的端到端管道内的数据帧上使用 TimeSeriesSplit() 应用交叉验证的最佳实践是什么?

    假设我有dataset https drive google com file d 18PGLNnOI44LVFignYriBWQFW9WBkTX5c view usp share link在以下范围内pandas questions ta
  • 在系数之间添加乘号 (*)

    我有一个程序 用户在其中输入一个函数 例如sin x 1 我在用着ast尝试通过将组件列入白名单来确定字符串是否 安全 如下所示这个答案 https stackoverflow com a 11952618 4414003 现在我想解析字符
  • SQL将兼容性矩阵转换为映射表(列转换为行)

    我有下表 我想将矩阵转换为这种格式 其中新映射表表示一组选项和使用这些选项的一组模型之间的兼容性 而数值表示该特定模型的选项的价格 请记住 这只是一个更大的表中的一个小样本 因此查询需要或多或少是动态的 而不是根据本示例中提供的选项或模型的
  • 是否可以将 IronPython asp.net Webform 关联到 dll 文件?

    在具有普通 ASP 模型的 ASP NET 中 您可以通过继承 dll 内的类来将 aspx 文件的代码文件存储在 dll 中 在 IronPython 中 您有另一个模型 aspx 页面中的唯一选项是 代码文件 并且没有 继承 我的问题是
  • 如何在加载应用程序时显示图像

    我有一个应用程序 windows form net 我的 form1 需要很长时间才能出现 因为在它的事件中form1 Load做了很多操作 我的目标是在手术进行时显示图像 private void form1 Load object se
  • Akka Stream + Akka Http - 获取错误请求

    我有以下效果很好的流 source map x gt HttpRequest uri x rawRequest via Http outgoingConnection host port to Sink actorRef myActor I
  • PHP 中 ArrayIterator、ArrayObject 和 Array 的区别

    有人可以清楚地解释一下之间的根本区别吗ArrayIterator ArrayObject and ArrayPHP的功能和操作方面 谢谢 Array是原生 php 类型 您可以使用 php 语言构造创建一个array 或从 php 5 4
  • Silex SwiftMailer 在执行时未建立 SMTP 连接

    我正在制作一个使用 SwiftMail 扩展进行发送的控制台应用程序 根据我们的政策 我有两台虚拟机 一台用作 SMTP 中继 另一台用作应用程序服务器 通过 telnet 手动向中继发送邮件效果很好 使用 SwiftMail 时 它出现故