繁体   English   中英

如何在我的 Typo3 分机内发送邮件

[英]How can i send Mails within my Typo3 extension

我从我的 Typo3 扩展中的 JSON 中的 jQuery 调查中获得结果。 现在我想将这些结果与 Typo3 邮件 API 一起发送到我的收件箱。 根据以下文件应该做的工作

$mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Mail\MailMessage::class);
$mail->from(new \Symfony\Component\Mime\Address('john.doe@example.org', 'John Doe'));
$mail->to(
   new \Symfony\Component\Mime\Address('receiver@example.com', 'Max Mustermann'),
   new \Symfony\Component\Mime\Address('other@example.net')
);
$mail->subject('Your subject');
$mail->text('Here is the message itself');
$mail->html('<p>Here is the message itself</p>');
$mail->attachFromPath('/path/to/my-document.pdf');
$mail->send();

所以我的代码看起来像这样:

namespace TYPO3\CMS\Core\Mail;
 
  if (!file_exists( dirname(__DIR__, 2).'/vendor/autoload.php' )) {
    throw new \RuntimeException(
    'Could not find vendor/autoload.php, make sure you ran composer.'
          );
     } else {
        require dirname(__DIR__, 2).'/vendor/autoload.php';
  }


use Symfony\Component\Mime\Address;
use Symfony\Component\Mime\Email;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Utility\MailUtility;


$mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Mail\MailMessage::class);
$mail->from(new \Symfony\Component\Mime\Address('john.doe@example.org', 'John Doe'));
$mail->to(
   new \Symfony\Component\Mime\Address('receiver@example.com', 'Max Mustermann'),
   new \Symfony\Component\Mime\Address('other@example.net')
);
$mail->subject('Your subject');
$mail->text('Here is the message itself');
$mail->html('<p>Here is the message itself</p>');
$mail->attachFromPath('/path/to/my-document.pdf');
$mail->send();

我只是收到错误。 有谁知道我怎么能做到这一点?

我得到以下错误

Notice: Undefined index: TYPO3_CONF_VARS in /var/www/html/local_packages/ext_sitepackage/public/typo3/sysext/core/Classes/Mail/Mailer.php on line 170

显然这与您已在此处发布的问题相同。

这永远不会像这样工作。 您需要构建一个完全成熟的 TYPO3 扩展或直接使用symfony/mailer的独立应用程序。

您的脚本缺少$GLOBALS['TYPO3_CONF_VARS']['MAIL']

您无意中发现您正在按照 TYPO3 的约定和要求进行编程,但随后您惊讶于该框架的功能不起作用......

在您的站点包中创建一个中间件,并正确注册它。 检查特殊路由,让 rest 运行。 如果处理,请使用那里的代码。

您需要在(完整)自举 Typo3 上下文中运行邮件代码:

  • 在中间件中
  • 直接用 pageNum 注册的 extbase 插件

您粘贴的代码在很多方面看起来都很奇怪。 只是将文件放在扩展文件夹中并不意味着它是正确的 typo3 扩展名。

也许您想先开始并进行适当的扩展设置,并使用相应的读数:

  • 至少 ext_emconf.php / composer.json
  • “Classes/”子文件夹中的代码文件

然后决定你想用哪种方式处理“ajax”调用并发送 email,有几种可能性(如上所述)......而不是以正确和正确的方式阅读和实施该解决方案。

直接引用/调用一个 php 文件并引导 composer 自动加载器不会也永远不会引导 Typo3 和所有需要的配置引导(从扩展、本地/附加配置、站点配置和和和收集配置)。

通常一个包/扩展应该有一个像下面这样的命名空间(作为惯例):

<扩展名.....

因此在您的扩展 composer.json 中注册为 psr-4 自动加载..

开始实施 peaces 以在该文件中模拟 Typo3 bootstpraping 并不好,而且会让人很头疼……拥有适当的站点包/扩展结构会更容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM