Skip to content

hsharghi/swift-resend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SwiftResend

Swift 5.7 Logo MIT License

SwiftResend is a Swift package used to communicate with the Resend email sending platform API for Server Side Swift Apps.

Setup

Add the dependency to your Package.swift:

dependencies: [
	...
	.package(url: "https://github.com/hsharghi/swift-resend.git", from: "1.0.0")
],
targets: [
    .target(name: "App", dependencies: [
        .product(name: "Resend", package: "swift-resend"),
    ]),

Register Configuration and Provider

Configure the HTTP client and the Resend client:

let httpClient = HTTPClient(...)
let resendClient = ResendClient(httpClient: httpClient, apiKey: "YOUR_API_KEY")

Usage

Email client

You can send a single email by creating a ResendEmail object and retrieving the email ID in return.

import Resend

let email: ResendEmail = .init(
    from: .init(email: "[email protected]", name: "Hadi"),
    to: ["[email protected]"],
    subject: "running xctest",
    replyTo: [
        "[email protected]",
        "[email protected]"
    ],
    text: "sending email from XCTest suit",
    headers: [
        .init(name: "X-Entity-Ref-ID", value: "234H3-44"),
        .init(name: "X-Entity-Dep-ID", value: "SALE-03"),
    ],
    attachments: [
        .init(content: .init(data: .init(contentsOf: .init(filePath: "path/to/a/file"))),
              filename: "sales.xlsx")
    ],
    tags: [
        .init(name: "priority", value: "medium"),
        .init(name: "department", value: "sales")
    ]
)

let id = try await resendClient.emails.send(email)

ResendEmail supports both text and html content.

You can send multiple emails at once by creating a ResendBatchEmail object. Attachments and Tags are not supported for batch sending. An array of email IDs will be returned.

let emails = ResendBatchEmail(...)
let ids = try await resendClient.emails.sendBatch(emails)

Retrieving Email Information

You can retrieve information about a sent email by providing the email ID.

let emailInfo = try await resendClient.emails.get(emailId: id)

Managing Audiences

Access the AudienceClient for managing audiences via the API. Refer to the Resend Audience API for complete details.

let audience = try await resendClient.audiences.create(name: "marketing")

Managing Contacts

Access the ContactClient for managing contacts via the API. Refer to the Resend Contact API for complete details.

let contactId = try await resendClient.contacts.create(audienceId: audience.id,
                                                       email: "[email protected]",
                                                       firstName: "John",
                                                       subscriptionStatus: true)

Error handling

If a request to the API fails for any reason, a ResendError is thrown. Ensure you catch errors like any other throwing function.

do {
    try await resendClient.emails.send(...)
}
catch let error as ResendError {
    print(error.message)
    print(error.suggestion)
}

APIs supported by the current SDK

  • Emails
  • Audiences
  • Contacts
  • Domains
  • API Keys
  • Broadcasts

License

This package is released under the MIT license. See LICENSE for details.

About

Swift SDK for Resend email service

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages