Guide to Simple Email Service (AWS SES) with Spring Boot and Spring Cloud PlatoBlockchain Data Intelligence. Vertical Search. Ai.

اسپرنگ بوٹ اور اسپرنگ کلاؤڈ کے ساتھ سادہ ای میل سروس (AWS SES) کے لیے گائیڈ

تعارف

AWS SES (سادہ ای میل سروس) ایک سادہ ٹو سیٹ اپ ای میل بھیجنے اور وصول کرنے کی خدمت ہے۔ آن پریمیس ای میل سسٹم کا انتظام کرنا عموماً مشکل، مشکل اور تھکا دینے والا ہوتا ہے، اس لیے اس عمل کو آؤٹ سورس کرنا ایک مقبول انتخاب ہے۔

ہم Amazon SES کا استعمال اپنے کلائنٹس کو ٹرانزیکشنل ای میلز، مارکیٹنگ ای میلز، یا کسی دوسری قسم کی اطلاعی ای میلز بھیجنے کے لیے کر سکتے ہیں۔ یہ تمام سائز کے کاروبار کے لیے ایک سستا حل ہے جو اپنے صارفین سے رابطہ قائم کرنے کے لیے ای میلز کا استعمال کرتے ہیں کیونکہ یہ قابل اعتماد اور توسیع پذیر انفراسٹرکچر پر بنایا گیا ہے۔ ایمیزون ویب سروسز (AWS).

بلک ای میلز بھیجنے کے لیے، کوئی بھی ایپلیکیشن Amazon SES کے ساتھ تعامل کر سکتی ہے۔ ہم صرف ان ای میلز کی ادائیگی کرتے ہیں جو ہم اصل میں بھیجتے ہیں، چاہے وہ ٹرانزیکشنل ای میلز ہوں یا مارکیٹنگ ای میلز۔ مزید برآں، ترتیب کی ایک حد، بشمول وقف کردہ، مشترکہ، یا ملکیت والے IP پتے، Amazon SES کے ذریعے تعاون یافتہ ہیں۔ کاروبار ڈیلیوریبلٹی ڈیش بورڈز اور بھیجنے والے کی معلومات پر رپورٹس کے استعمال سے ہر ای میل کو شمار کر سکتے ہیں۔

اس گائیڈ میں ہم ایک خطے میں AWS SES مثال ترتیب دینے جا رہے ہیں اور پھر اس کے ساتھ ضم AWS کے لیے موسم بہار کا بادل جو کہ ایک ذیلی منصوبہ ہے۔ بہار بادل. ہم اپنی درخواست سے ای میل بھیجنے کے لیے مختلف منظرنامے آزمائیں گے۔

نوٹ: آپ گائیڈ میں استعمال ہونے والے تمام سورس کوڈ کو تلاش کر سکتے ہیں۔ Github کے.

AWS SES کا استعمال کرتے ہوئے ای میل بھیجنے کا لائف سائیکل

آئیے دیکھتے ہیں کہ ایپلیکیشن کے ذریعے بھیجے گئے ای میل کا لائف سائیکل منزل میل باکس تک کیسے پہنچتا ہے:

  • ایک درخواست، ہمارے معاملے میں، اسپرنگ کلاؤڈ کوڈ AWS SES سے ایک یا زیادہ وصول کنندگان کو ای میل بھیجنے کی درخواست کرتا ہے۔

  • SES ابتدائی طور پر درخواست کی تصدیق کرتا ہے، اور اگر اسے منظور کر لیا جاتا ہے، تو درخواست کی وضاحتوں کے ساتھ ایک ای میل پیغام تیار کرتا ہے۔ اس ای میل پیغام میں ایک ہیڈر، باڈی، اور لفافہ ہے اور اس کی تعمیل کرتا ہے۔ آر ایف سی 5322کی انٹرنیٹ میسج فارمیٹ کی تعریف۔

  • SES پھر پیغام وصول کنندہ کے وصول کنندہ کو انٹرنیٹ پر منتقل کرتا ہے۔ جیسے ہی پیغام SES کو دیا جاتا ہے، یہ اکثر فوراً ہی منتقل ہو جاتا ہے، ابتدائی ترسیل کی کوشش عام طور پر ملی سیکنڈز میں ہوتی ہے۔

  • اس وقت کئی نتائج سامنے آ رہے ہیں۔ مثال کے طور پر:

    • کامیاب ترسیل: انٹرنیٹ سروس فراہم کنندہ (ISP) ای میل کو قبول کرتا ہے اور مطلوبہ وصول کنندہ کو بھیجتا ہے۔
    • سخت اچھال: چونکہ وصول کنندہ کا پتہ غلط ہے، ISP ای میل کو مسترد کر دیتا ہے۔ ISP ہارڈ باؤنس نوٹیفکیشن Amazon SES کو واپس بھیجتا ہے، جو بھیجنے والے کو ای میل کے ذریعے یا اس نوٹیفکیشن کو موصول کرنے کے لیے ترتیب دیے گئے Amazon Simple Notification Service (Amazon SNS) موضوع پر شائع کر کے مطلع کرتا ہے۔
    • نرم اچھال: وصول کنندہ کا ان باکس بھرا ہوا، ڈومین موجود نہ ہونے، یا کسی گزرتے ہوئے حالات جیسے کہ ISP درخواست پر کارروائی کرنے میں بہت مصروف ہونے کی وجہ سے، ISP وصول کنندہ کو ای میل ڈیلیور کرنے سے قاصر ہو سکتا ہے۔ اس کے بعد ISP ای میل کو ایک خاص تعداد تک دوبارہ آزماتا ہے اور SES کو ایک نرم باؤنس پیغام بھیجتا ہے۔ اگر SES مخصوص ٹائم فریم کے اندر ای میل ڈیلیور کرنے سے قاصر ہے، تو یہ یا تو ایونٹ کو SNS ٹاپک پر شائع کرتا ہے یا ای میل کے ذریعے سخت باؤنس پیغام بھیجتا ہے۔
    • شکایت: وصول کنندہ کے ای میل پروگرام میں ای میل کو سپیم کے طور پر درجہ بندی کیا گیا ہے۔ شکایت کی اطلاع Amazon SES کو بھیجی جاتی ہے، جو پھر اسے بھیجنے والے کو بھیج دیتی ہے اگر Amazon SES اور ISP کے پاس فیڈ بیک لوپ قائم ہو۔
    • آٹو رسپانس: وصول کنندہ ISP Amazon SES کو وصول کنندہ کی طرف سے خودکار جواب کی اطلاع دیتا ہے، جیسے کہ دفتر سے باہر کا نوٹس، اور Amazon SES بھیجنے والے کو اطلاع بھیجتا ہے۔

ڈیلیوری ناکام ہونے پر، ایمیزون ایس ای ایس بھیجنے والے کو ایک غلطی واپس کرتا ہے اور ای میل کو حذف کر دیتا ہے۔

ایمیزون ایس ای ایس ترتیب دینا

کسی بھی دوسری AWS سروسز کے برعکس، SES مثال بنانے کی عملی طور پر کوئی ضرورت نہیں ہے کیونکہ تمام نئے AWS اکاؤنٹس بطور ڈیفالٹ AWS SES سینڈ باکس میں رکھے جاتے ہیں۔ ہر AWS اکاؤنٹ میں AWS SES کے لیے سینڈ باکس تک رسائی بطور ڈیفالٹ دستیاب علاقوں میں ہوتی ہے۔

سینڈ باکس موڈ استعمال کرتے وقت، ہم صرف تصدیق شدہ شناختوں کو ای میل بھیج سکتے ہیں۔ ایک ڈومین یا ای میل پتہ جسے ہم ای میل بھیجنے کے لیے استعمال کرتے ہیں وہ ایک تصدیق شدہ شناخت ہے۔ ہمیں ہر اس شناخت کی تعمیر اور توثیق کرنی چاہیے جسے ہم بطور استعمال کرنا چاہتے ہیں۔ From, To, Source, Sender، یا Return-Path پتہ اس سے پہلے کہ ہم سینڈ باکس موڈ میں SES کا استعمال کرتے ہوئے ای میل بھیج سکیں۔ شناخت کی تصدیق کے لیے Amazon SES کا استعمال کرکے، ہم اپنی ملکیت ثابت کر سکتے ہیں اور غیر قانونی استعمال کو روک سکتے ہیں۔

دھوکہ دہی سے بچنے اور IP ایڈریس کی ساکھ کو محفوظ رکھنے کے لیے، AWS SES میں ای میل بھیجنے کی حدود شامل ہیں۔ یہ حدود فی سیکنڈ ای میلز کی زیادہ سے زیادہ تعداد اور ہر صارف کے لیے روزانہ ای میل کی حد متعین کرتی ہیں۔ AWS سپورٹ سنٹر سے رابطہ کر کے، ہم علاقے کے لحاظ سے اس طرح کے کوٹے قائم کر سکتے ہیں۔

آئیے شناختوں کی تصدیق کرتے ہیں۔ AWS کنسول میں لاگ ان کریں اور تلاش کریں "ایمیزون سادہ ای میل سروس"

SES کا تعارف

پھر "پر کلک کریںشناخت بنائیںتصدیق کے لیے ای میل یا ڈومین شامل کرنے کے لیے۔ ہمارے معاملے میں، ہم تصدیق کے لیے ایک ای میل شامل کرنے جا رہے ہیں۔

شناخت بنائیں

ایک بار، شناخت بن جانے کے بعد، ہم تفصیلات کی تصدیق کر سکتے ہیں۔

شناخت بنائی

ہم نے جو شناخت بنائی ہے وہ اس میں جاتی ہے "تصدیق زیر التواء"مرحلہ. اس مرحلے پر، صارف کو AWS سے تصدیقی میل چیک کرنے اور ای میل کی تصدیق کرنے کے لیے ہدایات پر عمل کرنے کی ضرورت ہے۔

تصدیق شدہ شناخت

اگلا، ہمیں لانے کی ضرورت ہے "رسائی کلید"اور"خفیہ کلیدSES کے ساتھ ہماری درخواست کی تصدیق اور اجازت کے لیے۔ اسے پیدا کرنے کے لیے، ہمیں ایک صارف گروپ بنانا ہوگا اور اس گروپ میں صارف کو شامل کرنا ہوگا۔ جب ہم اس صارف کو بناتے ہیں، AWS ایک رسائی کلید اور خفیہ کلید تیار کرتا ہے۔ تو آئیے ری ڈائریکٹ کریں "IAMAWS کنسول میں اور صارف گروپ بنائیں۔

صارف گروپ بنائیں

پھر ہمیں شامل کرنے کی ضرورت ہے "ایڈمنسٹریٹر رسائیSES کے لیے اس گروپ کو اجازت۔

اجازت شامل کریں۔

آخر میں، ہم اوپر والے گروپ میں ایک صارف کو شامل کریں گے۔

صارف شامل کریں

اگلا، ہمیں اجازت کے لیے گروپ کو منتخب کرنے کی ضرورت ہے۔

گروپ شامل کریں

آخر میں، مزید استعمال کے لیے اسکرین پر دکھائی جانے والی رسائی کلید اور خفیہ کلید کو کاپی کریں۔

اسپرنگ کلاؤڈ پروجیکٹ کا استعمال کرتے ہوئے ای میلز بھیجنا

پروجیکٹ سیٹ اپ

آئیے اسپرنگ کلاؤڈ پروجیکٹ کو گھمائیں اور SES کے ساتھ ضم کرنے کے لیے استعمال کے کیسز کو دیکھیں۔ ایک کنکال منصوبے کے ساتھ شروع کرنے کا سب سے آسان طریقہ کے ذریعے ہے بہار کی ابتداء:

بہار کی ابتداء

ہم نے شامل کیا ہے اسپرنگ ویب REST MVC کے لیے، اپاچی فری مارکر HTML پر مبنی ای میل ٹیمپلیٹس بنانے کے لیے، جاوا میل بھیجنے والا ایک ای میل بھیجنے کے لیے اور Lombok (اختیاری بوائلر پلیٹ کو کم کرنے والی لائبریری) انحصار۔ مزید برآں، ہمیں Spring Cloud AWS اور SES کے لیے متعلقہ انحصار شامل کرنے کی ضرورت ہے۔ Spring Cloud AWS کے لیے، ہم اپنے میں ایک علیحدہ Spring Cloud AWS BOM شامل کریں گے۔ pom.xml اس کا استعمال کرتے ہوئے فائل بلاک:

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>io.awspring.cloud</groupId>
			<artifactId>spring-cloud-aws-dependencies</artifactId>
			<version>2.3.0</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

آخر میں، SES کے لیے سپورٹ شامل کرنے کے لیے، ہمیں ماڈیول انحصار کو شامل کرنے کی ضرورت ہے جو ایک سٹارٹر ماڈیول کے طور پر دستیاب ہے۔ spring-cloud-starter-aws-ses:

<dependency>
	<groupId>io.awspring.cloud</groupId>
	<artifactId>spring-cloud-starter-aws-ses</artifactId>
</dependency>

spring-cloud-starter-aws-ses کے لیے عبوری انحصار شامل ہے۔ spring-cloud-starter-aws، اور spring-cloud-aws-ses. spring-cloud-aws-ses SES کے ماڈیول میں دو کلاسز ہیں: SimpleEmailServiceMailSender اور SimpleEmailServiceJavaMailSender.

  • ۔ SimpleEmailServiceMailSender کلاس ای میلز بھیجنے کے لیے ایمیزون سادہ ای میل سروس کا استعمال کرتی ہے۔ اس نفاذ کے لیے Java Mail API کی ضرورت نہیں ہے۔ یہ منسلکات کے بغیر سیدھے سیدھے میل پیغامات بھیجنے کے لیے استعمال کیا جا سکتا ہے۔
  • ۔ SimpleEmailServiceJavaMailSender کلاس ای میلز بھیجنے کے قابل بناتا ہے جس میں اٹیچمنٹ اور دیگر مائم عناصر ہوتے ہیں۔

تو یہ ہماری تمام بنیادی ضروریات کا احاطہ کرتا ہے!

پھلیاں ترتیب دینا

جیسا کہ اوپر بحث کی گئی ہے، ہمیں پھلیاں کی دو اقسام کی وضاحت کرنے کی ضرورت ہے: SimpleEmailServiceMailSender اور SimpleEmailServiceJavaMailSender. ہم آسانی سے رسائی کلید اور خفیہ کلید کو بطور اسناد پاس کر سکتے ہیں اور ایک کو ترتیب دے سکتے ہیں۔ MailSender بین جسے ہم ای میل بھیجنے کے لیے استعمال کریں گے:

@Configuration
public class SesConfig {

    @Value("${cloud.aws.credentials.access-key}")
    private String accessKey;

    @Value("${cloud.aws.credentials.secret-key}")
    private String secretKey;

    @Value("${cloud.aws.region.static}")
    private String region;

    @Bean
    public AmazonSimpleEmailService amazonSimpleEmailService() {
        BasicAWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
        return AmazonSimpleEmailServiceClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(credentials))
                .withRegion(region)
                .build();
    }

    @Bean
    public MailSender mailSender(AmazonSimpleEmailService amazonSimpleEmailService) {
        return new SimpleEmailServiceMailSender(amazonSimpleEmailService);
    }

    @Bean
    public JavaMailSender javaMailSender(AmazonSimpleEmailService amazonSimpleEmailService) {
        return new SimpleEmailServiceJavaMailSender(amazonSimpleEmailService);
    }
}

منسلکات کے ساتھ ای میلز بھیجنے کے لیے ہمیں کنفیگر کرنے کی ضرورت ہے۔ SimpleEmailServiceJavaMailSender جس کا نفاذ ہے۔ JavaMailSender بہار کے میل تجریدی سے انٹرفیس۔

بہترین طرز عمل، صنعت کے لیے منظور شدہ معیارات، اور چیٹ شیٹ کے ساتھ Git سیکھنے کے لیے ہمارے ہینڈ آن، عملی گائیڈ کو دیکھیں۔ گوگلنگ گٹ کمانڈز کو روکیں اور اصل میں سیکھ یہ!

ہم ان خصوصیات کی بھی وضاحت کریں گے جن سے معلومات کو بازیافت کرنا ہے۔ application.yml:

cloud:
  aws:
    region:
      static: eu-central-1
      auto: false
    stack:
      auto: false
    credentials:
      access-key: ********
      secret-key: **************************

سادہ ای میل بھیجنا

ہم استعمال کرکے سادہ ای میلز بھیج سکتے ہیں۔ SimpleEmailServiceMailSender بین جسے ہم نے اوپر ترتیب دیا ہے۔ آئیے اس بین کو استعمال کرنے کے لیے سروس لیئر کی وضاحت کریں:

@Service
public class EmailService {

    @Autowired
    private MailSender mailSender;

    public void sendMessage(SimpleMailMessage simpleMailMessage) {
        this.mailSender.send(simpleMailMessage);
    }
}

ہم بلا رہے ہیں۔ send() میں طریقہ MailSender ہماری ای میل بھیجنے کے لیے بین۔ ہمیں بھی پاس کرنے کی ضرورت ہے۔ SimpleMailMessage جیسے اوصاف پر مشتمل ہوگا۔ from, toہمارے ای میل کے لیے متن اور مضمون۔ تو، ایک کی وضاحت کرتے ہیں Controller REST API کا استعمال کرتے ہوئے مندرجہ بالا سروس کو کال کرنے کے لیے کلاس:

@RestController
public class EmailController {

    @Autowired
    private EmailService emailService;

    @PostMapping("/sendEmail")
    public String sendMessage(@RequestBody EmailDetails emailDetails) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(emailDetails.getFromEmail());
        simpleMailMessage.setTo(emailDetails.getToEmail());
        simpleMailMessage.setSubject(emailDetails.getSubject());
        simpleMailMessage.setText(emailDetails.getBody());
        emailService.sendMessage(simpleMailMessage);

        return "Email sent successfully";
    }
}

اب، اگر ہم ایپلیکیشن چلاتے ہیں اور درج ذیل کرل کو عمل میں لاتے ہیں تو یہ تصدیق شدہ ای میل ایڈریس پر ای میل بھیجے گا:

curl -i -X POST 
   -H "Content-Type:application/json" 
   -d 
'{
  "fromEmail": "[email protected]",
  "toEmail": "[email protected]",
  "subject": "test email",
  "body": "Hi, This is a test email."
}' 
 'http://localhost:8080/sendEmail'

اگلا، ہم وصول کنندہ کے میل ایڈریس پر لاگ ان کر سکتے ہیں اور تصدیق کر سکتے ہیں کہ آیا وصول کنندہ کو ای میل موصول ہوئی ہے۔

اٹیچمنٹ کے ساتھ سادہ ای میل بھیجنا

ہم اٹیچمنٹ کو مائیم کے طور پر پاس کرنے کے لیے ایک سروس لیئر کی وضاحت کریں گے اور دیگر ای میل کی خصوصیات کو سیٹ کریں گے۔ from, to، متن اور موضوع:

@Service
public class EmailService {

    @Autowired
    private JavaMailSender javaMailSender;

    public void sendMessageWithAttachment(SimpleMailMessage simpleMailMessage) {

        try {
            MimeMessage message = javaMailSender.createMimeMessage();

            
            MimeMessageHelper helper = new MimeMessageHelper(
                    message,
                    MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED,
                    StandardCharsets.UTF_8.name());

            
            helper.addAttachment("logo.png", new ClassPathResource("logo.png"));
            helper.setTo(Objects.requireNonNull(simpleMailMessage.getTo()));
            helper.setText(Objects.requireNonNull(simpleMailMessage.getText()));
            helper.setSubject(Objects.requireNonNull(simpleMailMessage.getSubject()));
            helper.setFrom(Objects.requireNonNull(simpleMailMessage.getFrom()));
            javaMailSender.send(message);

        } catch (MessagingException e) {
            System.err.println("Exception: " + e.getMessage());
        }
    }
}

یہاں ہم استعمال کررہے ہیں MimeMessageHelper منسلکہ کے ساتھ ای میل بنانے کے لیے۔ آخر میں، ہم وضاحت کریں گے Controller منتقل کرنے کے لئے پرت SimpleMailMessage خصوصیات:

@RestController
public class EmailController {

    @Autowired
    private EmailService emailService;

    @PostMapping("/sendEmailWithAttachment")
    public String sendMessageWithAttachment(@RequestBody EmailDetails emailDetails) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(emailDetails.getFromEmail());
        simpleMailMessage.setTo(emailDetails.getToEmail());
        simpleMailMessage.setSubject(emailDetails.getSubject());
        simpleMailMessage.setText(emailDetails.getBody());
        emailService.sendMessageWithAttachment(simpleMailMessage);

        return "Email sent successfully";
    }
}

اب، اگر ہم ایپلیکیشن چلاتے ہیں اور درج ذیل کرل کو عمل میں لاتے ہیں تو یہ تصدیق شدہ ای میل ایڈریس پر ای میل بھیجے گا:

curl -i -X POST 
   -H "Content-Type:application/json" 
   -d 
'{
  "fromEmail": "[email protected]",
  "toEmail": "[email protected]",
  "subject": "test email",
  "body": "Hi, This is a test email with attachment."
}' 
 'http://localhost:8080/sendEmailWithAttachment'

اگلا، ہم وصول کنندہ کے میل ایڈریس پر لاگ ان کر سکتے ہیں اور تصدیق کر سکتے ہیں کہ آیا وصول کنندہ کو ای میل موصول ہوئی ہے۔

اٹیچمنٹ کے ساتھ ٹیمپلیٹ ای میل بھیجنا

پچھلے استعمال کے معاملات جو ہم نے دیکھے تھے وہ ترقی یا جانچ کے منظرناموں کے لیے اچھے ہیں لیکن پیداوار میں، ہم عام طور پر متغیرات کے ساتھ ای میل ٹیمپلیٹ استعمال کرتے ہیں جسے API کے جوابات کا استعمال کرتے ہوئے تبدیل کیا جائے گا۔ ہم نے پہلے انحصار شامل کیا تھا۔ اپاچی فری مارکر. ہم اسے ایک ٹیمپلیٹ کی وضاحت کرنے اور اسے پروسیس کرنے کے لیے لوڈ کرنے کے لیے استعمال کریں گے!

اس کے لیے سب سے پہلے ایک سادہ ٹیمپلیٹ کی وضاحت کرتے ہیں، اس کا نام رکھیں email-template.ftl اور اس میں رکھو templates فولڈر کے تحت resources:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>StackAbuse Email</title>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td align="center" valign="top" bgcolor="#838383"
            style="background-color: #838383;"><br> <br>
            <table width="600" border="0" cellspacing="0" cellpadding="0">
                <tr>
                    <td align="center" valign="top" bgcolor="#d3be6c"
                        style="background-color: #d3be6c; font-family: Arial,
                         Helvetica, sans-serif; font-size: 13px; color: #000000;
                          padding: 0px 15px 10px 15px;">

                        <div style="font-size: 48px; color:blue;">
                            <b>StackAbuse</b>
                        </div>

                        <div style="font-size: 24px; color: #555100;">
                            <br> Sending Email using Spring Cloud with <b>FreeMarker</b> template !!! <br>
                        </div>
                        <div>
                            <br> Want to learn a new technology or become an in-demand full-stack developer?<br>
                            <br> We teach the skills you need to level up in your career.<br>
                            <br>"Sharing knowledge is the biggest learning" <br> <br>
                            <br> <br> <b>${Name}</b><br>${location}<br>
                            <br>
                        </div>
                    </td>
                </tr>
            </table> <br> <br></td>
    </tr>
</table>
</body>
</html>

اگلا، ہمیں راستے سے ٹیمپلیٹ لوڈ کرنے اور بین کے طور پر شامل کرنے کے لیے کنفیگریشن کلاس کی وضاحت کرنے کی ضرورت ہے۔ اس کے لیے ہم وضاحت کریں گے۔ FreeMarkerConfigurationFactoryBean:

@Configuration
public class FreemarkerConfig {

    @Primary
    @Bean
    public FreeMarkerConfigurationFactoryBean factoryBean() {
        FreeMarkerConfigurationFactoryBean bean = new FreeMarkerConfigurationFactoryBean();
        bean.setTemplateLoaderPath("classpath:/templates");
        return bean;
    }
}

اگلا، ہم اس ٹیمپلیٹ کو لوڈ کرنے کے لیے اپنی سروس لیئر کی وضاحت کریں گے اور SES کو بھیجنے کے لیے ایک حتمی پیغام بنائیں گے:

@Service
public class EmailService {
    
    @Autowired
    private JavaMailSender javaMailSender;

    @Autowired
    private Configuration config;
    
    public void sendTemplateMessageWithAttachment(SimpleMailMessage simpleMailMessage) {

        try {
            MimeMessage message = javaMailSender.createMimeMessage();

            
            MimeMessageHelper helper = new MimeMessageHelper(
                    message,
                    MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED,
                    StandardCharsets.UTF_8.name());

            Template t = config.getTemplate("email-template.ftl");
            Map model = new HashMap();
            model.put("Name", "StackAbuse Admin");
            model.put("location", "Bangalore, India");
            String html = FreeMarkerTemplateUtils.processTemplateIntoString(t, model);

            
            helper.addAttachment("logo.png", new ClassPathResource("logo.png"));
            helper.setTo(Objects.requireNonNull(simpleMailMessage.getTo()));
            helper.setText(html, true);
            helper.setSubject(Objects.requireNonNull(simpleMailMessage.getSubject()));
            helper.setFrom(Objects.requireNonNull(simpleMailMessage.getFrom()));
            javaMailSender.send(message);

        } catch (MessagingException | IOException | TemplateException e) {
            System.err.println("Exception: " + e.getMessage());
        }
    }

آخر میں، ہم a کی وضاحت کریں گے۔ Controller متحرک ای میل کی خصوصیات کو منتقل کرنے کے لیے پرت:

@RestController
public class EmailController {

    @Autowired
    private EmailService emailService;

    @PostMapping("/sendTemplateEmailWithAttachment")
    public String sendTemplateMessageWithAttachment(@RequestBody EmailDetails emailDetails) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(emailDetails.getFromEmail());
        simpleMailMessage.setTo(emailDetails.getToEmail());
        simpleMailMessage.setSubject(emailDetails.getSubject());
        simpleMailMessage.setText(emailDetails.getBody());
        emailService.sendTemplateMessageWithAttachment(simpleMailMessage);

        return "Email sent successfully";
    }
}

اب، اگر ہم ایپلیکیشن چلاتے ہیں اور درج ذیل کرل کو عمل میں لاتے ہیں تو یہ تصدیق شدہ ای میل ایڈریس پر ای میل بھیجے گا:

curl -i -X POST 
   -H "Content-Type:application/json" 
   -d 
'{
  "fromEmail": "[email protected]",
  "toEmail": "[email protected]",
  "subject": "test email",
  "body": "Hi, This is a test template email with attachment."
}' 
 'http://localhost:8080/sendTemplateEmailWithAttachment'

اگلا، ہم وصول کنندہ کے میل ایڈریس پر لاگ ان کر سکتے ہیں اور تصدیق کر سکتے ہیں کہ آیا وصول کنندہ کو ای میل موصول ہوا ہے:

فری مارکر ٹیمپلیٹ ای میل

AWS SES میں ٹیمپلیٹس کا استعمال کرتے ہوئے ذاتی ای میل بھیجنا

پچھلے استعمال کے معاملے میں ہم نے ای میلز بھیجنے کے لیے ایک جامد ٹیمپلیٹ کا استعمال کیا تھا۔ ہم ٹیمپلیٹس کو مختلف مقاصد اور مختلف قسم کے وصول کنندگان کے لیے متحرک طور پر ڈیزائن کرنے کے قابل کیسے بنا سکتے ہیں؟ AWS SES ہمیں ایک ہی آپریشن میں ذاتی نوعیت کی ای میلز ایک یا زیادہ مقامات پر بھیجنے کے لیے ای میل ٹیمپلیٹس بنانے کی اجازت دیتا ہے۔

ہم فی Amazon SES اکاؤنٹ 10,000 تک ای میل ٹیمپلیٹس بنا سکتے ہیں۔ ہر ٹیمپلیٹ کا سائز 500KB تک ہو سکتا ہے، بشمول متن اور HTML دونوں حصے۔ ہم ہر کال میں 50 منزلوں تک بھیج سکتے ہیں۔

تو آئیے جلدی سے ایک ای میل ٹیمپلیٹ بنائیں۔ سب سے پہلے، ہم مندرجہ ذیل ٹیمپلیٹ کا استعمال کرتے ہوئے JSON فائل کی وضاحت کر سکتے ہیں:

{
  "Template": {
    "TemplateName": "MyTemplate",
    "SubjectPart": "Greetings from {{name}}!",
    "HtmlPart": "StackAbuse Email


StackAbuse

Sending Email using Spring Cloud with AWS SES Email template !!!

Want to learn a new technology or become an in-demand full-stack developer?

We teach the skills you need to level up in your career.

"Sharing knowledge is the biggest learning"



{{name}}
{{location}}



"
, "TextPart": "Dear {{name}},rnHere is your StackAbuse Email." } }

یہ سانچہ درج ذیل صفات پر مشتمل ہے:

  • ٹیمپلیٹ کا نام: اس میں ٹیمپلیٹ کا نام ہے۔
  • سبجیکٹ پارٹ: یہ ای میل کی سبجیکٹ لائن رکھتا ہے۔ اس اثاثہ پر متبادل ٹیگز موجود ہو سکتے ہیں۔ ان ٹیگز کو اس طرح فارمیٹ کیا گیا ہے: {{tagname}}. آپ کے لیے ایک قدر درج کر سکتے ہیں۔ {{tagname}} ای میل بھیجتے وقت ہر منزل کے لیے۔
  • ایچ ٹی ایم ایل پارٹ: یہ ای میل کی HTML باڈی پر مشتمل ہے اور اس میں متبادل ٹیگ بھی شامل ہو سکتے ہیں۔
  • ٹیکسٹ پارٹ: یہ ای میل کے ٹیکسٹ باڈی کی نمائندگی کرتا ہے۔ ای میل کا یہ ورژن ان وصول کنندگان کو بھیجا جاتا ہے جن کے ای میل کلائنٹس HTML ای میلز نہیں دیکھتے ہیں۔ اس اثاثہ پر متبادل ٹیگز موجود ہو سکتے ہیں۔

ہم اس فائل کو بطور محفوظ کر سکتے ہیں۔ mytemplate.json. آخر میں ہم مندرجہ ذیل ٹیمپلیٹ بنانے کے لیے AWS CLI کمانڈ استعمال کر سکتے ہیں:

$ aws ses create-template --cli-input-json file://mytemplate.json

اگلا، آئیے اوصاف کی وضاحت کرنے اور ٹیمپلیٹڈ ای میلز بھیجنے کے لیے سروس لیئر کی وضاحت کریں:

@Service
public class EmailService {

    @Autowired
    private AmazonSimpleEmailService simpleEmailService;

    public void sendTemplatedMessage(SimpleMailMessage simpleMailMessage) {

        Destination destination = new Destination();
        List toAddresses = new ArrayList();
        String[] emails = simpleMailMessage.getTo();
        Collections.addAll(toAddresses, Objects.requireNonNull(emails));
        destination.setToAddresses(toAddresses);

        SendTemplatedEmailRequest templatedEmailRequest = new SendTemplatedEmailRequest();
        templatedEmailRequest.withDestination(destination);
        templatedEmailRequest.withTemplate("MyTemplate");
        templatedEmailRequest.withTemplateData("{ "name":"StackAbuse Admin", "location": "Bangalore, India"}");
        templatedEmailRequest.withSource(simpleMailMessage.getFrom());
        simpleEmailService.sendTemplatedEmail(templatedEmailRequest);
    }
}

ہم متعدد شامل کر سکتے ہیں۔ Destination ایک سے زیادہ وصول کنندگان کو بلک ای میلز بھیجنے کے لیے پتے۔ ہم استعمال کر رہے ہیں۔ sendTemplatedEmail() سے طریقہ AmazonSimpleEmailService اس ٹیمپلیٹڈ ای میل کو بھیجنے کے لیے انٹرفیس۔ ہمیں اپنے ٹیمپلیٹ کے HTML متن میں تبدیل کرنے کے لیے متبادل ٹیگز کو پاس کرنے کی ضرورت ہے جو ہم نے پہلے بنایا تھا۔

آخر میں، ہم a کی وضاحت کریں گے۔ Controller صفات کو منتقل کرنے کے لیے REST API کی وضاحت کرنے کے لیے پرت:

@RestController
public class EmailController {

    @Autowired
    private EmailService emailService;

    @PostMapping("/sendAWSTemplatedEmail")
    public String sendTemplatedMessage(@RequestBody EmailDetails emailDetails) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(emailDetails.getFromEmail());
        simpleMailMessage.setTo(emailDetails.getToEmail());
        simpleMailMessage.setSubject(emailDetails.getSubject());
        simpleMailMessage.setText(emailDetails.getBody());
        emailService.sendTemplatedMessage(simpleMailMessage);

        return "Email sent successfully";
    }
}

اگلا، جب ہم ایپ چلاتے ہیں، تو ہم درج ذیل پر عمل کر سکتے ہیں۔ curl ٹیمپلیٹڈ ای میلز بھیجنے کے لیے:

curl -i -X POST 
   -H "Content-Type:application/json" 
   -d 
'{
  "fromEmail": "[email protected]",
  "toEmail": "[email protected]",
  "subject": "Greetings from StackAbuse Admin",
  "body": "Hi, This is a AWS templated email."
}' 
 'http://localhost:8080/sendAWSTemplatedEmail'

اب وصول کنندہ کو آخر کار ایک ٹیمپلیٹڈ ای میل دیکھنے کو ملتا ہے:

ٹیمپلیٹڈ ای میل

پیداوار تک رسائی کی درخواست کریں۔

آخر میں، کسی بھی وصول کنندہ کو ای میل بھیجنے کے لیے، قطع نظر اس کے کہ وصول کنندہ کا پتہ یا ڈومین توثیق شدہ ہے، ہمیں بالآخر اپنے اکاؤنٹ کو سینڈ باکس سے باہر نکالنا چاہیے۔ ہماری تمام شناختیں بشمول From, Source, Sender، اور Return-Path پتے، اب بھی تصدیق شدہ ہونا ضروری ہے۔ ہم پیداوار تک رسائی کے لیے درخواست جمع کر سکتے ہیں "اکاؤنٹ کا ڈیش بورڈصفحہ درج ذیل ہے:

اکاؤنٹ کا ڈیش بورڈ
پیداوار تک رسائی کی درخواست کریں۔

ہم AWS کنسول سے مندرجہ بالا تمام تفصیلات کو پُر کرنے کی درخواست جمع کر سکتے ہیں۔ اسے AWS CLI کا استعمال کرتے ہوئے بھی جمع کرایا جا سکتا ہے۔ یہ اس وقت مددگار ثابت ہوگا جب ہمیں شناخت کی ایک بڑی تعداد تک رسائی کی درخواست کرنے کی ضرورت ہو اور اس عمل کو خودکار کرنا چاہیں۔

نتیجہ

Amazon Simple Email Service (SES) کے اہم خیالات اور اس کے ساتھ انٹرفیس کے لیے Spring Cloud AWS کی پیش کردہ لائبریریوں کا اس مضمون میں احاطہ کیا گیا ہے۔ مزید برآں، ہم نے REST API کے ساتھ ایک Spring Boot ایپلیکیشن بنائی ہے جو Spring Cloud AWS SES ماڈیول کے ذریعے ای میل بھیج سکتی ہے۔

اب آپ کو یہ سمجھنا چاہیے کہ ایمیزون سادہ ای میل سروس (SES) کیا ہے اور اسے ای میل بھیجنے کے لیے کیسے استعمال کیا جائے۔

ٹائم اسٹیمپ:

سے زیادہ Stackabuse