postMail method

Future<RestApiResponse> postMail({
  1. String uuid = '',
  2. String from = '-',
  3. List<String>? to,
  4. List<String>? cc,
  5. List<String>? bcc,
  6. String name = '-',
  7. String description = '-',
  8. String subject = '-',
  9. String htmlContent = '-',
  10. String plainContent = '-',
  11. String template = '',
  12. Map<String, dynamic>? templateData,
  13. List<Map<String, dynamic>>? attachments,
  14. int priorityValue = 3,
  15. String priorityText = 'normal',
  16. bool acknowledgementRequired = false,
  17. bool keepCalendar = false,
  18. DateTime? startTime,
  19. String action = '',
  20. String actions = '',
  21. String serialization = '',
  22. bool assignAddress = false,
  23. bool assignProject = false,
  24. bool assignProduct = false,
  25. bool assignContact = false,
  26. bool sendAssignReceiver = false,
  27. bool assignAction = false,
})

Erstellt eine neue E-Mail als Entwurf

Legt eine neue E-Mail mit allen erforderlichen Headern und Inhalten an. Die E-Mail wird als Entwurf gespeichert und kann später bearbeitet oder gesendet werden.

uuid - Eindeutige UUID für die E-Mail (optional) from - Absender-Adresse (Standard: "-") to - Liste der Empfänger-Adressen cc - Liste der CC-Empfänger bcc - Liste der BCC-Empfänger subject - Betreff der E-Mail htmlContent - HTML-Inhalt der E-Mail plainContent - Plain-Text-Inhalt der E-Mail template - Vorlagen-Name für automatische Inhaltserstellung templateData - Daten für die Vorlagen-Verarbeitung attachments - Liste der Anhänge (Format: {"name": "file.pdf", "data": "base64..."}) priorityValue - Prioritätswert (1=hoch, 3=normal, 5=niedrig) acknowledgementRequired - Lesebestätigung erforderlich

Returns: RestApiResponse mit E-Mail-ID und Erstellungsstatus

Beispiel:

RestApiResponse response = await api.v1.mail.postMail(
  to: ["kunde@example.com"],
  subject: "Angebot Nr. 12345",
  htmlContent: "<p>Sehr geehrte Damen und Herren...</p>",
  priorityValue: 2
);

Hinweis zur neuen API: Erstellt eine E-Mail als Objekt (POST v1/mail).

Implementation

Future<RestApiResponse> postMail({
  String uuid = '',
  String from = '-',
  List<String>? to,
  List<String>? cc,
  List<String>? bcc,
  String name = '-',
  String description = '-',
  String subject = '-',
  String htmlContent = '-',
  String plainContent = '-',
  String template = '',
  Map<String, dynamic>? templateData,
  List<Map<String, dynamic>>? attachments,
  int priorityValue = 3,
  String priorityText = 'normal',
  bool acknowledgementRequired = false,
  bool keepCalendar = false,
  DateTime? startTime,
  String action = '',
  String actions = '',
  String serialization = '',
  bool assignAddress = false,
  bool assignProject = false,
  bool assignProduct = false,
  bool assignContact = false,
  bool sendAssignReceiver = false,
  bool assignAction = false,
}) {
  final Map<String, String> query = <String, String>{};
  if (action.isNotEmpty) query['action'] = action;
  if (actions.isNotEmpty) query['actions'] = actions;
  if (serialization.isNotEmpty) query['serialization'] = serialization;

  final Map<String, dynamic> body = <String, dynamic>{
    '~UUID': uuid,
    'from': from,
  };
  if (to != null) body['to'] = to;
  if (cc != null) body['cc'] = cc;
  if (bcc != null) body['bcc'] = bcc;
  body['name'] = name;
  body['description'] = description;
  body['subject'] = subject;
  body['htmlContent'] = htmlContent;
  body['plainContent'] = plainContent;
  if (template != '') body['template'] = template;
  if (templateData != null) body['templateData'] = templateData;
  if (attachments != null) body['attachments'] = attachments;
  body['acknowledgementRequired'] = acknowledgementRequired;
  body['keepCalendar'] = keepCalendar;
  if (startTime != null) body['startTime'] = startTime.toISOFormatString();
  // Bewusste Legacy-Parität: postMail baut priorityValue/priorityText zwar,
  // hängt sie aber NIE an den Body (toter Code im Legacy-Manager). Deshalb
  // gibt es hier - anders als bei patchMail/postMailSend - keinen
  // 'priority'-Schlüssel. priorityValue/priorityText bleiben nur zur
  // Signatur-Kompatibilität erhalten.
  body['assignAddresses'] = assignAddress;
  body['assignProjects'] = assignProject;
  body['assignProducts'] = assignProduct;
  body['assignContacts'] = assignContact;
  body['assignActions'] = assignAction;
  body['sendAssignReceiver'] = sendAssignReceiver;

  return _execute(
    method: ApiHttpMethod.post,
    path: '/mail',
    queryParameters: query,
    body: jsonEncode(body),
    operation: 'postMail',
  );
}