Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
joachimvanpraet
Active Participant
Hi All,

For a small business application we want to send e-mails from our nodejs application. In this blog post I will show you how you can use sap-cf-mailer based on nodemailer to send emails through an SMTP server defined in your destinations.

https://nodemailer.com

Test SMTP server


Instead of testing the code with your own email account and loading your mailbox full with test emails, you can use mailtrap as test SMTP server. It's free for one inbox.

https://mailtrap.io/

Create an account on mailtrap and create a new inbox. Open the inbox and take a look at the settings. All mails send over this SMTP server will be delivered here without sending them to the real receiver.



 

MAIL destination


We need to create a mail destination that links to our SMTP server.



In this destination we configured following properties:

  • Name: a name for the destination

  • Type: MAIL

  • username and password from your mailtrap SMTP server

  • mail.smtp: smtp server address

  • mail.port: smtp server port

  • mail.from: if there is no mail from specified in the code, we will use this email address to send the mails.


NodeJS application


To send mails, we first have to read this destination properties and then send them to the nodemailer library. To make things a lot easier, I created a new library that will read the destination service and add it to the nodemailer for you.

Your application needs a reference to a destination service to be able to read the mailtrap-destination. this is how my mta.yaml file looks like
ID: sap-cf-mailer-example
_schema-version: "2.1"
description: Example sap cf mailer
version: 0.0.1
modules:
- name: approuter
type: approuter.nodejs
path: approuter
parameters:
disk-quota: 256M
memory: 256M
requires:
- name: uaa
- name: destination_service
- name: mail_api
group: destinations
properties:
forwardAuthToken: true
name: mail_api
strictSSL: false
url: '~{url}'
- name: srv
type: nodejs
path: srv
parameters:
memory: 512M
disk-quota: 256M
provides:
- name: mail_api
properties:
url: ${default-url}
requires:
- name: uaa
- name: destination_service
resources:
- name: destination_service
type: org.cloudfoundry.existing-service
- name: uaa
type: org.cloudfoundry.existing-service

 

In the srv folder, just install the sap-cf-mailer library with:
$ npm install -s sap-cf-mailer

 

in your nodeJS application you can use it to send text or HTML emails.
const express = require('express');
const app = express();
const SapCfMailer = require('sap-cf-mailer').default;

const transporter = new SapCfMailer("MAILTRAP");

app.use(express.json());

app.get('/sendmail', async (req, res) => {
// use sendmail as you should use it in nodemailer
const result = await transporter.sendMail({
to: 'someoneimportant@sap.com',
subject: `This is the mail subject`,
text: `body of the email`
});

res.send(result);
});

const port = process.env.PORT || 3000;;
app.listen(port, function () {
console.log('myapp listening on port ' + port);
});

 

The result




After running the application you can check in the mailtrap inbox which email is sent to who!



 

So, now you can send emails in your nodejs cloud foundry application using the sap-cf-mailer module. For more advanced features like sending html emails and attachments your can consult the nodemailer documentation.

 

kr,

Joachim
18 Comments
Labels in this area