docs

Home All functions Legacy functions Categories

vuSendMailWait()

vuSendMailWait(*CSTRING InFrom,*CSTRING InTo,*CSTRING InCC,*CSTRING InBCC,*CSTRING InSubject,*CSTRING InBody,*CSTRING InAttach),SIGNED,PROC,PASCAL,RAW,NAME('vuSendMailWait')

Purpose

Queues one message (same input contract as vuSendMail()) and blocks until queue processing finishes.

Parameters

| Parameter | Type | Description | |—|—|—| | InFrom | *CSTRING | Sender selector. You may pass a full mailbox, a plain email address, a display name only, or blank. See From selection rules below. | | InTo | *CSTRING | Recipient email address list. | | InCC | *CSTRING | CC address list. | | InBCC | *CSTRING | BCC address list. | | InSubject | *CSTRING | Message subject text. | | InBody | *CSTRING | Message body text. | | InAttach | *CSTRING | Attachment file path. |

Return value / error codes

Example (Clarion)

MAP
  MODULE('vuMail.dll')
    vuSendMailWait(*CSTRING InFrom,*CSTRING InTo,*CSTRING InCC,*CSTRING InBCC,*CSTRING InSubject,*CSTRING InBody,*CSTRING InAttach),SIGNED,PROC,PASCAL,RAW,NAME('vuSendMailWait')
  END
END

rc      LONG
cFrom   CSTRING(256)
cTo     CSTRING(256)
cCC     CSTRING(256)
cBCC    CSTRING(256)
cSubj   CSTRING(256)
cBody   CSTRING(1024)
cAttach CSTRING(260)

cFrom = 'sender@example.com'
cTo = 'recipient@example.com'
cCC = ''
cBCC = ''
cSubj = 'Wait test'
cBody = 'Send and wait'
cAttach = ''

rc = vuSendMailWait(cFrom, cTo, cCC, cBCC, cSubj, cBody, cAttach)
MESSAGE('vuSendMailWait rc=' & rc)

Notes

Home All functions Legacy functions Categories

From display name behavior

From selection rules

vuSendMailWait() resolves the effective sender using these rules:

This keeps legacy behavior intact while allowing per-message display-name overrides when a stored profile sender already exists.

Notes on OAuth/profile sends