Hi, Im using sendGrid with the npm package.
Everything is working fine except the body text. It’s writing it all out in one line in the email, but in the console.log it looking as it should.
Here is the code from both backend and frontend - its probably only a small correction somewhere, I just dont know what and where.
// BACKEND sendgrid.js
import {fetch} from 'wix-fetch';
import sgMail from '@sendgrid/mail';
var api_key = <My api key>;
export function bufferEncode(url, email, subject, body, filename, filetype) {
return createBuffer(url)
.then( (buf) => {
return sendEmail(buf, email, subject, body, filename, filetype);
});
}
const createBuffer = (url) => {
return fetch(url, {
method: 'GET',
encoding: null
})
.then( (res) => {
return res.buffer();
});
}
const sendEmail = async(buffer, email, subject, body, filename, filetype) => {
let encoded = await encoder(buffer);
await sgMail.setApiKey(api_key);
const msg = {
to: email,
from: 'test <my sender email>',
subject: subject,
html: body,
attachments: [{
content: encoded,
filename: filename + '.' + filetype,
type: 'plain/text',
disposition: 'attachment',
contentId: 'mytext'
}]
};
sgMail.send(msg)
.then( function (err, response) {
if(err){
return Promise.resolve(err);
}else{
return Promise.resolve(response);
}
})
.catch( (err) => {
return Promise.resolve(err);
});
}
const encoder = (string) => {
var encryptedBytes = Buffer.from(string);
var encoded = encryptedBytes.toString('base64');
return encoded;
}
//BACKEND process.jsw
import {mediaManager} from 'wix-media-backend';
import {bufferEncode} from './sendgrid';
export function getFileUrl(fileId) {
return mediaManager.getFileUrl(fileId);
}
export function sendMail(url, email, subject, body, filename, filetype) {
return bufferEncode(url, email, subject, body, filename, filetype);
}
//FRONTEND
import {getFileUrl, sendMail} from 'backend/attachment/process';
$w.onReady(function () {
});
let jobTitle = $w('#dynamicDataset').getCurrentItem().title;
console.log("start test")
const testEmail = <my test reciever email>;
export function submit_click(event) {
$w("#submit").disable();
let fornavn = $w("#fornavn").value;
let efternavn = $w("#efternavn").value;
let telefon = $w("#telefon").value;
let emailadr = $w("#email").value;
let motiveretA = $w("#motiveret").value;
let files = $w("#cv").value;
let fileName = files[0].name;
let fileType = /[^.]*$/.exec(fileName)[0];
console.log(fileType);
console.log($w("#fornavn").value);
$w("#cv").startUpload()
.then( (res) => {
console.log("test");
let mediaId = res.mediaId;
console.log(mediaId);
getFileUrl(mediaId)
.then( (url) => {
let email = testEmail
let subject = jobTitle;
console.log(jobTitle);
let body = `\r
\r Fornavn: ${fornavn}
\r Efternavn: ${efternavn}
\r Email: ${emailadr}
\r Telefon: ${telefon}
\r
\r Motiveret ansøgning: ${motiveretA}`;
let attachName = (fornavn +" "+ efternavn + " CV");
console.log(body);
console.log(attachName);
sendMail(url, email, subject, body, attachName, fileType)
.then( (res) => {
console.log(res);
$w("#submit").enable();
});
});
});
}