@@ -22,11 +22,11 @@ import asyncio
2222import postmark
2323
2424async def get_messages ():
25- server_token = " your-server-token"
25+ # Initialize the client
26+ server = postmark.ServerClient(server_token = " your-server-token" )
2627
2728 # Search for messages
28- messages, total = await postmark.messages.Outbound.find(
29- server_token = server_token,
29+ messages, total = await server.messages.Outbound.find(
3030 recipient = " user@example.com" ,
3131 fromdate = " 2024-01-01"
3232 )
@@ -53,7 +53,8 @@ import os
5353from dotenv import load_dotenv
5454
5555load_dotenv()
56- server_token = os.getenv(" POSTMARK_SERVER_TOKEN" )
56+ token = os.getenv(" POSTMARK_SERVER_TOKEN" )
57+ server = postmark.ServerClient(server_token = token)
5758```
5859
5960## Usage Examples
@@ -65,11 +66,10 @@ import asyncio
6566import postmark
6667
6768async def search_messages ():
68- server_token = " your-server-token"
69+ server = postmark.ServerClient( server_token = " your-server-token" )
6970
7071 # Search with filters
71- messages, total = await postmark.messages.Outbound.find(
72- server_token = server_token,
72+ messages, total = await server.messages.Outbound.find(
7373 count = 50 ,
7474 recipient = " user@example.com" ,
7575 tag = " onboarding" ,
@@ -88,13 +88,10 @@ asyncio.run(search_messages())
8888
8989``` python
9090async def get_message_details ():
91- server_token = " your-server-token"
91+ server = postmark.ServerClient( server_token = " your-server-token" )
9292 message_id = " your-message-id"
9393
94- message = await postmark.messages.Outbound.find_by_id(
95- message_id = message_id,
96- server_token = server_token
97- )
94+ message = await server.messages.Outbound.get(message_id = message_id)
9895
9996 print (f " Subject: { message.subject} " )
10097 print (f " From: { message.from_} " )
@@ -107,11 +104,10 @@ asyncio.run(get_message_details())
107104
108105``` python
109106async def get_all_messages ():
110- server_token = " your-server-token"
107+ server = postmark.ServerClient( server_token = " your-server-token" )
111108
112109 # Automatically handles pagination to retrieve up to 1000 messages
113- all_messages = await postmark.messages.Outbound.find_all(
114- server_token = server_token,
110+ all_messages = await server.messages.Outbound.find_all(
115111 max_messages = 1000 ,
116112 tag = " onboarding"
117113 )
@@ -136,9 +132,10 @@ from postmark.exceptions import (
136132)
137133
138134async def safe_message_search ():
135+ server = postmark.ServerClient(server_token = " your-server-token" )
136+
139137 try :
140- messages, total = await postmark.messages.Outbound.find(
141- server_token = " your-token" ,
138+ messages, total = await server.messages.Outbound.find(
142139 recipient = " user@example.com"
143140 )
144141 print (f " Found { total} messages " )
@@ -160,6 +157,7 @@ async def safe_message_search():
160157 print (f " General Postmark error: { e} " )
161158
162159asyncio.run(safe_message_search())
160+
163161```
164162
165163### Exception Types
@@ -199,13 +197,13 @@ logging.getLogger('postmark').setLevel(logging.DEBUG)
199197
200198## API Reference
201199
202- ### Messages API
200+ ### Outbound Messages API
201+ Access via ` Access via server.messages.Outbound `
203202
204203#### ` Outbound.find() `
205204Search for outbound messages with various filters.
206205
207206** Parameters:**
208- - ` server_token ` (str): Your Postmark server token
209207- ` count ` (int): Number of messages to return (max 500, default 100)
210208- ` offset ` (int): Number of messages to skip (default 0)
211209- ` recipient ` (str): Filter by recipient email
@@ -219,20 +217,18 @@ Search for outbound messages with various filters.
219217
220218** Returns:** Tuple of (list of messages, total count)
221219
222- #### ` Outbound.find_by_id () `
220+ #### ` Outbound.get () `
223221Get detailed information about a specific message.
224222
225223** Parameters:**
226224- ` message_id ` (str): The message ID to retrieve
227- - ` server_token ` (str): Your Postmark server token
228225
229226** Returns:** ` OutboundMessageDetails ` object with full message content
230227
231228#### ` Outbound.find_all() `
232229Retrieve all messages matching filters with automatic pagination.
233230
234231** Parameters:**
235- - ` server_token ` (str): Your Postmark server token
236232- ` max_messages ` (int): Maximum messages to retrieve (up to 10,000, default 1000)
237233- ` **filters ` : Same filter parameters as ` find() ` method
238234
@@ -248,7 +244,7 @@ Retrieve all messages matching filters with automatic pagination.
248244
249245``` bash
250246# Clone the repository
251- git clone https://github.com/ActiveCampaign/postmark-python.git
247+ git clone [ https://github.com/ActiveCampaign/postmark-python.git](https://github.com/ActiveCampaign/postmark-python.git)
252248cd postmark-python
253249
254250# Install dependencies
@@ -264,28 +260,6 @@ poetry run pytest --cov=postmark --cov-report=term-missing
264260poetry run python examples/get_messages.py
265261```
266262
267- ### Project Structure
268-
269- ```
270- postmark-python/
271- ├── postmark/
272- │ ├── __init__.py
273- │ ├── exceptions.py # Custom exception classes
274- │ ├── models/
275- │ │ ├── __init__.py
276- │ │ ├── client.py # HTTP client with error handling
277- │ │ └── messages.py # Message models and API methods
278- │ └── tests/ # Test suite
279- │ ├── test_client.py
280- │ └── test_messages.py
281- ├── examples/
282- │ └── get_messages.py # Usage examples
283- ├── README.md
284- ├── LICENSE
285- ├── pytest.ini # Pytest configuration
286- └── pyproject.toml # Project dependencies and configuration
287- ```
288-
289263### Running Tests
290264
291265``` bash
0 commit comments