id: mail_sender
name: Mail Sender
version: 1.0.0
description: "Send email over SMTP — plain-text and rich HTML bodies (with inline data-URI images), file attachments (base64), CC/BCC, Reply-To and custom headers. Supports plain, STARTTLS and SSL/TLS connections with optional authentication. Stdlib-only (smtplib), no extra Python dependencies; run on a remote engine when the SMTP server is only reachable from inside your network."
changelog: "1.0.0 — Initial release: send-mail (text/HTML, inline images, base64 attachment, CC/BCC/Reply-To/custom headers) and a connectivity test."
category: email

# Per-instance configuration. Connects to an SMTP server to send outbound mail.
# tls: None (plain, usually port 25), STARTTLS (upgrade a plain connection,
# usually port 587), or SSL/TLS (implicit TLS, usually port 465). Username and
# password are optional (some relays accept unauthenticated internal senders).
config_schema:
  properties:
    host:
      type: string
      description: "SMTP server hostname or IP"
    port:
      type: string
      description: "SMTP port (25 plain, 587 STARTTLS, 465 SSL/TLS)"
      default: "25"
    username:
      type: string
      description: "SMTP username (leave empty for unauthenticated relays)"
    password:
      type: string
      description: "SMTP password"
      x-soar-sensitive: true
    from_address:
      type: string
      description: "Default sender address — 'user@host.com' or 'Full Name <user@host.com>'"
    fqdn:
      type: string
      description: "Fully qualified domain name to present in EHLO (optional)"
    tls:
      type: string
      description: "Connection security: None, STARTTLS or SSL/TLS"
      default: None
    insecure:
      type: boolean
      description: "Trust any TLS certificate (not secure)"
      default: false
  required:
    - host
    - port
    - from_address

commands:
  - id: send_mail
    name: mail-sender-send-mail
    description: "Send an email. At least one recipient (to/cc/bcc) is required; subject and body may be empty."
    inputs_schema:
      properties:
        to: { type: string, description: "Recipient(s) for the To field, comma-separated" }
        cc: { type: string, description: "CC recipient(s), comma-separated" }
        bcc: { type: string, description: "BCC recipient(s), comma-separated" }
        subject: { type: string, description: "Subject" }
        body: { type: string, description: "Plain-text body" }
        html_body: { type: string, description: "HTML body (inline data-URI images are extracted and embedded)" }
        reply_to: { type: string, description: "Reply-To address" }
        sender: { type: string, description: "Override the configured From address" }
        attachment_name: { type: string, description: "Attachment file name (with attachment_base64)" }
        attachment_base64: { type: string, description: "Attachment content, base64-encoded" }
        additional_headers: { type: string, description: "Extra headers as name=value;name2=value2" }
      required: []
    outputs_schema: { properties: {} }

  - id: test_connection
    name: mail-sender-test-connection
    description: "Verify the SMTP connection and credentials without sending mail (used by the Test button)."
    risk: read
    inputs_schema:
      properties: {}
      required: []
    outputs_schema: { properties: {} }
