这种方法是从Angular SSR项目向用户的电子邮件发送基于Angular组件动态生成的模板。
在本回答底部找到示例存储库。
您需要遵循以下步骤:
- 在专门用于显示电子邮件模板而不是导航栏、全局CSS等的单独路由路径中设计您的模板。
例如:
welcome-email-component.component.ts
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-welcome-email-component',
templateUrl: './welcome-email-component.component.html',
styleUrls: ['./welcome-email-component.component.css']
})
export class WelcomeEmailComponentComponent implements OnInit {
username: any;
constructor(private route: ActivatedRoute) { }
ngOnInit(): void {
this.route.params.subscribe(params => {
this.username = params.username;
});
}
}
welcome-email-component.component.html
<style>
.title-p {
color: #00025a;
font-size: 20px;
font-weight: bold;
}
</style>
<p class="title-p">Welcome {{username}}</p>
您需要按照以下方式为此组件指定路由,因此当用户导航到
welcome-email/username
路由时,只应显示生成的电子邮件模板组件。
{ path: 'welcome-email/:username', component: WelcomeEmailComponentComponent }
- 从Angular Universal指南中学习如何实现Angular SSR:使用Angular Universal实现服务端渲染(SSR)。
只需要两行代码。
ng add @nguniversal/express-engine
npm run dev:ssr
- 最后创建一个服务端 API,从 Angular 组件生成模板并发送电子邮件或提供单个组件的 HTML 代码,将 API 函数添加到您的
server.ts
中,如下所示。
server.ts
server.get('/api/send-email/:username', (req, res) => {
request(`http://127.0.0.1:4200/welcome-email/${req.params.username}`, (error, response, body) => {
res.send('Email sent');
});
});
示例代码:https://github.com/aslamanver/angular-send-component-email
这个仓库演示了如何动态生成组件;
![enter image description here](https://istack.dev59.com/eGMgR.webp)
最终,当您访问/api/send-email/:username
时,它将生成欢迎邮件组件并提供该组件的HTML正文,之后您可以继续执行您的电子邮件发送功能。