Почтовый кабинет: регистрация, папки, черновики, вложения, грид @jambotron/aria-grid, интерфейс по synthwave-шаблону
Бэкенд: регистрация со входом сразу и /api/config, профиль и смена пароля, свои папки, PATCH письма (прочитано, флажок, перенос; Спам ставит отметку), корзина и очистка, черновики, несколько адресатов и копия, вложения черновика уходят с письмом, вложения и заголовки To/Cc входящих сохраняются, письма заблокированных — в Спам. Исправлено: загрузка файла (415), колонка content_id (500 на любых вложениях), SPA-маршрут с точкой. Фронтенд переписан: все таблицы — грид, оформление — шаблон synthwave-design-showcase.html. α Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,31 +1,46 @@
|
||||
package com.mailserver.dto;
|
||||
|
||||
import jakarta.validation.constraints.Email;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Size;
|
||||
|
||||
/**
|
||||
* "Send" from the web client. {@code to} and {@code cc}: one or more addresses separated by commas, semicolons or
|
||||
* spaces. {@code draftId}: the draft being sent — its attachments go with the message, the draft is removed.
|
||||
*/
|
||||
public class SendRequest {
|
||||
|
||||
@NotBlank
|
||||
@Email
|
||||
@Size(max = 5000)
|
||||
private String to;
|
||||
|
||||
@NotBlank
|
||||
@Size(max = 5000)
|
||||
private String cc;
|
||||
|
||||
@Size(max = 1000)
|
||||
private String subject;
|
||||
|
||||
@NotBlank
|
||||
@Size(max = 1_000_000)
|
||||
private String body;
|
||||
|
||||
private boolean html = false;
|
||||
|
||||
private Long draftId;
|
||||
|
||||
public String getTo() { return to; }
|
||||
public void setTo(String to) { this.to = to; }
|
||||
|
||||
public String getSubject() { return subject; }
|
||||
public String getCc() { return cc; }
|
||||
public void setCc(String cc) { this.cc = cc; }
|
||||
|
||||
public String getSubject() { return subject == null ? "" : subject; }
|
||||
public void setSubject(String subject) { this.subject = subject; }
|
||||
|
||||
public String getBody() { return body; }
|
||||
public String getBody() { return body == null ? "" : body; }
|
||||
public void setBody(String body) { this.body = body; }
|
||||
|
||||
public boolean isHtml() { return html; }
|
||||
public void setHtml(boolean html) { this.html = html; }
|
||||
|
||||
public Long getDraftId() { return draftId; }
|
||||
public void setDraftId(Long draftId) { this.draftId = draftId; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user