SendGrid is mostly used to send emails, and emails have links, SendGrid tracks all the clicks on the links in emails. by default, all the links on email will be routed through sendgrid.net
. SendGrid provides functionally to create Branded Links for senders domain, after that emails will have registered domain instead of sendgrid.net
on SendGrid UI, select Settings > Sender Authentication>ink branding. or SendGrid provides an HTTP POST method to create a Branded Link.
package org.wesome.sendgrid;
import com.sendgrid.SendGrid;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class SendGridApplication {
@Value("${send.grid.api.key}")
private String sendGridApiKey;
public static void main(String[] args) {
SpringApplication.run(SendGridApplication.class, args);
}
@Bean
public SendGrid sendGrid() {
SendGrid sendGrid = new SendGrid(sendGridApiKey);
return sendGrid;
}
}
package org.wesome.sendgrid.controller;
import com.sendgrid.Method;
import com.sendgrid.Request;
import com.sendgrid.Response;
import com.sendgrid.SendGrid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
@RestController
public class SendGridController {
@Autowired
private SendGrid sendGrid;
@GetMapping
public ResponseEntity sendGridAPI() throws IOException {
Request request = new Request();
Response response;
try {
request.setMethod(Method.POST);
request.setEndpoint("whitelabel/links");
request.setBody("{\"default\":true,\"domain\":\"wesome.org\",\"subdomain\":\"mail\"}");
request.addQueryParam("limit", "1");
request.addQueryParam("offset", "1");
response = sendGrid.api(request);
System.out.println("Headers := \n" + response.getHeaders());
System.out.println("Body := \n" + response.getBody());
System.out.println("StatusCode := \n" + response.getStatusCode());
} catch (IOException ex) {
throw ex;
}
return new ResponseEntity(HttpStatus.valueOf(response.getStatusCode()).getReasonPhrase(), HttpStatus.valueOf(response.getStatusCode()));
}
}
plugins {
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'org.springframework.boot' version '2.5.5'
id 'java'
}
group = 'org.wesome'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = JavaVersion.VERSION_1_8
repositories {
mavenCentral()
}
dependencies {
implementation 'com.sendgrid:sendgrid-java:4.4.5'
implementation('org.springframework.boot:spring-boot-starter-web')
}
test {
useJUnitPlatform()
}
send.grid.api.key=Your SendGrid Api Key
curl --location --request GET 'localhost:8080/'