HTMLメール
This commit is contained in:
		
							parent
							
								
									cc9bc7703a
								
							
						
					
					
						commit
						263032b680
					
				
					 2 changed files with 82 additions and 2 deletions
				
			
		
							
								
								
									
										
											BIN
										
									
								
								assets/mi-white.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/mi-white.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 18 KiB  | 
| 
						 | 
					@ -8,6 +8,9 @@ export const logger = new Logger('email');
 | 
				
			||||||
export async function sendEmail(to: string, subject: string, text: string) {
 | 
					export async function sendEmail(to: string, subject: string, text: string) {
 | 
				
			||||||
	const meta = await fetchMeta(true);
 | 
						const meta = await fetchMeta(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						const iconUrl = `${config.url}/assets/mi-white.png`;
 | 
				
			||||||
 | 
						const emailSettingUrl = `${config.url}/settings/email`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const enableAuth = meta.smtpUser != null && meta.smtpUser !== '';
 | 
						const enableAuth = meta.smtpUser != null && meta.smtpUser !== '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const transporter = nodemailer.createTransport({
 | 
						const transporter = nodemailer.createTransport({
 | 
				
			||||||
| 
						 | 
					@ -26,8 +29,85 @@ export async function sendEmail(to: string, subject: string, text: string) {
 | 
				
			||||||
		const info = await transporter.sendMail({
 | 
							const info = await transporter.sendMail({
 | 
				
			||||||
			from: meta.email!,
 | 
								from: meta.email!,
 | 
				
			||||||
			to: to,
 | 
								to: to,
 | 
				
			||||||
			subject: subject || 'Misskey',
 | 
								subject: subject,
 | 
				
			||||||
			text: text
 | 
								text: text,
 | 
				
			||||||
 | 
								html: `<!doctype html>
 | 
				
			||||||
 | 
								<html>
 | 
				
			||||||
 | 
									<head>
 | 
				
			||||||
 | 
										<meta charset="utf-8">
 | 
				
			||||||
 | 
										<title>${ subject }</title>
 | 
				
			||||||
 | 
										<style>
 | 
				
			||||||
 | 
											html {
 | 
				
			||||||
 | 
												background: #eee;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											body {
 | 
				
			||||||
 | 
												padding: 16px;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											a {
 | 
				
			||||||
 | 
												text-decoration: none;
 | 
				
			||||||
 | 
												color: #86b300;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
											a:hover {
 | 
				
			||||||
 | 
												text-decoration: underline;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											main {
 | 
				
			||||||
 | 
												max-width: 500px;
 | 
				
			||||||
 | 
												margin: 0 auto;
 | 
				
			||||||
 | 
												background: #fff;
 | 
				
			||||||
 | 
												color: #555;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
												main > header {
 | 
				
			||||||
 | 
													padding: 32px;
 | 
				
			||||||
 | 
													background: #86b300;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
													main > header > img {
 | 
				
			||||||
 | 
														max-width: 128px;
 | 
				
			||||||
 | 
														max-height: 28px;
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												main > article {
 | 
				
			||||||
 | 
													padding: 32px;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
													main > article > h1 {
 | 
				
			||||||
 | 
														margin: 0 0 1em 0;
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												main > footer {
 | 
				
			||||||
 | 
													padding: 32px;
 | 
				
			||||||
 | 
													border-top: solid 1px #eee;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											nav {
 | 
				
			||||||
 | 
												box-sizing: border-box;
 | 
				
			||||||
 | 
												max-width: 500px;
 | 
				
			||||||
 | 
												margin: 16px auto 0 auto;
 | 
				
			||||||
 | 
												padding: 0 32px;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
												nav > a {
 | 
				
			||||||
 | 
													color: #888;
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
										</style>
 | 
				
			||||||
 | 
									</head>
 | 
				
			||||||
 | 
									<body>
 | 
				
			||||||
 | 
										<main>
 | 
				
			||||||
 | 
											<header>
 | 
				
			||||||
 | 
												<img src="${ meta.logoImageUrl || meta.iconUrl || iconUrl }"/>
 | 
				
			||||||
 | 
											</header>
 | 
				
			||||||
 | 
											<article>
 | 
				
			||||||
 | 
												<h1>${ subject }</h1>
 | 
				
			||||||
 | 
												<div>${ text }</div>
 | 
				
			||||||
 | 
											</article>
 | 
				
			||||||
 | 
											<footer>
 | 
				
			||||||
 | 
												<a href="${ emailSettingUrl }">${ 'Email setting' }</a>
 | 
				
			||||||
 | 
											</footer>
 | 
				
			||||||
 | 
										</main>
 | 
				
			||||||
 | 
										<nav>
 | 
				
			||||||
 | 
											<a href="${ config.url }">${ config.host }</a>
 | 
				
			||||||
 | 
										</nav>
 | 
				
			||||||
 | 
									</body>
 | 
				
			||||||
 | 
								</html>
 | 
				
			||||||
 | 
								`
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		logger.info('Message sent: %s', info.messageId);
 | 
							logger.info('Message sent: %s', info.messageId);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue