send method
Sends an email message.
Returns true if successful, false otherwise. May throw exceptions on critical failures.
Implementation
@override
Future<bool> send(MailMessageInterface message) async {
try {
// Validate message
message.validate();
// Build request payload
final payload = await _buildPayload(message);
// Send request
final url = Uri.parse('https://api.postmarkapp.com/email');
final response = await _client.post(
url,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-Postmark-Server-Token': _config.serverToken,
},
body: json.encode(payload),
);
// Check response
if (response.statusCode == 200) {
return true;
} else {
final error = json.decode(response.body);
throw MailTransportException(
'Postmark API error: ${error['Message'] ?? response.body}',
originalError: error,
);
}
} catch (e, stack) {
if (e is MailTransportException) rethrow;
throw MailTransportException(
'Failed to send email via Postmark: $e',
originalError: e,
stackTrace: stack,
);
}
}