如何将 Swiftmailer 集成到 Angular2 中

How to integrate Swiftmailer into Angular2

因为我现在三天都找不到答案,我试着自己问一下。

我对 Angular 有点陌生,两周前开始学习它。我用 angular-cli 设置了一个项目。到目前为止,一切都很好,除了我的联系表之外。

我想要的 我想将 Swiftmailer 集成到我的 Angular 项目中,这样我实际上可以通过联系表单 本地 (Linux Mint) 向自己发送电子邮件。

我有什么 我已经有了一个简单的 bootstrap 表单(姓名、电子邮件、消息),并且我通过 composer 添加了 Swiftmailer。我在我的资产文件夹中创建了一个名为 mail.php 的文件(因为 Angular 不能这样做):

<?php
require_once __DIR__.'../vendor/autoload.php';

$request = json_decode(file_get_contents('php://input'));

// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.actual-server.de', 25))
->setUsername('actually-filled-in-working-username')
->setPassword('actually-filled-in-working-password')
;

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);
$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(100, 30));

// Create a message
$message = (new Swift_Message('Test Subject'))
->setFrom([$request->email => $request->name])
->setTo(['suzu.amaranthine@gmail.com' => 'Suzu'])
->setBody($request->message)
;

// Send the message
return $mailer->send($message);

在我的模板中,我将操作设置为此文件。当我尝试提交时,没有任何反应。我的想法是,我需要在 contact.component.ts 中做一些事情,但是当我尝试导入 "Swiftmailer/Message.php" 时,我失败了。

有谁知道我需要在那里做什么才能使其协同工作?

版本:

PHP 7.0.18-0ubuntu0.16.04.1 (cli) ( NTS )

"swiftmailer/swiftmailer": "^6.0"

@angular/cli: 1.2.0
node: 6.11.1
os: linux x64
@angular/animations: 4.3.0
@angular/cdk: 2.0.0-beta.8
@angular/common: 4.3.0
@angular/compiler: 4.3.0
@angular/core: 4.3.0
@angular/forms: 4.3.0
@angular/http: 4.3.0
@angular/material: 2.0.0-beta.8
@angular/platform-browser: 4.3.0
@angular/platform-browser-dynamic: 4.3.0
@angular/router: 4.3.0
@angular/cli: 1.2.0
@angular/compiler-cli: 4.3.0
@angular/language-service: 4.3.0

我终于解决了。我在加载 vendor/autoload.php 时缺少一个“/”,这就是它不起作用的原因。

<?php
require_once __DIR__ . '/../../vendor/autoload.php';
require_once __DIR__ . '/../../vendor/swiftmailer/swiftmailer/lib/swift_required.php';