方法是从 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 SSR 指南 Server-side rendering (SSR) with Angular Universal 在您的项目中实施 Angular SSR。
只有两行代码。
ng add @nguniversal/express-engine
npm run dev:ssr
- 最后创建一个服务器端 API 以从您的 Angular 组件生成模板并发送电子邮件或提供单个组件的 HTML 代码,在您的
server.ts 中添加 API 函数,如下所示。
server.ts
server.get('/api/send-email/:username', (req, res) => {
// Below is the URL route for the Angular welcome mail component
request(`http://127.0.0.1:4200/welcome-email/${req.params.username}`, (error, response, body) => {
// TODO : Send email to the user from WelcomeEmailComponentComponent.ts component as `body`
// use the body to send email
res.send('Email sent');
});
});
示例代码:https://github.com/aslamanver/angular-send-component-email
在此存储库上动态生成组件的演示;
最后当你访问/api/send-email/:username时,这将生成欢迎邮件组件并给出它的HTML正文,然后你可以继续你的电子邮件发送功能。