Mailjet is a third-party global email service that offers Compute Engine users a free tier with 6,000 emails each month. In addition, Mailjet also offers:
- An API, user interface, and SMTP relay to send transactional and marketing email.
- European data privacy compliance.
- Email and deliverability features, such as customizable priority settings and automated throttle management.
- API resource library in Go, PHP, Nodejs, Java, Python, and Ruby to manage sub-accounts, authentication, contacts, campaigns, custom payloads, statistics, real time events, and parsing through the Event API .
- Integrated MJML framework to create responsive HTML email templates.
- 24/7 follow-the-sun support in 4+ languages.
- Ability to send email messages from domains other than gmail.com.
This document describes how to configure your VM instance to send mail through Mailjet using the following methods:
- Through an SMTP 
relay with: - Postfix
- Nodemailer on Node.js
 
- Directly through the Mailjet API using Java
For extensive documentation of other email solutions, including examples of integration with most common SMTP servers, libraries, and frameworks, see Mailjet's documentation .
Before you begin
-  Create a new Mailjet account on Mailjet's Google partner page *. When signing up, provide the domain and email address from which you want to send email messages. 
-  Make sure the email address you want to send emails from has been validated . 
-  Set up a firewall rule to allow TCP traffic on port 2525. 
* Google is compensated for customers who sign up for a non-free account.
Configuring Mailjet as an SMTP relay
Configuring Mailjet as a mail relay lets you forward email messages to Mailjet for remote delivery.
Using Postfix
-  Connect to your VM using SSH, replacing instance-namewith the name of the instance you want to send email messages from:gcloud compute ssh instance-name
-  On the VM, install the Postfix Mail Transport Agent. When prompted, accept the default choices for domain names but select the Local Onlyconfiguration.Debiansudo apt update && sudo apt -y install postfix libsasl2-modulesCentOSsudo yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
-  Modify the Postfix configuration options. Postfix configuration options are set in the main.cffile. Open the file with the text editor of your choice:sudo vi /etc/postfix/main.cf
-  Update the file: -  Comment out the following lines: # default_transport = error # relay_transport = error
-  Add the following lines to the end of the file: relayhost = in-v3.mailjet.com:2525 smtp_tls_security_level = encrypt smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymousThese lines enforce SSL/TLS support and configure SMTP authentication for these requests. A simple access and security layer (SASL) module handles authentication in the Postfix configuration. 
-  Save your changes and close the file. 
 
-  
-  Create the SASL password map with the text editor of your choice: sudo vi /etc/postfix/sasl_passwd
-  To the sasl_passwdfile, add the following lines to provide the credentials for Mailjet:in-v3.mailjet.com:2525 YOUR_API_KEY:YOUR_SECRET_KEY
-  Use the postmaputility to generate a.dbfile:sudo postmap /etc/postfix/sasl_passwd sudo ls -l /etc/postfix/sasl_passwd*You should receive the following response: -rw------- 1 root root 68 Jun 1 10:50 /etc/postfix/sasl_passwd -rw------- 1 root root 12288 Jun 1 10:51 /etc/postfix/sasl_passwd.db
-  Next, remove the file that contains your credentials because it is no longer needed: sudo rm /etc/postfix/sasl_passwd
-  Set the permissions on your .dbfile:sudo chmod 600 /etc/postfix/sasl_passwd.db sudo ls -la /etc/postfix/sasl_passwd.db
-  Finally, reload your configuration to load the modified parameters: Debiansudo /etc/init.d/postfix restartCentOSsudo postfix reload
-  Test your configuration. Install the mailxormailutilspackage and test your configuration.Debiansudo apt -y install mailutilsCentOSsudo yum install mailx -ySend a test message: echo 'Test passed.' | mail -s 'Test-Email' -aFrom: from-email destination-emailReplace the following: -  from-email: An email address that has been validated .
-  destination-email: The address to send the email message to.
 Look in your system's logs for a status line containing statusand the successful server response code(250):Debiansudo tail - n 5 / var / log / syslogCentOSsudo tail - n 5 / var / log / maillog
-  
If you run into issues setting up Postfix with Mailjet, see the Mailjet Postfix setup instructions .
Using Nodemailer
The following instructions describe how to use Mailjet with Node.js on Debian Wheezy.
- Connect to your instance using SSH: gcloud compute ssh instance-name
- Update your package repositories: user@test-wheezy:~# sudo apt update 
- Install Node.js dependencies: user@test-wheezy:~# sudo apt -y install git-core curl build-essential openssl libssl-dev 
- Clone the Node.js repo from github: user@test-wheezy:~# git clone https://github.com/nodejs/node 
- Change the directory to the Node.js source tree: user@test-wheezy:~# cd node 
- Configure node software for this OS and virtual machine: user@test-wheezy:~# ./configure 
- Build Node.js, npm, and related objects: user@test-wheezy:~# sudo make This can take a few minutes to complete. 
- Install Node.js, npm, and other software in the default location: user@test-wheezy:~# sudo make install 
- Install the mailer package: user@test-wheezy:~# npm install nodemailer nodemailer-smtp-transport 
- In the nodedirectory, create a new file namedsendmail.jsthat contains the following JavaScript:
- Run the program to send an email message through Mailjet: user@test-wheezy:~# node sendmail.js 
- Connect to your instance using SSH: gcloud compute ssh instance-name
- Update package repositories: user@test-centos:~# sudo yum update -y 
- Install Node.js dependencies: user@test-centos:~# sudo yum install git-core curl openssl openssl-dev -y ... user@test-centos:~# sudo yum groupinstall "Development Tools" -y ... 
- Clone Node.js repository from github: user@test-centos:~# git clone https://github.com/nodejs/node 
- Change directory to the Node.js source tree: user@test-centos:~# cd node 
- Configure node software for this OS and virtual machine: user@test-centos:~# ./configure 
- Build Node.js, npm, and related objects: user@test-centos:~# sudo make This can take a few minutes to complete. 
- Install Node.js, npm, and other software in the default location: user@test-centos:~# sudo make install 
- Install the mailer package: user@test-centos:~# npm install npm install nodemailer nodemailer-smtp-transport 
- In the nodedirectory, create a new file namedsendmail.jsthat contains the following JavaScript:
- Run the program to send an email message through Mailjet: user@test-centos:~# node sendmail.js 
Sending mail through the Mailjet API with Java
For more examples of using the Mailjet API, see the official Mailjet documentation .
- Connect to your instance using SSH: gcloud compute ssh instance-name
- Update your package repositories and install the required packages: user@test-instance:~# sudo apt update && sudo apt install git-core openjdk-8-jdk maven 
- Clone the Java repo from GitHub: user@test-instance:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git 
- Go to the main source code for the example, located at: /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet 
- Configure your Mailjet settings. Refer to the Mailjet Authentication 
documentation on how to replace the
        following variables: -  your-mailjet-api-key: An API key for your Mailjet account.
-  your-mailjet-secret-key: The corresponding secret key for your Mailjet account.
 
-  
- From the mailjetdirectory, use Maven to package the class as a JAR file:user@test-instance:~# mvn clean package 
- Ensure that you are using OpenJDK 8: user@test-instance:~# sudo update-alternatives --config java 
- To send an email: from the target directory, run the JAR file with
        your recipient and sender email addresses as arguments: user@test-instance:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar recipient-email sender-email
- Connect to your instance using SSH: gcloud compute ssh instance-name
- Update your package repositories and install the required packages: user@test-centos:~# sudo yum update && sudo yum install git-core openjdk-8-jdk maven 
- Clone the Java repo from GitHub: user@test-centos:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git 
- Go to the main source code for the example, located at: /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet 
- Configure your Mailjet settings. For information about how to
        replace the following variables, refer to the Mailjet Authentication 
documentation: -  your-mailjet-api-key: An API key for your Mailjet account.
-  your-mailjet-secret-key: The corresponding secret key for your Mailjet account.
 
-  
- From the mailjetdirectory, use Maven to package the class as a JAR file:user@test-centos:~# mvn clean package 
- Ensure that you are using OpenJDK 8: user@test-centos:~# sudo alternatives --config java 
- To send an email, from the target directory, run the JAR file with
        your recipient and sender email addresses as arguments: user@test-centos:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar recipient-email sender-email
Mailjet SMTP settings
Here is a quick reference to Mailjet-specific SMTP settings that are used to configure clients:
- Host: in-v3.mailjet.com
- Port: 2525
What's next
Explore reference architectures, diagrams, and best practices about Google Cloud. Take a look at our Cloud Architecture Center .

