Codeunit 8905 "Email Message Impl."
System Application · System.Email
Across versions
- BC23present
- BC242 procedures added
- BC2512 procedures added, 3 procedures removed
- BC261 procedures added
- BC273 procedures added, 1 procedures removed
- BC2811 procedures added
- BC29-30unchanged
Neighbourhood 12 connected objects and pages
System Application · System.Email · BC23-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| Access | Internal |
| Permissions | tabledata “Sent Email” = r, tabledata “Email Inbox” = r, tabledata “Email Outbox” = rim, tabledata “Email Message” = rimd, tabledata “Email Error” = rd, tabledata “Email Recipient” = rid, tabledata “Email Message Attachment” = rimd, tabledata “Email Related Record” = rd, tabledata “Tenant Media” = r… |
Events published
OnBeforeDeleteSentEmailAttachment(var BypassSentCheck: Boolean)(internal)- subscribers: Codeunit 8865 “Email Attachments Impl” OnBeforeDeleteSentEmailAttachment
Event subscriptions
- OnBeforeInsertEventEmailInbox subscribes to Table “Email Inbox” OnBeforeInsertEvent
- OnAfterDeleteEmailInbox subscribes to Table “Email Inbox” OnAfterDeleteEvent
- OnAfterDeleteSentEmail subscribes to Table “Sent Email” OnAfterDeleteEvent
- OnAfterDeleteEmailOutbox subscribes to Table “Email Outbox” OnAfterDeleteEvent
- OnBeforeDeleteEmailMessage subscribes to Table “Email Message” OnBeforeDeleteEvent
- OnBeforeModifyEmailMessage subscribes to Table “Email Message” OnBeforeModifyEvent
- OnBeforeDeleteAttachment subscribes to Table “Email Message Attachment” OnBeforeDeleteEvent
- OnBeforeDeleteRecipient subscribes to Table “Email Recipient” OnBeforeDeleteEvent
- OnBeforeInsertAttachment subscribes to Table “Email Message Attachment” OnBeforeInsertEvent
- OnBeforeInsertRecipient subscribes to Table “Email Recipient” OnBeforeInsertEvent
Procedures
Create(EmailMessageImpl: Codeunit "Email Message Impl.")+ BC25 + BC25 − BC25 − BC25Create(ToRecipients: Text; Subject: Text; Body: Text; HtmlFormatted: Boolean)+ BC25 + BC25 − BC25 − BC25Create(ToRecipients: Text; Subject: Text; Body: Text; HtmlFormatted: Boolean; Sanitize: Boolean)+ BC25 + BC25 − BC25 − BC25Create(Recipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; CCRecipients: List of [Text]; BCCRecipients: List of [Text]; Sanitize: Boolean)+ BC25 + BC25 − BC25 − BC25CreateReply(ToRecipients: Text; Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text)+ BC25 + BC25CreateReply(ToRecipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text; CCRecipients: List of [Text]; BCCRecipients: List of [Text])+ BC25 + BC25CreateReplyAll(Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text)+ BC25UpdateMessage(ToRecipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text; CCRecipients: List of [Text]; BCCRecipients: List of [Text]; Sanitize: Boolean)+ BC25 − BC25Modify()GetBody(): TextSetBody(BodyText: Text)AppendToBody(BodyText: Text)GetExternalId(): Text[2048]+ BC25GetSubject(): Text[2048]SetSubject(Subject: Text)IsBodyHTMLFormatted(): BooleanSetBodyHTMLFormatted(Value: Boolean)AddHeader(HeaderName: Text; HeaderValue: Text)+ BC28SetHeader(HeaderName: Text; HeaderValue: Text)+ BC28GetHeader(HeaderName: Text; var Value: Text): Boolean+ BC28FlushHeaders()+ BC28IsRead(): BooleanGetContentTypeFromFilename(FileName: Text): Text[250]AddAttachment(AttachmentName: Text[250]; ContentType: Text[250]; AttachmentBase64: Text)+ BC28AddAttachment(AttachmentName: Text[250]; ContentType: Text[250]; AttachmentInStream: InStream)+ BC28AddAttachment(AttachmentName: Text[250]; ContentType: Text[250]; AttachmentInStream: InStream; InLine: Boolean; ContentId: Text[40])+ BC28AddAttachment(AttachmentName: Text[250]; ContentType: Text[250]; AttachmentInStream: InStream; InLine: Boolean; ContentId: Text[40]; MessageAlreadyRetrieved: Boolean)+ BC28AddAttachmentInternal(AttachmentName: Text[250]; ContentType: Text[250]; AttachmentInStream: InStream): Integer+ BC28AddAttachmentInternal(AttachmentName: Text[250]; ContentType: Text[250]; AttachmentInStream: InStream; InLine: Boolean; ContentId: Text[40]): Integer+ BC28AddAttachmentInternal(AttachmentName: Text[250]; ContentType: Text[250]; AttachmentInStream: InStream; InLine: Boolean; ContentId: Text[40]; MessageAlreadyRetrieved: Boolean): Integer+ BC28AddAttachmentsFromScenario(var EmailAttachments: Record "Email Attachments")GetRecipients(): List of [Text]GetRecipients(RecipientType: Enum "Email Recipient Type"): List of [Text]GetRecipientsAsText(RecipientType: Enum "Email Recipient Type"): TextSetRecipients(RecipientType: Enum "Email Recipient Type"; RecipientsText: Text)SetRecipients(RecipientType: Enum "Email Recipient Type"; Recipients: List of [Text])AddRecipient(RecipientType: Enum "Email Recipient Type"; Recipient: Text)Attachments_DeleteContent(): BooleanAttachments_DeleteContent(BypassSentCheck: Boolean): BooleanAttachments_Delete(): BooleanAttachments_Delete(BypassSentCheck: Boolean): BooleanAttachments_First(): BooleanAttachments_Next(): IntegerAttachments_GetId(): BigInteger+ BC26Attachments_GetName(): Text[250]Attachments_GetContent(var InStream: InStream)Attachments_GetContentBase64(): TextAttachments_GetContentType(): Text[250]Attachments_GetContentId(): Text[40]Attachments_IsInline(): BooleanAttachments_GetLength(): IntegerGetRelatedAttachments(var EmailRelatedAttachments: Record "Email Related Attachment"): BooleanGetRelatedAttachments(EmailMessageId: Guid; var EmailRelatedAttachmentOut: Record "Email Related Attachment"): BooleanGetId(): GuidGet(MessageId: Guid): BooleanDeleteOrphanedMessages(StartMessageId: Guid; MessagesToIterate: Integer): Guid+ BC24DeleteEmailRecipientsIfOrphaned(StartMessageId: Guid; RecipientsToIterate: Integer): Guid+ BC27ValidateRecipients()GetNoOfModifies(): IntegerFormatFileSize(SizeInBytes: Integer): Text(internal)MarkAsRead()GetEmailMessage(var EmailMessage: Record "Email Message")
Plus 19 local procedures.
Calls
From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.
- Codeunit 4100 “Temp Blob” (4 calls:
AddAttachment → CreateInStream,AddAttachment → CreateOutStream,InsertAttachmentsFromScenario → CreateInStream, …) - Codeunit 4110 “Base64 Convert” (2 calls:
AddAttachment → FromBase64,Attachments_GetContentBase64 → ToBase64) - Codeunit 8894 “Email Account” (1 call:
ValidateRecipients → ValidateEmailAddress) - Codeunit 8900 “Email Impl” (1 call:
Create → AddRelation) - Codeunit 8904 “Email Message” (1 call:
Attachments_GetContent → OnGetAttachmentContent)
Called by
- Codeunit 8904 “Email Message” (38 calls:
AddAttachment → AddAttachment,AddAttachmentFromScenario → AddAttachmentsFromScenario,AddHeader → AddHeader, …) - Codeunit 8906 “Email Editor” (13 calls:
AttachFromWordTemplate → AddAttachmentInternal,AttachFromWordTemplate → GetContentTypeFromFilename,GetEmailMessage → Create, …) - Codeunit 8888 “Email Dispatcher” (8 calls:
LogAttachments → Attachments_First,LogAttachments → Attachments_GetContentType,LogAttachments → Attachments_GetLength, …) - Codeunit 8907 “Email Viewer” (5 calls:
EditAndSend → Create,EditAndSend → GetId,GetEmailMessage → Get, …) - Page 12 “Email Viewer” (5 calls:
OnAfterGetRecord → Attachments_First,OnAfterGetRecord → GetBody,OnAfterGetRecord → GetRecipientsAsText, …) - Codeunit 8900 “Email Impl” (4 calls:
OpenInEditorWithScenario → Get,OpenInEditorWithScenario → GetId,OpenInEditorWithScenario → GetSubject, …) - Page 13 “Email Editor” (4 calls:
OnAfterGetRecord → GetBody,OnAfterGetRecord → GetRecipientsAsText,OnAfterGetRecord → GetSubject, …) - Page 8889 “Email Attachments” (2 calls:
OnAfterGetRecord → FormatFileSize,UpdateValues → GetId)
Recent changes
- 2026-09-21 #11612 Multiple runs of email retrieval on the same emails don’t persist again (main, BC30, fix)
Ask your agent
Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "codeunit", object_name: "Email Message Impl."), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.