Alerting & messaging can be used to inform the right person at the right time with the right data. For example you could send out alerts to Slack or MS Teams when stock levels drop below a threshold, or you could send out weekly emails with personalized PDF or Excel reports to each store manager in a large retail company.Related info per connector:Slack - Getting started in PeliqanMicrosoft Teams - Getting started in PeliqanPostmark - Getting started in Peliqan
email = { "from": "no-reply@acme.com", "to": "john@acme.com", "subject": "Here is your weekly report", "text": "We are happy to provide you with this report !", "html": "We are <b>happy</b> to provide you with this report !"}conn = pq.connect('Postmark')result = conn.add('email', email)st.json(result) # for debugging only, see result of sending email to Postmark
import base64text_file_content = "This will be in the attached text file."email = { "from": "no-reply@acme.com", "to": "john@acme.com", "subject": "Test email with attachment", "text": "See Text file attached.", "html": "See Text file attached.", "attachment_name": "my_file.txt", "attachment_content_base64": base64.b64encode(text_file_content.encode("ascii")).decode("ascii"), "attachment_contenttype": "text/plain"}conn = pq.connect('Postmark')result = conn.add('email_with_attachment', email)st.json(result) # for debugging only, see result of sending email to Postmark
See the Reporting section for a detailed example on how to generate a PDF file and send that PDF file as an attachment in an email:Generate and distribute PDF reports
⌘I
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Peliqan documentation","description":"Peliqan.io - the trust layer for AI.","colors":{"primary":"#FF7F2F","light":"#F69C63","dark":"#FF7F2F"},"logo":{"light":"https://mintcdn.com/peliqan-9d7f0393/W5qJqBlsGbR9us2O/images/peliqan-logo-gradient.png?fit=max\u0026auto=format\u0026n=W5qJqBlsGbR9us2O\u0026q=85\u0026s=72328a1cf4f09a999d51ff20683e09ba","dark":"https://mintcdn.com/peliqan-9d7f0393/W5qJqBlsGbR9us2O/images/peliqan-logo-gradient.png?fit=max\u0026auto=format\u0026n=W5qJqBlsGbR9us2O\u0026q=85\u0026s=72328a1cf4f09a999d51ff20683e09ba","href":"https://help.peliqan.io"},"favicon":{"light":"https://mintcdn.com/peliqan-9d7f0393/w6zivbkuDk9k8NHZ/images/peliqan-icon-gradient.png?fit=max\u0026auto=format\u0026n=w6zivbkuDk9k8NHZ\u0026q=85\u0026s=ab4e802992c2eb6d1fea9c531577ef02","dark":"https://mintcdn.com/peliqan-9d7f0393/w6zivbkuDk9k8NHZ/images/peliqan-icon-gradient.png?fit=max\u0026auto=format\u0026n=w6zivbkuDk9k8NHZ\u0026q=85\u0026s=ab4e802992c2eb6d1fea9c531577ef02"},"navbar":{"links":[{"href":"/connectors","label":"Connectors"},{"href":"https://peliqan.io/contact-us","label":"Contact support"},{"href":"https://helpdesk.peliqan.io/tickets","label":"Helpdesk portal"}],"primary":{"type":"button","label":"Book a demo","href":"https://peliqan.io/contact/"}},"integrations":{"ga4":{"measurementId":"G-PCG8NS1HD9"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"peliqan-9d7f0393","hasAudioNarration":false,"actualSubdomain":"peliqan-9d7f0393","customDomains":["help.peliqan.io"],"gitSource":{"type":"github","owner":"peliqan-io","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aeaf4af476494e6dae2d7ba","collectionId":"282e80e8-a1a7-45d4-8ff9-41742d6b868e","liveDeploymentHistoryId":"6aeaf4af476494e6dae2d7ba","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aeda691f8ed849a5c7d7d1c","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Connector Guides","count":97},{"language":"default","tag":"Documentation","count":62},{"language":"default","tag":"For Developers","count":54},{"language":"default","tag":"Data App Use Cases","count":35},{"language":"default","tag":"Basics","count":29},{"language":"default","tag":"Advanced","count":18},{"language":"default","tag":"Connect Your BI Tool","count":16},{"language":"default","tag":"Data Apps","count":12},{"language":"default","tag":"Predictions and ML","count":9},{"language":"default","tag":"For Partners","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#content-area{max-width:730px!important}"}],"page":{"pagePath":"low-code-python-data-apps/alerting-messaging","slug":"/low-code-python-data-apps/alerting-messaging","pageMetadata":{"title":"Alerting \u0026 messaging","sidebarTitle":"Alerting","description":"Alerting \u0026 messaging can be used to inform the right person at the right time with the right data.","href":"/low-code-python-data-apps/alerting-messaging"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Alerting \u0026 messaging can be used to inform the right person at the right time with the right data.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`alerting-\u0026-messaging`,children:`Alerting \u0026 messaging`}),`\n`,_jsx(_components.p,{children:`Alerting \u0026 messaging can be used to inform the right person at the right time with the right data. For example you could send out alerts to Slack or MS Teams when stock levels drop below a threshold, or you could send out weekly emails with personalized PDF or Excel reports to each store manager in a large retail company.`}),`\n`,_jsx(_components.p,{children:`Related info per connector:`}),`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`/low-code-python-data-apps/writeback-reverse-etl-data-sync/writeback-examples-per-connector/slack`,children:`Slack - Getting started in Peliqan`})}),`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`/connect-to-data/getting-started-with-microsoft-teams`,children:`Microsoft Teams - Getting started in Peliqan`})}),`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`/low-code-python-data-apps/writeback-reverse-etl-data-sync/postmark`,children:`Postmark - Getting started in Peliqan`})}),`\n`,_jsx(Heading,{level:`1`,id:`send-a-message-to-slack`,children:`Send a message to Slack`}),`\n`,_jsx(_components.p,{children:`You can use the Slack connector to send messages and alerts to Slack users and Slack channels. Example:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`message `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Stock levels are below threshold !\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"channel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"logistics\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"username\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Peliqan bot\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`conn `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pq.connect(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Slack'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` conn.add(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'message'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, message)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`st.json(result) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# for debugging only, see result of sending message to Slack`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`1`,id:`send-out-emails`,children:`Send out emails`}),`\n`,_jsx(_components.p,{children:`You can sign up for a free account on Postmark, and use the Postmark connector in Peliqan to both receive and send out emails.`}),`\n`,_jsx(Heading,{level:`2`,id:`send-an-email`,children:`Send an email`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`email `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"from\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"no-reply@acme.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"to\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"john@acme.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"subject\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Here is your weekly report\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"We are happy to provide you with this report !\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"html\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"We are \u003cb>happy\u003c/b> to provide you with this report !\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`conn `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pq.connect(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Postmark'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` conn.add(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'email'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, email)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`st.json(result) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# for debugging only, see result of sending email to Postmark`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`send-email-with-data`,children:`Send email with data`}),`\n`,_jsx(_components.p,{children:`Example sending an email with the result of an SQL SELECT query, on a table in the Peliqan data warehouse:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` json`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`dbconn `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pq.dbconnect(pq.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`DW_NAME`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`query `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"SELECT id, name FROM my_schema.my_table\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`df `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` dbconn.fetch(pq.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`DW_NAME`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`query`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` query, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`df`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` True`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# more info: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_html.html`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`html `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` df.to_html(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`col_space`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 50`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`border`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`justify`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"left\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`email `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"from\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"no-reply@acme.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"to\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"john@acme.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"subject\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Your data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"html\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Here is your data: \u003cbr>\u003cbr>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` json.dumps(html).strip(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'\"'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`conn `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pq.connect(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Postmark'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` conn.add(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'email'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, email)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`st.json(result) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# for debugging only, see result of sending email to Postmark`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`send-email-with-text-file-as-attachment`,children:`Send email with text file as attachment`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`18`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`18`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` base64`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`text_file_content `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"This will be in the attached text file.\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`email `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"from\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"no-reply@acme.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"to\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"john@acme.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"subject\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Test email with attachment\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"See Text file attached.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"html\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"See Text file attached.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"attachment_name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"my_file.txt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"attachment_content_base64\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: base64.b64encode(text_file_content.encode(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ascii\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)).decode(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ascii\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"attachment_contenttype\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"text/plain\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`conn `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pq.connect(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Postmark'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` conn.add(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'email_with_attachment'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, email)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`st.json(result) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# for debugging only, see result of sending email to Postmark`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`send-email-with-csv-file-as-attachment`,children:`Send email with CSV file as attachment`}),`\n`,_jsx(_components.p,{children:`Example where we store the result of SQL SELECT query in a CSV file and send this file as an email attachment:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`22`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`22`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` base64`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`dbconn `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pq.dbconnect(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`PQ`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`DW_NAME`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`query `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"SELECT id, name FROM pipedrive.organizations\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`df `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` dbconn.fetch(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`PQ`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`DW_NAME`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`query`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` query, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`df`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` True`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`csv `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"index\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` df.to_csv()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`st.text(csv) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# optional, show CSV on screen`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`email_server `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pq.connect(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Postmark'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`email `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"from\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"no-reply@acme.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"to\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"john@acme.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"subject\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Test email with attachment\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"text\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"See CSV file attached.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"html\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"See CSV file attached.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"attachment_name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"data.csv\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"attachment_content_base64\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: base64.b64encode(csv.encode(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ascii\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)).decode(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ascii\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"attachment_contenttype\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"text/csv\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`result `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` email_server.add(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'email_with_attachment'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, email)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`st.json(result) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# optional, show result of sending the email`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`send-email-with-pdf-as-attachment`,children:`Send email with PDF as attachment`}),`\n`,_jsx(_components.p,{children:`See the Reporting section for a detailed example on how to generate a PDF file and send that PDF file as an attachment in an email:`}),`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`/low-code-python-data-apps/reporting/generate-a-pdf-using-html`,children:`Generate and distribute PDF reports`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Alerting \u0026 messaging","sidebarTitle":"Alerting","description":"Alerting \u0026 messaging can be used to inform the right person at the right time with the right data.","href":"/low-code-python-data-apps/alerting-messaging"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Alerting \u0026 messaging","slug":"alerting-\u0026-messaging","depth":1,"children":[]},{"title":"Send a message to Slack","slug":"send-a-message-to-slack","depth":1,"children":[]},{"title":"Send out emails","slug":"send-out-emails","depth":1,"children":[]},{"title":"Send an email","slug":"send-an-email","depth":2,"children":[]},{"title":"Send email with data","slug":"send-email-with-data","depth":2,"children":[]},{"title":"Send email with text file as attachment","slug":"send-email-with-text-file-as-attachment","depth":2,"children":[]},{"title":"Send email with CSV file as attachment","slug":"send-email-with-csv-file-as-attachment","depth":2,"children":[]},{"title":"Send email with PDF as attachment","slug":"send-email-with-pdf-as-attachment","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"peliqan-9d7f0393","siteName":"Peliqan documentation","title":"Alerting \u0026 messaging - Peliqan documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-06T07:22:27.614Z","originalFileLocation":"low-code-python-data-apps/alerting-messaging.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Alerting \u0026amp; messaging can be used to inform the right person at the right time with the right data.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Peliqan documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/peliqan-9d7f0393/ZtfBgJGLa7402fFc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/peliqan-9d7f0393/ZtfBgJGLa7402fFc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/peliqan-9d7f0393/ZtfBgJGLa7402fFc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/peliqan-9d7f0393/ZtfBgJGLa7402fFc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/peliqan-9d7f0393/ZtfBgJGLa7402fFc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/peliqan-9d7f0393/ZtfBgJGLa7402fFc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/peliqan-9d7f0393/ZtfBgJGLa7402fFc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/peliqan-9d7f0393/ZtfBgJGLa7402fFc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/peliqan-9d7f0393/ZtfBgJGLa7402fFc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Alerting \u0026amp; messaging - Peliqan documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Alerting \u0026amp; messaging can be used to inform the right person at the right time with the right data.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Peliqan documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://help.peliqan.io/low-code-python-data-apps/alerting-messaging\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://peliqan-9d7f0393.mintlify.site/_mintlify/api/og/v2?division=Data+App+Use+Cases\u0026amp;title=Alerting+%26+messaging\u0026amp;description=Alerting+%26+messaging+can+be+used+to+inform+the+right+person+at+the+right+time+with+the+right+data.\u0026amp;theme=c58b4111cf860ef9f9fc27e7\u0026amp;signature=a93ac724538464108fe40a2f1e8bf2ce8dd8bc326ad3e9a01cdab091ffe69371\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Alerting \u0026amp; messaging - Peliqan documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Alerting \u0026amp; messaging can be used to inform the right person at the right time with the right data.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://peliqan-9d7f0393.mintlify.site/_mintlify/api/og/v2?division=Data+App+Use+Cases\u0026amp;title=Alerting+%26+messaging\u0026amp;description=Alerting+%26+messaging+can+be+used+to+inform+the+right+person+at+the+right+time+with+the+right+data.\u0026amp;theme=c58b4111cf860ef9f9fc27e7\u0026amp;signature=a93ac724538464108fe40a2f1e8bf2ce8dd8bc326ad3e9a01cdab091ffe69371\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/peliqan-9d7f0393/ZtfBgJGLa7402fFc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Peliqan documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF7F2F\">\u003clink data-mint-head rel=\"canonical\" href=\"https://help.peliqan.io/low-code-python-data-apps/alerting-messaging\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/low-code-python-data-apps/alerting-messaging.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://help.peliqan.io/#organization\",\"name\":\"Peliqan documentation\",\"url\":\"https://help.peliqan.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/peliqan-9d7f0393/W5qJqBlsGbR9us2O/images/peliqan-logo-gradient.png?fit=max\u0026auto=format\u0026n=W5qJqBlsGbR9us2O\u0026q=85\u0026s=72328a1cf4f09a999d51ff20683e09ba\"}},{\"@type\":\"WebSite\",\"@id\":\"https://help.peliqan.io#website\",\"name\":\"Peliqan documentation\",\"url\":\"https://help.peliqan.io\",\"publisher\":{\"@id\":\"https://help.peliqan.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://help.peliqan.io/low-code-python-data-apps/alerting-messaging#webpage\",\"url\":\"https://help.peliqan.io/low-code-python-data-apps/alerting-messaging\",\"name\":\"Alerting \u0026 messaging\",\"description\":\"Alerting \u0026 messaging can be used to inform the right person at the right time with the right data.\",\"dateModified\":\"2026-10-06T07:22:27.614Z\",\"isPartOf\":{\"@id\":\"https://help.peliqan.io#website\"},\"breadcrumb\":{\"@id\":\"https://help.peliqan.io/low-code-python-data-apps/alerting-messaging#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://help.peliqan.io/low-code-python-data-apps/alerting-messaging#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Data App Use Cases\",\"item\":\"https://help.peliqan.io/low-code-python-data-apps/data-visualization\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Alerting \u0026 messaging\",\"item\":\"https://help.peliqan.io/low-code-python-data-apps/alerting-messaging\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://help.peliqan.io/low-code-python-data-apps/alerting-messaging#article\",\"headline\":\"Alerting \u0026 messaging\",\"name\":\"Alerting \u0026 messaging\",\"description\":\"Alerting \u0026 messaging can be used to inform the right person at the right time with the right data.\",\"url\":\"https://help.peliqan.io/low-code-python-data-apps/alerting-messaging\",\"mainEntityOfPage\":{\"@id\":\"https://help.peliqan.io/low-code-python-data-apps/alerting-messaging#webpage\"},\"dateModified\":\"2026-10-06T07:22:27.614Z\",\"publisher\":{\"@id\":\"https://help.peliqan.io/#organization\"},\"isPartOf\":{\"@id\":\"https://help.peliqan.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Peliqan documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Peliqan documentation","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"For Developers","pages":[{"title":"For developers","sidebarTitle":"For Developers","href":"/for-developers"},{"group":"Data Apps","pages":[{"title":"Data Apps - low code Python","sidebarTitle":"Data Apps","href":"/data-apps"},{"title":"Basics of data apps","sidebarTitle":"Basics","href":"/low-code-python-data-apps/basics-of-data-apps"},{"title":"Reading data from tables","sidebarTitle":"Reading Data","href":"/low-code-python-data-apps/reading-data-from-tables"},{"title":"Writing data to tables","sidebarTitle":"Writing Data","href":"/low-code-python-data-apps/writing-data-to-tables"},{"title":"Running apps (manual, schedule etc.)","sidebarTitle":"Running Apps","href":"/low-code-python-data-apps/running-apps-manual-schedule-etc"},{"group":"Publish Apps","root":{"title":"Publish \u0026 Embed apps","sidebarTitle":"Publish Apps","href":"/low-code-python-data-apps/publish-apps"},"pages":[{"title":"Embed apps in Sharepoint","sidebarTitle":"SharePoint embedding","href":"/low-code-python-data-apps/publish-apps/embed-apps-in-sharepoint"},{"title":"Embed apps in Odoo","sidebarTitle":"Odoo embedding","href":"/low-code-python-data-apps/publish-apps/embed-apps-in-odoo"}]},{"title":"Adding a custom login to your app","sidebarTitle":"Adding custom login","href":"/low-code-python-data-apps/adding-login-to-your-app"},{"title":"Flows","sidebarTitle":"Flows","href":"/low-code-python-data-apps/flows"},{"title":"Local development","sidebarTitle":"Local Development","href":"/low-code-python-data-apps/peliqan-python-client"},{"title":"Available Python modules","sidebarTitle":"Python Modules","href":"/low-code-python-data-apps/available-python-modules"},{"title":"Reference","sidebarTitle":"Reference","href":"/low-code-python-data-apps/reference"}]},{"group":"Data App Use Cases","pages":[{"title":"Data Visualization (Streamlit)","sidebarTitle":"Data Visualization","href":"/low-code-python-data-apps/data-visualization"},{"title":"Interactive apps (Streamlit)","sidebarTitle":"Interactive Apps","href":"/low-code-python-data-apps/interactive-apps"},{"group":"Writeback and Data Sync","root":{"title":"Writeback to SaaS APIs","sidebarTitle":"Writeback APIs","href":"/low-code-python-data-apps/writeback-reverse-etl-data-sync"},"pages":[{"title":"Raw API calls","href":"/raw-api-calls"},{"title":"Custom data syncs","sidebarTitle":"Custom Data Syncs","href":"/low-code-python-data-apps/writeback-reverse-etl-data-sync/data-sync-and-data-imports"},{"title":"Incremental processing from source","sidebarTitle":"Incremental Processing","href":"/incremental-processing"},{"title":"Upserts","href":"/upserts"},{"title":"Link tables","href":"/link-tables"},{"title":"Parent child relations","description":"Handle parent-child relationships in syncs","href":"/parent-child-relations"}]},{"title":"Alerting \u0026 messaging","sidebarTitle":"Alerting","href":"/low-code-python-data-apps/alerting-messaging"},{"title":"Send alert to MS Teams","sidebarTitle":"MS Teams Alerts","description":"Configure a Peliqan data app to send scheduled alerts to MS Teams based on query results. Use built-in templates to notify channels.","href":"/send-alert-to-msteams"},{"title":"Send alerts to Slack","sidebarTitle":"Slack Alerts","href":"/low-code-python-data-apps/predictions-machine-learning-templates/send-alerts-to-slack"},{"title":"Data enrichment","sidebarTitle":"Data Enrichment","href":"/low-code-python-data-apps/data-enrichment"},{"group":"Reporting","root":{"title":"Reporting","sidebarTitle":"Reporting","href":"/low-code-python-data-apps/reporting"},"pages":[{"title":"Generate and distribute PDF reports","sidebarTitle":"PDF Reports","href":"/low-code-python-data-apps/reporting/generate-a-pdf-using-html"}]},{"group":"Working with Files","root":{"title":"Working with files","sidebarTitle":"Working with Files","href":"/low-code-python-data-apps/working-with-files"},"pages":[{"title":"Manual file upload \u0026 download","sidebarTitle":"File Upload","href":"/low-code-python-data-apps/working-with-files/manual-file-uploads"},{"title":"Working with Parquet files","sidebarTitle":"Parquet Files","href":"/low-code-python-data-apps/working-with-files/working-with-parquet-files"}]},{"title":"ETL custom pipelines","sidebarTitle":"ETL custom Pipelines","href":"/low-code-python-data-apps/etl-custom-pipelines"},{"title":"Handling deleted rows","sidebarTitle":"Deleted Rows","href":"/low-code-python-data-apps/etl-custom-pipelines/handling-deleted-rows"},{"group":"Predictions and ML","root":{"title":"Predictions, Machine Learning templates","sidebarTitle":"ML Templates","href":"/low-code-python-data-apps/predictions-machine-learning-templates"},"pages":[{"title":"Basic ML prediction example","sidebarTitle":"Basic ML Prediction","href":"/low-code-python-data-apps/predictions-machine-learning-templates/basic-ml-prediction-example"},{"title":"Lead Conversion","sidebarTitle":"Lead Conversion","href":"/low-code-python-data-apps/predictions-machine-learning-templates/lead-conversion"},{"title":"Churn Prediction","sidebarTitle":"Churn Prediction","href":"/low-code-python-data-apps/predictions-machine-learning-templates/churn-prediction"},{"title":"Sentiment Analysis","sidebarTitle":"Sentiment Analysis","href":"/low-code-python-data-apps/predictions-machine-learning-templates/sentiment-analysis"},{"title":"Detect Anomalies - Fraud Detection","sidebarTitle":"Detect Anomalies","href":"/low-code-python-data-apps/predictions-machine-learning-templates/detect-anomalies-fraud-detection"},{"title":"Write predictions to a table","sidebarTitle":"Write Predictions to Table","href":"/low-code-python-data-apps/predictions-machine-learning-templates/write-predictions-to-a-table"},{"title":"Create an app for business users to get predictions","sidebarTitle":"Prediction App for Business Users","href":"/low-code-python-data-apps/predictions-machine-learning-templates/create-an-app-for-business-users-to-get-predictions"},{"title":"Write predictions to a SaaS app","sidebarTitle":"Write Predictions to SaaS App","href":"/low-code-python-data-apps/predictions-machine-learning-templates/write-predictions-to-a-saas-app"},{"title":"Synthetic data","sidebarTitle":"Synthetic Data","href":"/low-code-python-data-apps/predictions-machine-learning-templates/synthetic-data"}]},{"title":"Data quality, monitoring \u0026 contracts","sidebarTitle":"Data Quality","href":"/low-code-python-data-apps/data-quality-monitoring"},{"title":"Data contracts","sidebarTitle":"Data Contracts","href":"/low-code-python-data-apps/data-contracts"},{"title":"Working with metadata in scripts","sidebarTitle":"Metadata","href":"/low-code-python-data-apps/advanced"},{"title":"Generating UNION queries","sidebarTitle":"UNION Queries","href":"/low-code-python-data-apps/generating-union-queries"},{"title":"Generate Union Query","sidebarTitle":"Union Query Template","href":"/generate-union-query"},{"title":"Sync data between parent \u0026 sub accounts","sidebarTitle":"Parent-Sub Sync","href":"/low-code-python-data-apps/sync-data-between-parent-sub-accounts"},{"group":"By Protocol","root":{"title":"By protocol (REST, Webhooks, MQTT…)","sidebarTitle":"By Protocol","href":"/low-code-python-data-apps/by-protocol-rest-webhooks-mqtt"},"pages":[{"title":"MQTT","sidebarTitle":"MQTT","href":"/low-code-python-data-apps/mqtt"}]},{"title":"Slow changing dimensions (history tables)","sidebarTitle":"SCD History Tables","href":"/low-code-python-data-apps/slow-changing-dimensions-history-tables"},{"title":"Data masking / obfuscation","sidebarTitle":"Data Masking","href":"/low-code-python-data-apps/data-masking-obfuscation"}]},{"group":"Platform and APIs","pages":[{"group":"Peliqan Machines","root":{"title":"Peliqan Machines - build and publish web apps","sidebarTitle":"Peliqan Machines","href":"/peliqan-machines"},"pages":[{"title":"Advanced Machine configuration","sidebarTitle":"Advanced","href":"/peliqan-machines/advanced"}]},{"title":"How to integrate with the Peliqan OAuth2 server","sidebarTitle":"Peliqan OAuth2 Server","href":"/vibe-coding-apps-peliqan-as-backend/how-to-integrate-with-the-peliqan-oauth2-server"},{"title":"Row-level data access","sidebarTitle":"Row-Level Access","href":"/permission-layer-for-ai-agents"},{"title":"Publish APIs","sidebarTitle":"Publish APIs","href":"/publish-apis"},{"title":"Peliqan REST API","sidebarTitle":"REST API","href":"/peliqan-api"},{"title":"Incoming webhooks","sidebarTitle":"Incoming Webhooks","href":"/incoming-webhooks"}]}]},{"tab":"Connector Guides","pages":[{"title":"Connector Guides","href":"/connectors"}]},{"tab":"Getting started videos","pages":[{"title":"Getting started videos","href":"/getting-started-videos"}]}]},"basePath":"","title":"Alerting \u0026 messaging - Peliqan documentation","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":[],"chunks":[]}