We recommend using SendGrid Perl, our client library, available on Github, with full documentation.

Without sendgrid-perl

If you choose not to use SendGrid’s client library you may use Perl’s generic SMTP library.

The following code builds a MIME mail message demonstrating all the portions of the SMTP API protocol. To use this example, you will need to have the following perl modules installed:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/perl

use strict;
use MIME::Entity;
use Net::SMTP;

# from is your email address
# to is who you are sending your email to
# subject will be the subject line of your email
my $from = 'you@yourdomain.com';
my $to = 'person@youaremailing.com';
my $subject = 'Example Perl Email';

# Create the MIME message that will be sent. Check out MIME::Entity on CPAN for more details
my $mime = MIME::Entity->build(Type  => 'multipart/alternative',
                            Encoding => '-SUGGEST',
                            From => $from,
                            To => $to,
                            Subject => $subject
                            );
# Create the body of the message (a plain-text and an HTML version).
# text is your plain-text email
# html is your html version of the email
# if the reciever is able to view html emails then only the html
# email will be displayed
my $text = "Hi!\nHow are you?\n";
my $html = <<EOM;
<html>
  <head></head>
  <body>
    <p>Hi!<br>
       How are you?<br>
    </p>
  </body>
</html>
EOM

# attach the body of the email
$mime->attach(Type => 'text/plain',
            Encoding =>'-SUGGEST',
            Data => $text);

$mime->attach(Type => 'text/html',
            Encoding =>'-SUGGEST',
            Data => $html);

# attach a file
my $my_file_txt = 'example.txt';

$mime->attach ( Path      => $my_file_txt,
                   Type      => 'text/txt',
                   Encoding  => 'base64'
) or die "Error adding !\n";

# Login credentials
my $username = 'yourlogin@sendgrid.net';
my $password = "yourpassword";

# Open a connection to the SendGrid mail server
my $smtp = Net::SMTP->new('smtp.sendgrid.net',
                        Port=> 587,
                        Timeout => 20,
                        Hello => "yourdomain.com");

# Authenticate
$smtp->auth($username, $password);

# Send the rest of the SMTP stuff to the server
$smtp->mail($from);
$smtp->to($to);
$smtp->data($mime->stringify);
$smtp->quit();