কম্পিউটার

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

আমি সম্প্রতি একটি ক্লায়েন্টের জন্য একটি সাধারণ ল্যান্ডিং পৃষ্ঠা ওয়েবসাইট তৈরি করছিলাম যারা তাদের ইমেল শেয়ার না করে তাদের ওয়েবসাইটের মাধ্যমে ইমেল পেতে চেয়েছিল।

সত্যি বলতে, আমি আগে কখনোই সেই কার্যকারিতা বাস্তবায়নের চেষ্টা করিনি। আমি সবসময় একটি অ্যাঙ্কর ট্যাগ এবং একটি mailto সহ একটি সাধারণ "আমাদের সাথে যোগাযোগ করুন" বোতাম রাখতে অভ্যস্ত ছিলাম href-এ এই মত বৈশিষ্ট্য:

<button>
	<a href="mailto:myemail@example.com">Contact Me</a>
</button>

কিন্তু এই পদ্ধতির দুটি অসুবিধা রয়েছে:

  1. এটি উভয় পক্ষকে বাধ্য করে, যে ব্যবহারকারী বার্তা পাঠাতে চান এবং যে সাইট মালিক এটি গ্রহণ করেন, তাদের একে অপরের সাথে তাদের ইমেল শেয়ার করতে বাধ্য করে। যদিও এটি কিছুর জন্য ঠিক আছে, এটি গোপনীয়তা-মনস্ক ব্যক্তিদের জন্য আদর্শ নয়৷
  2. সাইট ভিজিটরের জন্য, লিঙ্কে ক্লিক করা তাদের তাদের ডিভাইসে তাদের ডিফল্ট মেল প্রোগ্রাম খুলতে বাধ্য করে, এবং এটি হতাশাজনক হতে পারে। যদি তারা একটি পাবলিক কম্পিউটার ব্যবহার করে? তারা লগ ইন না হলে কি হবে? যদি তারা কেবল তাদের মেল প্রোগ্রাম ব্যবহার করতে না চায়?
    হ্যাঁ, প্রযুক্তিগতভাবে তারা কেবল প্রাপকের ইমেল ঠিকানাটি ধরতে পারে এবং তাদের ব্রাউজারের মাধ্যমে বা যেখানেই তারা লগ ইন করে বার্তাটি পাঠাতে পারে৷ কিন্তু সেগুলি সমস্ত অতিরিক্ত পদক্ষেপ এবং বাধা যা ব্যবহারকারীদের তাদের বার্তা পাঠাতে নিরুৎসাহিত করতে পারে এবং ব্যবসা সম্ভাব্য প্রতিক্রিয়া হারাতে পারে বা সুযোগ।

এই কারণে, আমরা একটি ইমেল ফর্মের সাথে যেতে বেছে নিয়েছি যেখান থেকে ব্যবহারকারীরা কেবল তাদের বার্তায় লিখতে পারেন এবং সাবমিট ক্লিক করতে পারেন, ওয়েবসাইটটি ছেড়ে না গিয়ে সাইটের মালিককে একটি ইমেল পাঠাতে পারেন৷

একটি দ্রুত Google অনুসন্ধান দেখায় যে তৃতীয় পক্ষের সরঞ্জাম/উইজেট রয়েছে যা আপনি একটি ওয়েবসাইটে এম্বেড করতে পারেন, তবে তাদের বেশিরভাগই ব্র্যান্ডেড এবং সম্পূর্ণ কাস্টমাইজেশনের জন্য অর্থপ্রদানের সদস্যতা প্রয়োজন৷

এবং যদি না আপনি ওয়ার্ডপ্রেসের মতো একটি সিএমএস ব্যবহার করছেন যাতে একটি বিল্ট-ইন প্লাগইন রয়েছে যা এটি করতে পারে, এটি একটি অসুবিধাজনক পুনরাবৃত্তি খরচ।

পরিবর্তে আমি নিজেই সেই বৈশিষ্ট্যটি কোড করতে বেছে নিয়েছি যাতে আমার সম্পূর্ণ নিয়ন্ত্রণ থাকে৷

এই নির্দেশিকাটির উদ্দেশ্যে আমি HTML এবং AWS পরিষেবাগুলি ব্যবহার করে সেই কার্যকারিতা বাস্তবায়নের জন্য যে পদক্ষেপগুলি নিয়েছিলাম তা পুনরায় তৈরি করব৷

HTML ফর্ম

আমি এখানে খুব সহজ রাখব এবং আমাদের কাঙ্খিত কার্যকারিতা পরীক্ষা করার জন্য কোন CSS ছাড়াই একটি মৌলিক HTML ফর্ম নিয়ে যাব৷

<h2>Contact Us</h2>
<form>
  <label for="name">Name:</label>
  <input name="name" type="text"/><br/><br/>
  <label for="email">Email:</label>
  <input name="email" type="email"/><br/><br/>
  <label for="name">Message:</label>
  <textarea name="message"></textarea><br/><br/>
  <input type="submit"/>
  <div>
    <p id="result-text"></p>
  </div>
</form>
AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন
এখানে দেখার মতো অভিনব কিছু নেই...

এখন আমরা জাভাস্ক্রিপ্ট দিয়ে সাবমিট কার্যকারিতা পরিচালনা করতে চাই।

const form = document.querySelector('form')
form.addEventListener('submit', event => {
  // prevent the form submit from refreshing the page
  event.preventDefault()
 
  const { name, email, message } = event.target
  console.log('Name: ', name.value)
  console.log('email: ', email.value)
  console.log('Message: ', message.value)
  
})

এই মুহুর্তে, আমাদের কাছে একটি ফর্ম রয়েছে যা ব্যবহারকারী এবং জাভাস্ক্রিপ্ট কোড থেকে ইনপুট পায় যা কনসোলে ফলাফলগুলি প্রদর্শন করে।

আমরা এটিকে আপাতত রেখে দিতে পারি এবং ব্যাকএন্ড পরিষেবাগুলিতে কাজ শুরু করতে পারি যা ফর্ম ডেটা পাবে এবং সেই ডেটা সহ একটি ইমেল পাঠাবে৷

ব্যাকএন্ড ওভারভিউ

আসুন AWS এবং আমরা কী পরিষেবাগুলি ব্যবহার করতে যাচ্ছি এবং কীভাবে ব্যবহার করতে যাচ্ছি তা জেনে নেওয়া যাক৷

শিরোনামে উল্লিখিত হিসাবে, আমরা AWS Lambda ব্যবহার করব এবং সাধারণ ইমেল পরিষেবা (এসইএস)। এসইএস হল একটি সার্ভারবিহীন মেসেজিং পরিষেবা যা আপনাকে আহ্বান করার সময় ইমেল বার্তা পাঠাতে দেয়। AWS Lambda আপনাকে ইভেন্টগুলির প্রতিক্রিয়া হিসাবে চালানোর জন্য সার্ভার-সাইড কোড লেখার অনুমতি দেয়।

এছাড়াও আমরা API গেটওয়ে ব্যবহার করব যা আমাদের ল্যাম্বডা ফাংশনগুলিকে HTTP এর মাধ্যমে আহ্বান করতে সক্ষম করে।

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

এই ক্ষেত্রে, যখন আমাদের ফর্ম জমা দেওয়া হয়, নিম্নলিখিত কর্মপ্রবাহ ঘটবে:

  1. আমাদের ব্রাউজার (জাভাস্ক্রিপ্ট) AWS API গেটওয়ে দ্বারা নির্দিষ্ট করা একটি এন্ডপয়েন্ট URL-এ অনুরোধের অংশে ফর্ম ডেটা সহ একটি পোস্ট অনুরোধ করবে
  2. এপিআই গেটওয়ে এই অনুরোধটি যাচাই করবে। তারপর এটি Lambda ফাংশন ট্রিগার করবে যা একটি ইভেন্ট প্যারামিটার গ্রহণ করে। API গেটওয়ে ইভেন্ট প্যারামিটারের বডি প্রপার্টিতে ফর্ম ডেটা রাখবে।
  3. আমাদের Lambda ফাংশন ইভেন্ট বডি থেকে ডেটা বের করবে এবং তারপরে আমরা যে ইমেল পাঠাতে চাই সেইসাথে এর প্রাপকদের জন্য আমরা এই ডেটা ব্যবহার করব। আমাদের ফাংশন তখন ইমেল ডেটা সহ SES আহ্বান করতে AWS SDK ব্যবহার করবে৷
  4. একবার SES sendMail পায় অনুরোধ, এটি ইমেল ডেটাকে একটি প্রকৃত পাঠ্য ইমেলে পরিণত করে এবং এটি AWS-এর নিজস্ব মেল সার্ভারের মাধ্যমে প্রাপকের কাছে পাঠায়৷

একবার ইমেল পাঠানো হলে, আমাদের ব্রাউজার স্ট্যাটাস কোড 200 এবং একটি সফল বার্তা সহ একটি প্রতিক্রিয়া পাবে। AWS ক্লাউডের কোনো ধাপ ব্যর্থ হলে, প্রতিক্রিয়াটির একটি 500 স্ট্যাটাস কোড থাকবে।

ধাপ 1:কিভাবে SES সেট আপ করবেন

আমরা আসলে এই ধাপগুলির প্রতিটিকে বিপরীত ক্রমে সেট আপ করতে যাচ্ছি, SES দিয়ে শুরু, যা আরও সহজ হতে চলেছে৷

প্রথমে আপনার AWS কনসোলে, SES পরিষেবাতে যান —> তারপর পাশের মেনুতে ইমেল ঠিকানাগুলিতে ক্লিক করুন —> তারপর "একটি নতুন ইমেল ঠিকানা যাচাই করুন" বোতামে ক্লিক করুন৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

যে কথোপকথনটি খোলে, সেই ইমেল ঠিকানাটি লিখুন যা আপনি SES পরিষেবাটিকে প্রেরক হিসাবে রাখতে চান৷ যখন এটি ইমেল পাঠায়।

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

এটি যাচাই করতে ক্লিক করার জন্য একটি লিঙ্ক সহ আপনার দেওয়া ইমেল ঠিকানায় একটি ইমেল পাঠাবে। এইভাবে AWS জানে যে ইমেলের মালিক তাদের ইমেল ঠিকানাটি প্রেরকের ঠিকানা হিসাবে ব্যবহার করতে সম্মত হন৷

আপনি ইমেলটি যাচাই না করা পর্যন্ত, এসইএস ইমেল ড্যাশবোর্ড যাচাইকরণের স্থিতি মুলতুবি রাখবে।

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

একবার ইমেলের মালিক AWS থেকে প্রাপ্ত ইমেলটি খোলে এবং এটিতে যাচাইকরণ লিঙ্কে ক্লিক করলে, যাচাইকরণের স্থিতিটি যাচাইকৃত হওয়া উচিত (পরিবর্তনটি দেখতে পৃষ্ঠাটি রিফ্রেশ করুন)।

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

এবং যে সব আপনি SES জন্য করতে হবে. আপনি ঐচ্ছিকভাবে তালিকায় আপনার যাচাইকৃত ইমেল নির্বাচন করে এবং "একটি পরীক্ষা ইমেল পাঠান" বোতামে ক্লিক করে পরিষেবাটি পরীক্ষা করতে পারেন৷ এটি আপনাকে প্রাপকের ইমেল ঠিকানা, একটি বিষয় এবং একটি বার্তা দিতে এবং এটি পাঠাতে দেয়৷

প্রেরিত ইমেলটি AWS সার্ভার দ্বারা স্বাক্ষরিত হতে চলেছে এবং আপনার যাচাইকৃত ঠিকানাটি প্রেরক হওয়া উচিত। এটি এইরকম হওয়া উচিত:

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

ধাপ 2:কিভাবে Lambda সেট আপ করবেন

এখন এটি সবচেয়ে মজার অংশ। আমরা একটি ফাংশন তৈরি করতে যাচ্ছি যা ফর্ম ডেটা গ্রহণ করবে এবং SES কল করবে।

ল্যাম্বডা ফাংশনের সৌন্দর্য হল যে আপনাকে সার্ভারে আপনার ব্যাকএন্ড কোড 24/7 চালানো এবং সেই সার্ভার বজায় রাখার বিষয়ে চিন্তা করতে হবে না। এটি সার্ভারহীন .

কিন্তু এর মানে এই নয় যে কোন সার্ভার জড়িত নেই। AWS হুডের নীচে এটির যত্ন নিতে যাচ্ছে যাতে আপনি শুধুমাত্র কোড লেখার উপর ফোকাস করতে পারেন, সার্ভারগুলি বজায় রাখতে না। অতিরিক্তভাবে, আপনার ফাংশনটি যতবার কল করা হবে এবং এটি কার্যকর করতে যে পরিমাণ সময় লাগে তার জন্য আপনি কেবল বিল পাবেন এবং এটি অবিশ্বাস্যভাবে সস্তা!

একটি IAM ভূমিকা তৈরি করুন এবং এটি কনফিগার করুন

আমরা আমাদের ল্যাম্বডা ফাংশন লেখা শুরু করার আগে, আমাদের একটি IAM ভূমিকা তৈরি করতে হবে এটিকে ফাংশনের সাথে সংযুক্ত করতে এবং SES পরিষেবা চালু করার জন্য এটিকে অনুমতি (এডাব্লুএস-এ নীতি হিসাবে উল্লেখ করা হয়েছে) মঞ্জুর করতে৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

আপনার AWS কনসোল থেকে, IAM পরিষেবাতে যান —> পাশের মেনুতে নীতিগুলিতে ক্লিক করুন —> তারপর "নীতি তৈরি করুন" বোতামে ক্লিক করুন৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

নীতি তৈরির পৃষ্ঠায়, JSON ট্যাবে যান এবং নিম্নলিখিত অনুমতিগুলি পেস্ট করুন, তারপর পরবর্তী ক্লিক করুন৷

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        }
    ]
}

তৃতীয় স্ক্রিনে, নীতির নাম দিন এবং "নীতি তৈরি করুন" বোতামে ক্লিক করুন৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

এখন আমরা একটি IAM ভূমিকা তৈরি করি যা ল্যাম্বডার সাথে সংযুক্ত থাকবে এবং এটিকে আমরা এইমাত্র তৈরি করা অনুমতি নীতির সাথে লিঙ্ক করব৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

আইএএম সাইড মেনু থেকে, ভূমিকাতে ক্লিক করুন তারপর "ভূমিকা তৈরি করুন" বোতামে ক্লিক করুন৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

ভূমিকা তৈরির স্ক্রিনে, নিশ্চিত করুন যে বেছে নেওয়া টাইপটি "AWS পরিষেবা" এবং Lambda কেস নির্বাচন করুন তারপর "Next:Permissions" বোতামে ক্লিক করুন৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

পরবর্তী স্ক্রিনে, আমরা আগে যে নীতিটি তৈরি করেছি সেটির নাম দিয়ে অনুসন্ধান করুন এবং এটি নির্বাচন করুন, তারপর পরবর্তী ক্লিক করুন৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

পর্যালোচনা স্ক্রিনে, ভূমিকাটিকে এমন একটি নাম দিন যা আপনি মনে রাখতে পারেন তারপর "ভূমিকা তৈরি করুন" এ ক্লিক করুন৷

এখন আমরা একটি নতুন ল্যাম্বডা ফাংশন তৈরি করতে পারি। ল্যাম্বডা সার্ভিস ড্যাশবোর্ডে যান এবং "ফাংশন তৈরি করুন" বোতামে ক্লিক করুন।

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

ফাংশন তৈরির স্ক্রিনে, আপনার ফাংশনের নাম দিন, "স্ক্র্যাচ থেকে লেখক" বিকল্পটি নির্বাচন করুন এবং রানটাইম হিসাবে Node.js নির্বাচন করুন।

"ডিফল্ট এক্সিকিউশন রোল পরিবর্তন করুন" এর অধীনে "একটি বিদ্যমান ভূমিকা ব্যবহার করুন" বিকল্পটি বেছে নিন তারপর "বিদ্যমান ভূমিকা" ড্রপ ডাউন থেকে আগের ধাপে আপনি যে ভূমিকাটি তৈরি করেছেন তার নাম চয়ন করুন।

অবশেষে, ফাংশন তৈরি করতে "ফাংশন তৈরি করুন" বোতামে ক্লিক করুন৷

কোডটি লিখুন এবং পরীক্ষা করুন

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

এডিটরে, index.js ফাইলটি খুলুন (এটি সেই ফাইল যা কার্যকর করা হবে যখন আপনার ল্যাম্বডা কল করা হবে), এবং এর বিষয়বস্তুকে নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:

const aws = require("aws-sdk");
const ses = new aws.SES({ region: "us-east-1" });
exports.handler = async function (event) {
  console.log('EVENT: ', event)
  const params = {
    Destination: {
      ToAddresses: ["your@email.com"],
    },
    Message: {
      Body: {
        Text: { 
            Data: `Hello from Lambda!` 
        },
      },
      Subject: { Data: `Message from AWS Lambda` },
    },
    Source: "your@email.com",
  };

  return ses.sendEmail(params).promise()
};

লক্ষ্য করুন যে লাইন 2 এ আমরা AWS SDK ব্যবহার করছি এবং একটি SES উদাহরণ তৈরি করছি। যে কারণে আমি us-east-1 বেছে নিয়েছি অঞ্চল হিসাবে কারণ এটাই যেখানে আমি নিবন্ধিত ও আমার ইমেল যাচাই করেছি . ইমেলটি প্রতিস্থাপন করতে ভুলবেন না এবং AWS অঞ্চল ব্যবহার করুন যেখানে আপনি আপনার ইমেল নিবন্ধন করেছেন৷

এখন এই ফাংশনটি পরীক্ষা করতে, "ডিপ্লয়" বোতামে ক্লিক করুন। তারপর টেস্ট বোতামে ক্লিক করুন —> টেস্ট ইভেন্ট কনফিগার করুন যা একটি টেস্ট কনফিগারেশন ডায়ালগ খুলবে যেখানে আপনি একটি নতুন পরীক্ষা ইভেন্ট তৈরি করতে পারেন।

পরীক্ষার ইভেন্ট বডি এডিটরে, নিম্নলিখিত JSON লিখুন যা আমাদের ব্রাউজার অনুরোধ থেকে শেষ পর্যন্ত কী আসবে তা অনুকরণ করে। তারপর তৈরি করুন ক্লিক করুন৷

{
  "body": {
        "senderName": "Namo",
        "senderEmail": "namo@trains.com",
        "message": "I love trains!"
    }
}

এখন টেস্ট বোতামে ক্লিক করলে আমরা এইমাত্র তৈরি করা পরীক্ষাটি চালাবে। ফাংশনটি চালানো থেকে তৈরি করা লগগুলি আমাদের দেখানোর জন্য এটি সম্পাদকে একটি নতুন ট্যাব খুলতে হবে, যা দেখতে এইরকম হওয়া উচিত:

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

লক্ষ্য করুন যে ইভেন্ট অবজেক্টটি আমরা লগ আউট করেছি তা এখানে ফাংশন লগের অধীনে দেখায় যা আমরা পরীক্ষার ইভেন্টে ব্যবহৃত বডি ডেটা সহ।

এই পরীক্ষাটিও আমার ইনবক্সে একটি ইমেল পাঠানো উচিত ছিল – দেখা যাক তা হয়েছে কিনা৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

হ্যাঁ, ঠিক যেমনটি প্রত্যাশিত। এবং এটি পরীক্ষা চালানোর প্রায় সাথে সাথেই ঘটেছিল৷

এখন পরীক্ষা ডেটা থেকে আরও অর্থপূর্ণ বার্তা পেতে আমাদের ফাংশন কোড পরিবর্তন করা যাক।

const aws = require("aws-sdk");
const ses = new aws.SES({ region: "us-east-1" });
exports.handler = async function (event) {
  console.log('EVENT: ', event)
	// Extract the properties from the event body
  const { senderEmail, senderName, message } = JSON.parse(event.body)
  const params = {
    Destination: {
      ToAddresses: ["the.benhawy@gmail.com"],
    },
		// Interpolate the data in the strings to send
    Message: {
      Body: {
        Text: { 
            Data: `You just got a message from ${senderName} - ${senderEmail}:
            ${message}` 
        },
      },
      Subject: { Data: `Message from ${senderName}` },
    },
    Source: "the.benhawy@gmail.com",
  };

  return ses.sendEmail(params).promise();
};

এটা মনে রাখা গুরুত্বপূর্ণ যে যখন API গেটওয়ে আমাদের ফাংশনকে কল করে তখন এটি ইভেন্ট বডিতে একটি স্ট্রিং পাস করবে। এই কারণেই আমি JSON.parse ব্যবহার করি event.body-এ, এটিকে JSON-এ পরিণত করতে এবং আমাদের প্রেরকের ইমেল, নাম এবং বার্তা বের করতে। তারপর আমি স্ট্রিং ইন্টারপোলেশন ব্যবহার করে ইমেলের বডি টেক্সট এবং সাবজেক্টে সেই ভেরিয়েবলগুলি ব্যবহার করি।

আপনি যদি এটি পরীক্ষা করার চেষ্টা করেন, কোডটি একটি ত্রুটি ফিরিয়ে দেবে। এর কারণ হল পরীক্ষাটি একটি JSON অবজেক্টকে event.body-তে পাস করছে এবং আমরা JSON-এ JSON.parse ব্যবহার করছি, যা জাভাস্ক্রিপ্টে একটি ত্রুটি ঘটায়।

দুঃখের বিষয়, পরীক্ষার সম্পাদক আমাদের ইভেন্টে স্ট্রিংগুলি পাস করার অনুমতি দেয় না, তাই আমাদের এটি পরে অন্য কোথাও থেকে পরীক্ষা করতে হবে৷

ধাপ 3:কিভাবে API গেটওয়ে সেট আপ করবেন

এর পরে, আমরা যে শেষ AWS পরিষেবাটি ব্যবহার করতে যাচ্ছি তা হল API গেটওয়ে, যা আমাদের ব্রাউজারকে আমাদের তৈরি ল্যাম্বডা ফাংশনে HTTP অনুরোধ পাঠাতে সক্ষম করবে৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

আপনার ল্যাম্বডা ফাংশন পৃষ্ঠাটি না রেখে, "ফাংশন ওভারভিউ" বিভাগটি প্রসারিত করুন এবং "ট্রিগার যোগ করুন" এ ক্লিক করুন।

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

এরপরে, ড্রপডাউন থেকে API গেটওয়ে, API প্রকার হিসাবে HTTP API, নিরাপত্তা ব্যবস্থা হিসাবে "খোলা" নির্বাচন করুন এবং CORS চেকবক্স বিকল্পটি চেক করুন। তারপর "যোগ করুন" ক্লিক করুন৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

আপনাকে আপনার ফাংশনের "কনফিগারেশন" ট্যাবে পুনঃনির্দেশিত করা উচিত, আপনি এইমাত্র তৈরি করা নতুন API গেটওয়ে ট্রিগারটি দেখান। সেখান থেকে, API এন্ডপয়েন্ট নোট করুন . এটি হল সেই URL যা আমরা আমাদের ব্রাউজার থেকে ফর্ম ডেটা সহ কল ​​করতে যাচ্ছি৷

HTML এ ফিরে যান

আমরা অবশেষে ফর্মটি পরীক্ষা করে দেখতে পারি যে এটি ইমেল পাঠায় কি না৷

ফর্ম জমা দেওয়ার সময় অনুরোধ পাঠানোর জন্য আমাদের জাভাস্ক্রিপ্ট পরিবর্তন করা যাক।

const form = document.querySelector("form");
form.addEventListener("submit", (event) => {
  // prevent the form submit from refreshing the page
  event.preventDefault();

  const { name, email, message } = event.target;

	// Use your API endpoint URL you copied from the previous step
  const endpoint =
    "<https://5ntvcwwmec.execute-api.us-east-1.amazonaws.com/default/sendContactEmail>";
  // We use JSON.stringify here so the data can be sent as a string via HTTP
	const body = JSON.stringify({
    senderName: name.value,
    senderEmail: email.value,
    message: message.value
  });
  const requestOptions = {
    method: "POST",
    body
  };

  fetch(endpoint, requestOptions)
    .then((response) => {
      if (!response.ok) throw new Error("Error in fetch");
      return response.json();
    })
    .then((response) => {
      document.getElementById("result-text").innerText =
        "Email sent successfully!";
    })
    .catch((error) => {
      document.getElementById("result-text").innerText =
        "An unkown error occured.";
    });
});

এখন, সত্যের মুহূর্ত:ফর্মটি পূরণ করুন এবং জমা দিন ক্লিক করুন। আপনি যদি সফলতার বার্তাটি দেখেন, তার মানে ইমেলটি পাঠানো হয়েছে৷

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

যেহেতু মেসেজটি পাঠানো হয়েছে সেটির মালিক আমি, তাই আমি আমার ইনবক্সে একবার দেখে নিই যে আমি ফর্মে ব্যবহার করা বিশদ বিবরণ সহ নিজের কাছ থেকে একটি ইমেল পেয়েছি!

AWS SES, Lambda, এবং API গেটওয়ে ব্যবহার করে আপনার সাইট থেকে ইমেলগুলি কীভাবে পাবেন আমাদের সাথে যোগাযোগ করুন

আপনি যদি অনুসরণ করে থাকেন তবে আপনার কাছে এখন একটি কার্যকরী "আমাদের সাথে যোগাযোগ করুন" ফর্ম রয়েছে যা আপনি যেকোনো ওয়েবসাইটে প্লাগ করতে পারেন৷ এবং আপনি শুধুমাত্র যখন এটি বাস্তবে ব্যবহার করা হবে জন্য বিল পেতে হবে.

আমি আপনার সম্পর্কে জানি না, তবে আমি মনে করি এটি বেশ দুর্দান্ত এবং প্রায় যাদুকর! এবং এটি আপনার কর্মপ্রবাহে ক্লাউড কম্পিউটিং/পরিষেবাগুলি ব্যবহার করার একটি চমৎকার, ব্যবহারিক উপায়।

অবশ্যই আপনি ফ্রন্টএন্ডে একটি ফ্রেমওয়ার্ক যেমন রিঅ্যাক্ট বা ভিউ বা পাইথন বা গো-এর মতো ল্যাম্বডার জন্য একটি ভিন্ন প্রোগ্রামিং ভাষা ব্যবহার করার ক্ষেত্রে এই প্রবাহটি কাস্টমাইজ করতে পারেন।

তুমি যাওয়ার আগে...

এই পর্যন্ত পড়ার জন্য আপনাকে ধন্যবাদ! আমি জাভাস্ক্রিপ্ট, ক্লাউড ডেভেলপমেন্ট এবং একজন স্ব-শিক্ষিত বিকাশকারী হিসাবে আমার ব্যক্তিগত শিক্ষাগত ও পেশাগত অভিজ্ঞতা সম্পর্কে পোস্ট লিখি। তাই নির্দ্বিধায় আমাকে টুইটারে অনুসরণ করুন @adham_benhawy যেখানে আমি তাদের সম্পর্কেও টুইট করি!

সম্পদ

  • https://aws.amazon.com/premiumsupport/knowledge-center/lambda-send-email-ses/
  • https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html
  • https://docs.aws.amazon.com/lambda/latest/dg/services-apigateway.html?icmpid=docs_lambda_console

  1. কিভাবে আপনার জিমেইল অ্যাকাউন্ট থেকে আপনার Hotmail ইমেলগুলি অ্যাক্সেস করবেন?

  2. আপনার Node.js সার্ভার থেকে ইমেল পাঠাতে Nodemailer কিভাবে ব্যবহার করবেন

  3. কিভাবে আপনার Vue.js অ্যাপ্লিকেশন থেকে EmailJS এর ​​মাধ্যমে ইমেল পাঠাবেন

  4. আপনার ম্যাক থেকে এনক্রিপ্ট করা ইমেলগুলি কীভাবে পাঠাবেন