If you want to mess around with Database Mail from your laptop and you don’t have a mail server, you can configure gmail for that purpose. It is pretty easy to setup, I will show you the screen from the wizard as well how to do it in T-SQL. I prefer T-SQL because I can run the same setup now on multiple machines

Below is the whole thing in one easy to run script
Make sure to change Your.Account@gmail.com to what your gmail account is, also notice that @enable_ssl =1 and that we are using port 587 (@port = ’587′)

T-SQL
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
IF NOT EXISTS(SELECT * FROM msdb.dbo.sysmail_profile WHERE  name = 'GmailDBMail') 
  BEGIN
    
    EXECUTE msdb.dbo.sysmail_add_profile_sp
      @profile_name = 'GmailDBMail',
      @description  = '';
  END --IF EXISTS profile
  
  IF NOT EXISTS(SELECT * FROM msdb.dbo.sysmail_account WHERE  name = 'GmailDBMail')
  BEGIN
    
    EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_name            = 'GmailDBMail',
    @email_address           = 'Your.Account@gmail.com', -- <-- change this
    @display_name            = 'GmailDBMail',
    @replyto_address         = 'Your.Account@gmail.com', -- <-- change this
    @description             = '',
    @mailserver_name         = 'smtp.gmail.com',
    @mailserver_type         = 'SMTP',
    @port                    = '587',
    @username                = 'Your.Account@gmail.com', -- <-- change this
    @password                = 'yourpassword', -- <-- change this
    @use_default_credentials =  0 ,
    @enable_ssl              =  1 ;
  END --IF EXISTS  account
  
IF NOT EXISTS(SELECT *
              FROM msdb.dbo.sysmail_profileaccount pa
                INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id = p.profile_id
                INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id  
              WHERE p.name = 'GmailDBMail'
                AND a.name = 'GmailDBMail') 
  BEGIN
    
    EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
      @profile_name = 'GmailDBMail',
      @account_name = 'GmailDBMail',
      @sequence_number = 1 ;
  END 
IF NOT EXISTS(SELECT * FROM msdb.dbo.sysmail_profile WHERE  name = 'GmailDBMail') 
  BEGIN
    
    EXECUTE msdb.dbo.sysmail_add_profile_sp
      @profile_name = 'GmailDBMail',
      @description  = '';
  END --IF EXISTS profile
  
  IF NOT EXISTS(SELECT * FROM msdb.dbo.sysmail_account WHERE  name = 'GmailDBMail')
  BEGIN
    
    EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_name            = 'GmailDBMail',
    @email_address           = 'Your.Account@gmail.com', -- <-- change this
    @display_name            = 'GmailDBMail',
    @replyto_address         = 'Your.Account@gmail.com', -- <-- change this
    @description             = '',
    @mailserver_name         = 'smtp.gmail.com',
    @mailserver_type         = 'SMTP',
    @port                    = '587',
    @username                = 'Your.Account@gmail.com', -- <-- change this
    @password                = 'yourpassword', -- <-- change this
    @use_default_credentials =  0 ,
    @enable_ssl              =  1 ;
  END --IF EXISTS  account
  
IF NOT EXISTS(SELECT *
              FROM msdb.dbo.sysmail_profileaccount pa
                INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id = p.profile_id
                INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id  
              WHERE p.name = 'GmailDBMail'
                AND a.name = 'GmailDBMail') 
  BEGIN
    
    EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
      @profile_name = 'GmailDBMail',
      @account_name = 'GmailDBMail',
      @sequence_number = 1 ;
  END 

If you like to use the wizard, you can do that as well, here is what it would look like

Make sure to check SSL and that the port number is 587

Now that it is all done, let’s send a test email

You might have to restart SQL Agent for Database Mail to start working, so do that first.

Now execute the following stored proc, change your.account@gmail.com to where you want to send it

T-SQL
1
2
3
4
5
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'GmailDBMail',
    @recipients = 'your.account@gmail.com',
    @body = 'The test finished successfully.',
    @subject = 'Testing gmail with dbmail' ;
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'GmailDBMail',
    @recipients = 'your.account@gmail.com',
    @body = 'The test finished successfully.',
    @subject = 'Testing gmail with dbmail' ;

Go and check that email inbox, did you get the email? If you did not get the email, make sure to check the Database Mail Log, it will contain messages telling you what the error is. Right click on Database Mail and select View Database Mail Log

A message might be the following, this is because the port was wrong
The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2013-01-13T08:04:38). Exception Message: Cannot send mails to mail server. (The operation has timed out.).

That is all there is to setting up Database mail with gmail