fix(themes): restore pre-refactor visual design across all 9 non-aurora themes

Fixes introduced by the CSS class-based refactor (1712f77) that changed
visual layout, spacing, colors, and content rendering:

**Container/border displacement (neon):**
- Move background, border, box-shadow back to .email-wrap (outermost)
- Restore .email-card to padding-only; add color for content inheritance
- Fix link box padding, link label color, button margin, link URL padding

**Layout restructuring (ink, mono):**
- ink: Move button + link-box back into left column (was moved to
  separate full-width row); remove incorrectly-added divider
- mono: Remove incorrectly-added divider; restore link-box margin-top

**CSS specificity conflict (ink):**
- Exclude .email-btn from .card-body a rule to prevent button text
  being overridden to same color as background

**Content class cleanup (neon, terminal, terra):**
- Remove .aurora-content (aurora-specific) copied into other themes
- Replace with theme-appropriate .card-body scoped rules where needed

**Content color/contrast (horizon):**
- Fix .horizon-content in release.tmpl from dark-theme colors
  (#e2e8f0 on white) to light-theme colors matching issue/default.tmpl
- Fix .email-heading color to #1e293b for heading distinction

**register_notify text_3 placement:**
- Restore per-theme original design: inside .email-subtext (mono, ink)
  vs standalone <p> after button (heritage, horizon)
- Move raw text in button row into proper <p> elements

**Button CSS pattern (bloom):**
- Remove redundant inline style/bgcolor from button <td> (already in CSS)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
KenanZhuandClaude Opus 4.8 committed 2026-06-05 13:44:24 +08:00
1 parent 6ae9c97be8
commit 73b9bd52f5
99 files changed
+10699 -3937

No files matched your search

+119 -54
View File
@@ -2,75 +2,140 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{AppName}} · Team Invitation</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.locale.Tr "mail.team_invite.subject" (.Inviter.DisplayName|DotEscape) (.Organization.DisplayName|DotEscape)}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:’Helvetica Neue’,Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 16px;font-size:16px;line-height:1.5;color:#1e293b }
.email-text { margin:0 0 16px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:28px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Typography utilities */
.card-body a { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
<p style="margin:0 0 16px; font-size:16px; line-height:1.5; color:#1e293b;">
{{.locale.Tr "mail.hi_user_x" .Invite.Email}}
</p>
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
<p style="margin:0 0 16px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.team_invite.text_1" (DotEscape .Inviter.DisplayName) (DotEscape .Team.Name) (DotEscape .Organization.DisplayName)}}
</p>
</td>
</tr>
<p style="margin:0 0 20px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.team_invite.text_2"}}
</p>
<!-- Card -->
<tr>
<td class="email-card card-body">
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:28px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{.InviteURL}}" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">Accept Invitation</a>
</td>
</tr>
</table>
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<p class="email-heading">
{{.locale.Tr "mail.hi_user_x" .Invite.Email}}
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{.InviteURL}}
<p class="email-text">
{{.locale.Tr "mail.team_invite.text_1" (DotEscape .Inviter.DisplayName) (DotEscape .Team.Name) (DotEscape .Organization.DisplayName)}}
</p>
</div>
<p style="margin:16px 0 0; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.team_invite.text_3" .Invite.Email}}
</p>
<p class="email-subtext">
{{.locale.Tr "mail.team_invite.text_2"}}
</p>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
</td>
</tr>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure team invitation – if you weren’t expecting this, please ignore this email.</p>
</div>
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
</div>
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{.InviteURL}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{.InviteURL}}</p>
</td>
</tr>
</table>
<p class="email-subtext" style="margin-top:24px;font-size:12px;color:#475569;">
{{.locale.Tr "mail.team_invite.text_3" .Invite.Email}}
</p>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
</td>
</tr>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>
@@ -2,72 +2,136 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.Subject}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.Subject}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:’Helvetica Neue’,Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 16px;font-size:20px;font-weight:600;color:#1e293b }
.email-text { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:16px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Typography utilities */
.card-body a,.card-body a:link,.card-body a:visited { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
.card-body h2 { color:#1e293b!important;font-size:20px!important;font-weight:600!important;margin:0 0 16px!important }
.card-body ul { list-style:none!important;padding:0!important;margin:0 0 30px!important }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
<h2 style="font-size:20px; font-weight:600; color:#1e293b; margin:0 0 16px;">
{{.Repo.FullName}} {{.Run.WorkflowID}}: {{.RunStatusText}}
</h2>
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
<ul style="list-style: none; padding: 0; margin: 0 0 30px 0;">
{{range $job := .Jobs}}
<li style="background-color: #ffffff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 12px 16px; margin-bottom: 10px; box-shadow: 0 1px 2px rgba(0,0,0,0.03); transition: box-shadow 0.2s ease;">
<a href="{{$job.HTMLURL}}" style="color:#1e88e5; text-decoration:none; font-weight:500; display:block;">
{{$job.Status}}: {{$job.Name}}{{if gt $job.Attempt 1}}, Attempt #{{$job.Attempt}}{{end}}, {{$job.Duration}}
</a>
</li>
{{end}}
</ul>
</td>
</tr>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:16px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{.Run.HTMLURL}}" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
<!-- Card -->
<tr>
<td class="email-card card-body">
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<h2>{{.Repo.FullName}} {{.Run.WorkflowID}}: {{.RunStatusText}}</h2>
<ul>
{{range $job := .Jobs}}
<li style="background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;margin-bottom:10px;">
<a href="{{$job.HTMLURL}}">{{$job.Status}}: {{$job.Name}}{{if gt $job.Attempt 1}}, Attempt #{{$job.Attempt}}{{end}}, {{$job.Duration}}</a>
</li>
{{end}}
</ul>
</td>
</tr>
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{.Run.HTMLURL}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{.Run.HTMLURL}}</p>
</td>
</tr>
</table>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{.Run.HTMLURL}}
</p>
</div>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure workflow run notification – if you didn’t expect this, please ignore this email.</p>
</div>
</td>
</tr>
</div>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>
+110 -44
View File
@@ -2,62 +2,128 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.Subject}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.Subject}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:’Helvetica Neue’,Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
.email-text { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:28px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Typography utilities */
.card-body a,.card-body a:link,.card-body a:visited { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
<p style="margin:0 0 20px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.repo.collaborator.added.text"}} <code style="background:#f1f5f9; padding:2px 6px; border-radius:4px; font-size:15px;">{{.RepoName}}</code>.
</p>
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:28px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{.Link}}" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
</td>
</tr>
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<!-- Card -->
<tr>
<td class="email-card card-body">
<p class="email-heading">
{{.locale.Tr "mail.repo.collaborator.added.text"}} <code>{{.RepoName}}</code>.
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{.Link}}
</td>
</tr>
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{.Link}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{.Link}}</p>
</td>
</tr>
</table>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
</div>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure repository collaboration notification – if you didn’t expect this, please ignore this email.</p>
</div>
</td>
</tr>
</div>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>
+116 -50
View File
@@ -2,68 +2,134 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.Subject}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.Subject}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:’Helvetica Neue’,Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
.email-text { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:28px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Typography utilities */
.card-body a,.card-body a:link,.card-body a:visited { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
{{$repo_url := HTMLFormat "<a href='%s' style='color:#1e88e5; text-decoration:none; font-weight:500;'>%s</a>" .Issue.Repo.HTMLURL .Issue.Repo.FullName}}
{{$link := HTMLFormat "<a href='%s' style='color:#1e88e5; text-decoration:none; font-weight:500;'>#%d</a>" .Link .Issue.Index}}
<p style="margin:0 0 20px; font-size:16px; line-height:1.5; color:#334155;">
{{if .IsPull}}
{{.locale.Tr "mail.issue_assigned.pull" .Doer.Name $link $repo_url}}
{{else}}
{{.locale.Tr "mail.issue_assigned.issue" .Doer.Name $link $repo_url}}
{{end}}
</p>
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:28px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{.Link}}" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
</td>
</tr>
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<!-- Card -->
<tr>
<td class="email-card card-body">
{{$repo_url := HTMLFormat "<a href=’%s’>%s</a>" .Issue.Repo.HTMLURL .Issue.Repo.FullName}}
{{$link := HTMLFormat "<a href=’%s’>#%d</a>" .Link .Issue.Index}}
<p class="email-heading">
{{if .IsPull}}
{{.locale.Tr "mail.issue_assigned.pull" .Doer.Name $link $repo_url}}
{{else}}
{{.locale.Tr "mail.issue_assigned.issue" .Doer.Name $link $repo_url}}
{{end}}
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{.Link}}
</td>
</tr>
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{.Link}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{.Link}}</p>
</td>
</tr>
</table>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
</div>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure issue assignment notification – if you didn’t expect this, please ignore this email.</p>
</div>
</td>
</tr>
</div>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>
+185 -105
View File
@@ -2,129 +2,209 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.Subject}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.Subject}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
blockquote { padding-left: 1em; margin: 1em 0; border-left: 1px solid #cbd5e1; color: #475569; }
pre { background: #f1f5f9; padding: 12px; border-radius: 6px; overflow-x: auto; font-size: 14px; line-height: 1.5; }
hr { border: none; border-top: 1px solid #e2e8f0; margin: 20px 0; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 16px;font-size:16px;line-height:1.5;color:#1e293b }
.email-text { margin:0 0 16px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:28px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Content */
.horizon-content,.horizon-content * { color:#334155!important }
.horizon-content a,.horizon-content a:link,.horizon-content a:visited { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
.horizon-content a:hover,.horizon-content a:active { color:#1565c0!important }
.horizon-content code,.horizon-content pre { background:#f1f5f9!important;border-color:#e2e8f0!important }
.horizon-content blockquote { border-left:1px solid #cbd5e1!important;color:#475569!important }
.horizon-content hr { border-color:#e2e8f0!important }
.horizon-content img { border:0;max-width:100%!important }
/* Typography utilities */
.card-body a { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
.card-body blockquote { padding-left:1em;margin:1em 0;border-left:1px solid #cbd5e1;color:#475569 }
.card-body pre { background:#f1f5f9;padding:12px;border-radius:6px;overflow-x:auto;font-size:14px;line-height:1.5 }
.card-body hr { border:none;border-top:1px solid #e2e8f0;margin:20px 0 }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
{{if .IsMention}}<p style="margin:0 0 16px; font-size:16px; line-height:1.5; color:#334155;">{{.locale.Tr "mail.issue.x_mentioned_you" .Doer.Name}}</p>{{end}}
{{if eq .ActionName "push"}}
<p style="margin:0 0 16px; font-size:16px; line-height:1.5; color:#334155;">
{{if .Comment.IsForcePush}}
{{$oldCommitUrl := printf "%s/commit/%s" .Comment.Issue.PullRequest.BaseRepo.HTMLURL .Comment.OldCommit}}
{{$oldShortSha := ShortSha .Comment.OldCommit}}
{{$oldCommitLink := HTMLFormat "<a href='%[1]s' style='color:#1e88e5; text-decoration:none; font-weight:500;'><b>%[2]s</b></a>" $oldCommitUrl $oldShortSha}}
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
{{$newCommitUrl := printf "%s/commit/%s" .Comment.Issue.PullRequest.BaseRepo.HTMLURL .Comment.NewCommit}}
{{$newShortSha := ShortSha .Comment.NewCommit}}
{{$newCommitLink := HTMLFormat "<a href='%[1]s' style='color:#1e88e5; text-decoration:none; font-weight:500;'><b>%[2]s</b></a>" $newCommitUrl $newShortSha}}
</td>
</tr>
{{.locale.Tr "mail.issue.action.force_push" .Doer.Name .Comment.Issue.PullRequest.HeadBranch $oldCommitLink $newCommitLink}}
{{else}}
{{.locale.TrN (len .Comment.Commits) "mail.issue.action.push_1" "mail.issue.action.push_n" .Doer.Name .Comment.Issue.PullRequest.HeadBranch (len .Comment.Commits)}}
{{end}}
<!-- Card -->
<tr>
<td class="email-card card-body">
<p class="email-heading"></p>
<p class="email-text">
{{if .IsMention}}
<p>{{.locale.Tr "mail.issue.x_mentioned_you" .Doer.Name}}</p>
{{end}}
{{if eq .ActionName "push"}}
<p>
{{if .Comment.IsForcePush}}
{{$oldCommitUrl := printf "%s/commit/%s" .Comment.Issue.PullRequest.BaseRepo.HTMLURL .Comment.OldCommit}}
{{$oldShortSha := ShortSha .Comment.OldCommit}}
{{$oldCommitLink := HTMLFormat "<a href=\047%[1]s\047>%[2]s</a>" $oldCommitUrl $oldShortSha}}
{{$newCommitUrl := printf "%s/commit/%s" .Comment.Issue.PullRequest.BaseRepo.HTMLURL .Comment.NewCommit}}
{{$newShortSha := ShortSha .Comment.NewCommit}}
{{$newCommitLink := HTMLFormat "<a href=\047%[1]s\047>%[2]s</a>" $newCommitUrl $newShortSha}}
{{.locale.Tr "mail.issue.action.force_push" .Doer.Name .Comment.Issue.PullRequest.HeadBranch $oldCommitLink $newCommitLink}}
{{else}}
{{.locale.TrN (len .Comment.Commits) "mail.issue.action.push_1" "mail.issue.action.push_n" .Doer.Name .Comment.Issue.PullRequest.HeadBranch (len .Comment.Commits)}}
{{end}}
</p>
{{end}}
<p>
{{if eq .ActionName "close"}}
{{.locale.Tr "mail.issue.action.close" .Doer.Name .Issue.Index}}
{{else if eq .ActionName "reopen"}}
{{.locale.Tr "mail.issue.action.reopen" .Doer.Name .Issue.Index}}
{{else if eq .ActionName "merge"}}
{{.locale.Tr "mail.issue.action.merge" .Doer.Name .Issue.Index .Issue.PullRequest.BaseBranch}}
{{else if eq .ActionName "approve"}}
{{.locale.Tr "mail.issue.action.approve" .Doer.Name}}
{{else if eq .ActionName "reject"}}
{{.locale.Tr "mail.issue.action.reject" .Doer.Name}}
{{else if eq .ActionName "review"}}
{{.locale.Tr "mail.issue.action.review" .Doer.Name}}
{{else if eq .ActionName "review_dismissed"}}
{{.locale.Tr "mail.issue.action.review_dismissed" .Doer.Name .Comment.Review.Reviewer.Name}}
{{else if eq .ActionName "ready_for_review"}}
{{.locale.Tr "mail.issue.action.ready_for_review" .Doer.Name}}
{{end}}
{{- if eq .Body ""}}
{{if eq .ActionName "new"}}
{{.locale.Tr "mail.issue.action.new" .Doer.Name .Issue.Index}}
{{end}}
{{else}}
<span class="horizon-content">{{.Body}}</span>
{{end -}}
{{if .CanReply}}
&nbsp;{{.locale.Tr "mail.reply"}}
{{end}}
</p>
{{- range .ReviewComments}}
<hr>
<p>{{$.locale.Tr "mail.issue.in_tree_path" .TreePath}}</p>
<pre>{{.Patch}}</pre>
<div class="horizon-content">{{.RenderedContent}}</div>
{{end -}}
{{if eq .ActionName "push"}}
<ul>
{{range .Comment.Commits}}
<li>
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> - {{.MessageTitle}}
</li>
{{end}}
</ul>
{{end}}
</p>
{{end}}
<p style="margin:0 0 16px; font-size:16px; line-height:1.5; color:#334155;">
{{if eq .ActionName "close"}}
{{.locale.Tr "mail.issue.action.close" .Doer.Name .Issue.Index}}
{{else if eq .ActionName "reopen"}}
{{.locale.Tr "mail.issue.action.reopen" .Doer.Name .Issue.Index}}
{{else if eq .ActionName "merge"}}
{{.locale.Tr "mail.issue.action.merge" .Doer.Name .Issue.Index .Issue.PullRequest.BaseBranch}}
{{else if eq .ActionName "approve"}}
{{.locale.Tr "mail.issue.action.approve" .Doer.Name}}
{{else if eq .ActionName "reject"}}
{{.locale.Tr "mail.issue.action.reject" .Doer.Name}}
{{else if eq .ActionName "review"}}
{{.locale.Tr "mail.issue.action.review" .Doer.Name}}
{{else if eq .ActionName "review_dismissed"}}
{{.locale.Tr "mail.issue.action.review_dismissed" .Doer.Name .Comment.Review.Reviewer.Name}}
{{else if eq .ActionName "ready_for_review"}}
{{.locale.Tr "mail.issue.action.ready_for_review" .Doer.Name}}
{{end}}
{{- if eq .Body ""}}
{{if eq .ActionName "new"}}
{{.locale.Tr "mail.issue.action.new" .Doer.Name .Issue.Index}}
{{end}}
{{else}}
{{.Body}}
{{end -}}{{if .CanReply}}&nbsp;{{.locale.Tr "mail.reply"}}{{end}}
<p class="email-subtext"></p>
</p>
</td>
</tr>
{{- range .ReviewComments}}
<hr>
<p style="margin:8px 0; font-size:15px; color:#334155;">{{$.locale.Tr "mail.issue.in_tree_path" .TreePath}}</p>
<div style="padding-left: 1em; margin: 1em 0;">
<pre style="background:#f1f5f9; padding: 12px; border-radius:6px; overflow-x:auto; font-size:14px; color:#1e293b;">{{.Patch}}</pre>
<div style="margin-top:8px; font-size:15px; line-height:1.6;">{{.RenderedContent}}</div>
</div>
{{end -}}
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
{{if eq .ActionName "push"}}
<ul style="margin:16px 0; padding-left:20px;">
{{range .Comment.Commits}}
<li style="margin-bottom:6px; font-size:15px;">
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}" style="color:#1e88e5; text-decoration:none; font-weight:500;">
{{ShortSha .ID.String}}
</a> - {{.MessageTitle}}
</li>
{{end}}
</ul>
{{end}}
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:28px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{.Link}}" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{.Link}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{.Link}}</p>
</td>
</tr>
</table>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{.Link}}
</p>
</div>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure notification – if you didn't expect this, please ignore this email.</p>
</div>
</td>
</tr>
</div>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>
+147 -73
View File
@@ -2,95 +2,169 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.Subject}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.Subject}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
blockquote { padding-left: 1em; margin: 1em 0; border-left: 1px solid #cbd5e1; color: #475569; }
ul { margin: 12px 0 16px; padding-left: 20px; }
li { margin-bottom: 6px; font-size: 15px; line-height: 1.5; color: #334155; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 16px;font-size:16px;line-height:1.5;color:#1e293b }
.email-text { margin:0 0 16px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:16px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Typography utilities */
.card-body a,.card-body a:link,.card-body a:visited { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
.card-body h4 { color:#1e293b!important;margin:24px 0 8px!important;font-size:18px!important;font-weight:600!important }
.card-body ul { margin:0 0 24px!important;padding-left:20px!important }
.card-body li { margin-bottom:6px!important;font-size:15px!important;line-height:1.5!important;color:#334155!important }
/* Content */
.horizon-content,.horizon-content * { color:#334155!important }
.horizon-content a,.horizon-content a:link,.horizon-content a:visited { color:#1e88e5!important;text-decoration:underline!important }
.horizon-content a:hover,.horizon-content a:active { color:#1565c0!important }
.horizon-content code,.horizon-content pre { color:#0f172a!important;background:#f1f5f9!important;border-color:#e2e8f0!important }
.horizon-content blockquote { border-left:1px solid #cbd5e1!important;color:#475569!important }
.horizon-content h1,.horizon-content h2,.horizon-content h3,.horizon-content h4,.horizon-content h5,.horizon-content h6 { color:#1e293b!important }
.horizon-content hr { border-color:#e2e8f0!important }
.horizon-content img { border:0;max-width:100%!important }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
{{$release_url := HTMLFormat "<a href='%s' style='color:#1e88e5; text-decoration:none; font-weight:500;'>%s</a>" .Release.HTMLURL .Release.TagName}}
{{$repo_url := HTMLFormat "<a href='%s' style='color:#1e88e5; text-decoration:none; font-weight:500;'>%s</a>" .Release.Repo.HTMLURL .Release.Repo.FullName}}
<p style="margin:0 0 16px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.release.new.text" .Release.Publisher.Name $release_url $repo_url}}
</p>
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
<h4 style="margin:24px 0 8px; font-size:18px; font-weight:600; color:#1e293b;">{{.locale.Tr "mail.release.title" .Release.Title}}</h4>
</td>
</tr>
{{if .Release.RenderedNote}}
{{.locale.Tr "mail.release.note"}}<br>
<div style="margin:12px 0 16px; font-size:15px; line-height:1.6; color:#334155;">
{{.Release.RenderedNote}}
</div>
{{end}}
<!-- Card -->
<tr>
<td class="email-card card-body">
<p style="margin:20px 0 8px; font-weight:500; color:#1e293b;">{{.locale.Tr "mail.release.downloads"}}</p>
<ul style="margin:0 0 24px; padding-left:20px;">
{{if not .DisableDownloadSourceArchives}}
<li>
<a href="{{.Release.Repo.HTMLURL}}/archive/{{.Release.TagName | PathEscapeSegments}}.zip" rel="nofollow" style="color:#1e88e5; text-decoration:none; font-weight:500;">{{.locale.Tr "mail.release.download.zip"}}</a>
</li>
<li>
<a href="{{.Release.Repo.HTMLURL}}/archive/{{.Release.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow" style="color:#1e88e5; text-decoration:none; font-weight:500;">{{.locale.Tr "mail.release.download.targz"}}</a>
</li>
{{$release_url := HTMLFormat "<a href='%s'>%s</a>" .Release.HTMLURL .Release.TagName}}
{{$repo_url := HTMLFormat "<a href='%s'>%s</a>" .Release.Repo.HTMLURL .Release.Repo.FullName}}
<p class="email-heading">
{{.locale.Tr "mail.release.new.text" .Release.Publisher.Name $release_url $repo_url}}
</p>
<h4>{{.locale.Tr "mail.release.title" .Release.Title}}</h4>
{{if .Release.RenderedNote}}
{{.locale.Tr "mail.release.note"}}<br>
<div class="horizon-content">{{.Release.RenderedNote}}</div>
{{end}}
{{if .Release.Attachments}}
{{range .Release.Attachments}}
<li>
<a href="{{.DownloadURL}}" target="_blank" style="color:#1e88e5; text-decoration:none; font-weight:500;">{{.Name}} ({{.Size | FileSize}})</a>
</li>
<p style="margin:20px 0 8px;font-weight:500;color:#1e293b;">{{.locale.Tr "mail.release.downloads"}}</p>
<ul>
{{if not .DisableDownloadSourceArchives}}
<li>
<a href="{{.Release.Repo.HTMLURL}}/archive/{{.Release.TagName | PathEscapeSegments}}.zip" rel="nofollow">{{.locale.Tr "mail.release.download.zip"}}</a>
</li>
<li>
<a href="{{.Release.Repo.HTMLURL}}/archive/{{.Release.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow">{{.locale.Tr "mail.release.download.targz"}}</a>
</li>
{{end}}
{{end}}
</ul>
{{if .Release.Attachments}}
{{range .Release.Attachments}}
<li>
<a href="{{.DownloadURL}}" target="_blank">{{.Name}} ({{.Size | FileSize}})</a>
</li>
{{end}}
{{end}}
</ul>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:16px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{.Link}}" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
</td>
</tr>
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{.Link}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{.Link}}</p>
</td>
</tr>
</table>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{.Link}}
</p>
</div>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure release notification – if you didn't expect this, please ignore this email.</p>
</div>
</td>
</tr>
</div>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>
+111 -45
View File
@@ -2,63 +2,129 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.Subject}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.Subject}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:’Helvetica Neue’,Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
.email-text { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:28px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Typography utilities */
.card-body a,.card-body a:link,.card-body a:visited { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
{{$url := HTMLFormat "<a href='%[1]s' style='color:#1e88e5; text-decoration:none; font-weight:500;'>%[2]s</a>" .Link .Repo}}
<p style="margin:0 0 20px; font-size:16px; line-height:1.5; color:#334155;">
{{.Subject}}. {{.locale.Tr "mail.repo.transfer.body" $url}}
</p>
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:28px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{.Link}}" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
</td>
</tr>
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<!-- Card -->
<tr>
<td class="email-card card-body">
{{$url := HTMLFormat "<a href=’%[1]s’>%[2]s</a>" .Link .Repo}}
<p class="email-heading">
{{.Subject}}. {{.locale.Tr "mail.repo.transfer.body" $url}}
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{.Link}}
</td>
</tr>
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{.Link}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{.Link}}</p>
</td>
</tr>
</table>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
</div>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure repository transfer notification – if you didn’t expect this, please ignore this email.</p>
</div>
</td>
</tr>
</div>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>
+120 -51
View File
@@ -2,69 +2,138 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.locale.Tr "mail.activate_account.title" (.DisplayName|DotEscape)}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.locale.Tr "mail.activate_account.title" (.DisplayName|DotEscape)}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:’Helvetica Neue’,Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 16px;font-size:16px;line-height:1.5;color:#1e293b }
.email-text { margin:0 0 8px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:28px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Typography utilities */
.card-body a { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
<p style="margin:0 0 16px; font-size:16px; line-height:1.5; color:#1e293b;">
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
</p>
<p style="margin:0 0 8px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.activate_account.text_1" (.DisplayName|DotEscape) AppName}}
</p>
<p style="margin:0 0 20px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.activate_account.text_2" .ActiveCodeLives}}
</p>
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
{{$activate_url := printf "%suser/activate?code=%s" AppUrl (QueryEscape .Code)}}
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:28px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{$activate_url}}" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">Activate Account</a>
</td>
</tr>
</table>
</td>
</tr>
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<!-- Card -->
<tr>
<td class="email-card card-body">
<p class="email-heading">
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{$activate_url}}
<p class="email-text">
{{.locale.Tr "mail.activate_account.text_1" (.DisplayName|DotEscape) AppName}}
</p>
</div>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure account activation – if you didn’t register, please ignore this email.</p>
</div>
<p class="email-subtext">
{{.locale.Tr "mail.activate_account.text_2" .ActiveCodeLives}}
</p>
</div>
</td>
</tr>
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
{{$activate_url := printf "%suser/activate?code=%s" AppUrl (QueryEscape .Code)}}
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{$activate_url}}" class="email-btn">{{.locale.Tr "mail.activate_account"}}</a>
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{$activate_url}}</p>
</td>
</tr>
</table>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
</td>
</tr>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>
+116 -48
View File
@@ -2,66 +2,134 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.locale.Tr "mail.activate_email.title" (.DisplayName|DotEscape)}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.locale.Tr "mail.activate_email.title" (.DisplayName|DotEscape)}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:’Helvetica Neue’,Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 16px;font-size:16px;line-height:1.5;color:#1e293b }
.email-text { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:28px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Typography utilities */
.card-body a { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
<p style="margin:0 0 16px; font-size:16px; line-height:1.5; color:#1e293b;">
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
</p>
<p style="margin:0 0 20px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.activate_email.text" .ActiveCodeLives}}
</p>
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
{{$activate_url := printf "%suser/activate_email?code=%s&email=%s" AppUrl (QueryEscape .Code) (QueryEscape .Email)}}
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:28px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{$activate_url}}" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">Verify Email Address</a>
</td>
</tr>
</table>
</td>
</tr>
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<!-- Card -->
<tr>
<td class="email-card card-body">
<p class="email-heading">
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{$activate_url}}
<p class="email-text">
{{.locale.Tr "mail.activate_email.text" .ActiveCodeLives}}
</p>
</div>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure email verification – if you didn’t request this, please ignore this email.</p>
</div>
</td>
</tr>
</div>
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
{{$activate_url := printf "%suser/activate_email?code=%s&email=%s" AppUrl (QueryEscape .Code) (QueryEscape .Email)}}
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{$activate_url}}" class="email-btn">{{.locale.Tr "mail.activate_email"}}</a>
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{$activate_url}}</p>
</td>
</tr>
</table>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
</td>
</tr>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>
@@ -2,72 +2,141 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.locale.Tr "mail.register_notify.title" (.DisplayName|DotEscape) AppName}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.locale.Tr "mail.register_notify.title" (.DisplayName|DotEscape) AppName}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:’Helvetica Neue’,Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 16px;font-size:16px;line-height:1.5;color:#1e293b }
.email-text { margin:0 0 8px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:28px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Typography utilities */
.card-body a { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
<p style="margin:0 0 16px; font-size:16px; line-height:1.5; color:#1e293b;">
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
</p>
<p style="margin:0 0 8px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.register_notify.text_1" AppName}}
</p>
<p style="margin:0 0 20px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.register_notify.text_2" .Username}}
</p>
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:28px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{AppUrl}}user/login" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">Log in to {{AppName}}</a>
</td>
</tr>
</table>
</td>
</tr>
{{$set_pwd_url := printf "%suser/forgot_password" AppUrl}}
<p style="margin:0 0 20px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.register_notify.text_3" $set_pwd_url}}
</p>
<!-- Card -->
<tr>
<td class="email-card card-body">
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<p class="email-heading">
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{AppUrl}}user/login
<p class="email-text">
{{.locale.Tr "mail.register_notify.text_1" AppName}}
</p>
</div>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure registration confirmation – if you didn’t register, please ignore this email.</p>
</div>
<p class="email-subtext">
{{.locale.Tr "mail.register_notify.text_2" .Username}}
</p>
</div>
</td>
</tr>
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{AppUrl}}user/login" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
</td>
</tr>
</table>
{{$set_pwd_url := printf "%suser/forgot_password" AppUrl}}
<p style="margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155;">
{{.locale.Tr "mail.register_notify.text_3" $set_pwd_url}}
</p>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{AppUrl}}user/login</p>
</td>
</tr>
</table>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
</td>
</tr>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>
+116 -47
View File
@@ -2,65 +2,134 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.locale.Tr "mail.reset_password.title" (.DisplayName|DotEscape)}}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="x-apple-disable-message-reformatting" />
<title>
{{.locale.Tr "mail.reset_password.title" (.DisplayName|DotEscape)}}
</title>
<style type="text/css">
.ExternalClass, .ReadMsgBody { width: 100%; background-color: #f4f6f9; }
/* Base */
body,.ExternalClass,.ReadMsgBody { background-color:#f4f6f9 }
.email-wrap { max-width:600px;margin:20px auto;font-family:’Helvetica Neue’,Helvetica,Arial,sans-serif }
/* Header */
.email-logo { display:inline-block;vertical-align:middle;margin-right:12px;border:0;outline:none }
.email-brand { font-size:22px;font-weight:600;color:#1e293b;letter-spacing:-0.2px;vertical-align:middle }
.email-header { padding:28px 32px 16px;border-bottom:1px solid #eef2f6;background:#ffffff;border-radius:12px 12px 0 0 }
/* Card */
.email-card { padding:32px 32px 24px;color:#334155;background:#ffffff }
.email-heading { margin:0 0 16px;font-size:16px;line-height:1.5;color:#1e293b }
.email-text { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
.email-subtext { margin:0 0 20px;font-size:16px;line-height:1.5;color:#334155 }
/* Divider */
.email-divider { height:1px;background:linear-gradient(90deg,transparent,#e2e8f0,transparent);margin:16px 0 8px }
/* Button */
.email-btn-row { padding:0;text-align:center }
.email-btn { display:inline-block;padding:14px 36px;font-size:16px;font-weight:500;color:#ffffff;text-decoration:none;background:#1e88e5;border-radius:48px;border:1px solid #1e88e5;letter-spacing:0.3px;text-align:center }
.email-btn-table { margin:28px 0 24px;border-collapse:separate }
/* Fallback link */
.email-link-box { border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px }
.email-link-label { margin:0 0 8px;font-size:14px;color:#475569;line-height:1.5 }
.email-link-url { margin:0;font-size:14px;font-family:monospace;color:#1e88e5;background:#ffffff;padding:10px 12px;border-radius:6px;border:1px solid #e2e8f0;word-break:break-all }
/* Footer */
.email-footer { padding:20px 32px 28px;background:#f9fbfd;border-top:1px solid #eef2f6;text-align:left;border-radius:0 0 12px 12px }
.email-footer-text { margin:0;font-size:14px;color:#64748b }
.email-footer-link { color:#1e88e5;text-decoration:none;font-weight:500;border-bottom:1px dotted #b9d5f0 }
/* Typography utilities */
.card-body a { color:#1e88e5!important;text-decoration:none!important;font-weight:500!important }
/* Responsive */
@media only screen and (max-width:480px) {
.email-header { padding:20px 20px 12px!important }
.email-card { padding:24px 20px 16px!important }
.email-btn-row { padding:0!important }
.email-footer { padding:16px 20px 24px!important }
}
</style>
</head>
<body style="margin:0; padding:0; background-color:#f4f6f9; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">
<center style="width:100%; table-layout:fixed;">
<div style="max-width:600px; margin:20px auto; background:#ffffff; border-radius:12px; box-shadow:0 4px 12px rgba(0,0,0,0.05); overflow:hidden;">
<body style="margin:0;padding:0;background:#f4f6f9;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
<center style="width:100%;table-layout:fixed;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;background:#ffffff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.05);overflow:hidden;" class="email-wrap">
<div style="padding:28px 32px 16px; border-bottom:1px solid #eef2f6;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
<tr>
<td style="vertical-align:middle;">
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" style="display:inline-block; vertical-align:middle; margin-right:12px; border:0; outline:none;">
<span style="font-size:22px; font-weight:600; color:#1e293b; letter-spacing:-0.2px; vertical-align:middle;">{{AppName}}</span>
</td>
</tr>
</table>
</div>
<!-- Floating Title -->
<tr>
<td class="email-header">
<div style="padding:32px 32px 24px; color:#334155;">
<p style="margin:0 0 16px; font-size:16px; line-height:1.5; color:#1e293b;">
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
</p>
<p style="margin:0 0 20px; font-size:16px; line-height:1.5; color:#334155;">
{{.locale.Tr "mail.reset_password.text" .ResetPwdCodeLives}}
</p>
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="32" height="32" class="email-logo" />
<span class="email-brand">{{AppName}}</span>
{{$recover_url := printf "%suser/recover_account?code=%s" AppUrl (QueryEscape .Code)}}
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:28px 0 24px; border-collapse:separate;">
<tr>
<td align="center" style="border-radius:48px; background-color:#1e88e5;" bgcolor="#1e88e5">
<a href="{{$recover_url}}" style="display:inline-block; padding:14px 36px; font-size:16px; font-weight:500; color:#ffffff; text-decoration:none; background-color:#1e88e5; border-radius:48px; border:1px solid #1e88e5; letter-spacing:0.3px; text-align:center;">Reset Password</a>
</td>
</tr>
</table>
</td>
</tr>
<div style="background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:16px 18px; margin:24px 0 16px; word-break:break-word;">
<p style="margin:0 0 8px; font-size:14px; color:#475569; line-height:1.5;">
{{.locale.Tr "mail.link_not_working_do_paste"}}
<!-- Card -->
<tr>
<td class="email-card card-body">
<p class="email-heading">
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
</p>
<p style="margin:0; font-size:14px; font-family:monospace; color:#1e88e5; background:#ffffff; padding:10px 12px; border-radius:6px; border:1px solid #e2e8f0; word-break:break-all;">
{{$recover_url}}
<p class="email-text">
{{.locale.Tr "mail.reset_password.text" .ResetPwdCodeLives}}
</p>
</div>
<div style="height:1px; background:linear-gradient(90deg, transparent, #e2e8f0, transparent); margin:16px 0 8px;"></div>
</div>
<div style="padding:20px 32px 28px; background:#f9fbfd; border-top:1px solid #eef2f6; text-align:left;">
<p style="margin:0; font-size:14px; color:#64748b;">
© <a href="{{AppUrl}}" target="_blank" rel="noopener noreferrer" style="color:#1e88e5; text-decoration:none; font-weight:500; border-bottom:1px dotted #b9d5f0;">{{AppName}}</a>
</p>
<p style="margin:6px 0 0; font-size:12px; color:#94a3b8;">Secure password reset link – if you didn’t request this, please ignore this email.</p>
</div>
</td>
</tr>
</div>
<!-- Divider -->
<tr>
<td class="email-divider"></td>
</tr>
<!-- Button & Link -->
<tr>
<td class="email-btn-row">
{{$recover_url := printf "%suser/recover_account?code=%s" AppUrl (QueryEscape .Code)}}
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
<tr>
<td align="center">
<a href="{{$recover_url}}" class="email-btn">{{.locale.Tr "mail.reset_password"}}</a>
</td>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
<tr>
<td style="padding:16px 18px;">
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
<p class="email-link-url">{{$recover_url}}</p>
</td>
</tr>
</table>
</td>
</tr>
<!-- Footer -->
<tr>
<td class="email-footer">
<p class="email-footer-text">
&copy;
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
&mdash; Gitea Mail Templates
</p>
</td>
</tr>
</table>
</center>
<div style="display:none; white-space:nowrap; font-size:0; line-height:0;"> </div>
</body>
</html>