Rand Stats

The uploading author of cpan:JNTHN does not match the META author of Jonathan Worthington <jonathan@edument.cz>.




A basic Raku module for sending email using the SendGrid Web API (v3). At the time of writing, SendGrid allows sending up to 100 emails a day free of charge. This module most certainly does not provide full coverage of the SendGrid API; if you need more, pull requests are welcome.


Construct an Eamil::SendGrid object using your SendGrid API key:

my $sendgrid = Email::SendGrid.new(api-key => 'your_key_here');

Then call send-mail to send email:

        from => address('some@address.com', 'Sender name'),
        to => address('target@address.com', 'Recipient name'),
        subject => 'Yay, SendGrid works!',
        content => {
            'text/plain' => 'This is the plain text message',
            'text/html' => '<strong>HTML mail!</strong>'

It is not required to including a HTML version of the body. Optionally, pass cc, bcc, and reply-to to send these addresses. It is also possible to pass a list of up to 1000 addresses to to, cc, and bcc.

If sending the mail fails, an exception will be thrown. Since Cro::HTTP::Client is used internally, it will be an exception from that. Study the body for more details.

    default {
        note await .response.body;

Pass :async to send-mail to get a Promise back instead. Otherwise, it will be awaited for you by send-mail.