প্রতিক্রিয়াতে সংযুক্তি সহ ইমেল পাঠানোর নির্দেশিকা

React.js and Next.js

ফাইল সংযুক্তি সহ একটি যোগাযোগ ফর্ম তৈরি করা

প্রতিক্রিয়ায় একটি যোগাযোগ ফর্ম তৈরি করা যা ব্যবহারকারীদের ফাইল সংযুক্তি সহ ইমেল পাঠাতে দেয় তা চ্যালেঞ্জিং হতে পারে, বিশেষত যখন পুনরায় পাঠানোর মতো তৃতীয় পক্ষের পরিষেবাগুলিকে একীভূত করা হয়৷ ত্রুটি এড়াতে ফাইল আপলোডগুলির সঠিক সেটআপ এবং পরিচালনা নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ৷

এই নির্দেশিকাটি আপনাকে প্রতিক্রিয়া এবং পুনরায় পাঠান ব্যবহার করে একটি যোগাযোগ ফর্ম সেট আপ করার মাধ্যমে নিয়ে যাবে, ফাইল সংযুক্তিগুলি পরিচালনা করা এবং সার্ভার ত্রুটিগুলি ডিবাগ করার মতো সাধারণ সমস্যাগুলিকে মোকাবেলা করবে৷ এই পদক্ষেপগুলি অনুসরণ করে, আপনি নির্বিঘ্নে সংযুক্তি সহ ইমেল পাঠাতে সক্ষম হবেন৷

আদেশ বর্ণনা
Resend.emails.send() থেকে, থেকে, বিষয়, এইচটিএমএল এবং সংযুক্তি সহ নির্দিষ্ট প্যারামিটার সহ একটি ইমেল পাঠায়।
setHeader() নির্দিষ্ট পরামিতি সহ প্রতিক্রিয়া শিরোনাম সেট করে। শুধুমাত্র 'POST' পদ্ধতির অনুমতি দিতে এখানে ব্যবহার করা হয়েছে।
FileReader() একটি ফাইলের বিষয়বস্তু অ্যাসিঙ্ক্রোনাসভাবে পড়ে। ফাইলটিকে একটি base64 স্ট্রিং-এ রূপান্তর করতে এখানে ব্যবহার করা হয়েছে।
readAsDataURL() বেস64 এনকোডেড স্ট্রিং হিসাবে ফাইলটি পড়ার জন্য ফাইলরিডারের পদ্ধতি।
onload() ফাইল রিডারের জন্য ইভেন্ট হ্যান্ডলার যা ফাইল রিডিং অপারেশন সম্পূর্ণ হলে ট্রিগার হয়।
split() একটি স্ট্রিংকে সাবস্ট্রিংগুলির একটি অ্যারেতে বিভক্ত করে। ডেটা URL উপসর্গ থেকে base64 বিষয়বস্তু আলাদা করতে এখানে ব্যবহার করা হয়েছে।
JSON.stringify() একটি জাভাস্ক্রিপ্ট বস্তু বা মানকে JSON স্ট্রিংয়ে রূপান্তর করে।

প্রতিক্রিয়া যোগাযোগ ফর্মে ইমেল সংযুক্তি বাস্তবায়ন করা

ব্যাকএন্ড স্ক্রিপ্টটি সংযুক্তি সহ ইমেল পাঠাতে Next.js API রুট এবং পুনরায় পাঠান লাইব্রেরি ব্যবহার করে তৈরি করা হয়েছে। মূল ফাংশন, , ইমেইল পাঠাতে ব্যবহৃত হয়। এই ফাংশন যেমন পরামিতি লাগে , , subject, , এবং . দ্য প্যারামিটার ফাইলের বিষয়বস্তু এবং ফাইলের নাম অন্তর্ভুক্ত করে। স্ক্রিপ্টটি প্রয়োজনীয় মডিউল আমদানির মাধ্যমে শুরু হয় এবং পরিবেশের ভেরিয়েবলে সংরক্ষিত একটি API কী ব্যবহার করে পুনরায় প্রেরণের উদাহরণ শুরু করে। ফাংশন শুধুমাত্র পরিচালনা করে POST অনুরোধ, ইমেল পাঠানো এবং সফল হলে ইমেল আইডি ফেরত দেওয়া। যদি পদ্ধতি না হয় , এটি শুধুমাত্র অনুমতি দেওয়ার জন্য প্রতিক্রিয়া শিরোনাম সেট করে অনুরোধ করে এবং একটি 405 স্ট্যাটাস ফেরত দেয়।

ফ্রন্টএন্ডে, যোগাযোগের ফর্মটি পরিচালনা করার জন্য একটি প্রতিক্রিয়া উপাদান তৈরি করা হয়। কম্পোনেন্টটি রিঅ্যাক্ট ব্যবহার করে ফাইলের বিষয়বস্তু এবং ফাইলের নামের অবস্থা বজায় রাখে হুক যখন একটি ফাইল নির্বাচন করা হয়, a অবজেক্ট একটি বেস64 এনকোডেড স্ট্রিং হিসাবে ফাইলের বিষয়বস্তু পড়ে। ফাইলের বিষয়বস্তু এবং নাম উপাদানের অবস্থায় সংরক্ষণ করা হয়। ফর্ম জমা দেওয়ার সময়, একটি async ফাংশন একটি পাঠায় বেস64 এনকোড করা ফাইলের বিষয়বস্তু এবং ফাইলের নাম সহ ব্যাকএন্ড API-কে অনুরোধ করুন। অনুরোধ শিরোনাম সেট করা হয়েছে application/json এবং অনুরোধের বডিতে ফাইলের ডেটা থাকে। ইমেল সফলভাবে পাঠানো হলে, একটি সতর্কতা দেখানো হয়; অন্যথায়, একটি ত্রুটি সতর্কতা প্রদর্শিত হয়।

আবার পাঠান ব্যবহার করে সংযুক্তি সহ ইমেল পাঠাতে ব্যাকএন্ড স্ক্রিপ্ট

ব্যাকএন্ড স্ক্রিপ্ট Next.js-এ রিসেন্ড সহ

import type { NextApiRequest, NextApiResponse } from 'next';
import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

const send = async (req: NextApiRequest, res: NextApiResponse) => {
  const { method } = req;
  const { content, filename } = req.body;

  switch (method) {
    case 'POST': {
      try {
        const { data } = await resend.emails.send({
          from: 'onboarding@resend.dev',
          to: ['XXXXXXXXXX@gmail.com'],
          subject: 'Email with attachment',
          html: '<p>See attachment</p>',
          attachments: [{
            content,
            filename,
          }],
        });
        return res.status(200).send({ data: data?.id });
      } catch (error) {
        return res.status(500).json({ error: 'Internal Server Error' });
      }
    }
    default: {
      res.setHeader('Allow', ['POST']);
      res.status(405).end(`Method ${method} Not Allowed`);
    }
  }
};

export default send;

ফাইল সংযুক্তি সহ যোগাযোগ ফর্মের জন্য ফ্রন্টএন্ড উপাদান

React.js এ ফ্রন্টএন্ড কম্পোনেন্ট

import * as React from 'react';

const ContactForm: React.FC = () => {
  const [content, setContent] = React.useState<string | null>(null);
  const [filename, setFilename] = React.useState('');

  const onSubmit = async (e: React.FormEvent) => {
    e.preventDefault();
    if (content === null) {
      alert('Please select a file to upload');
      return;
    }
    const base64Content = content.split(',')[1];
    try {
      await fetch('/api/send', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ content: base64Content, filename }),
      });
      alert('Request sent');
    } catch (e) {
      alert('Something went wrong');
    }
  };

  const onAddFileAction = (e: React.ChangeEvent<HTMLInputElement>) => {
    const reader = new FileReader();
    const files = e.target.files;
    if (files && files.length > 0) {
      reader.onload = (r) => {
        if (r.target?.result) {
          setContent(r.target.result.toString());
          setFilename(files[0].name);
        }
      };
      reader.readAsDataURL(files[0]);
    }
  };

  return (
    <form onSubmit={onSubmit} style={{ display: 'flex', flexDirection: 'column', gap: '20px', width: 200 }}> 
      <input type="file" name="file" onChange={onAddFileAction} accept="image/*" /> 
      <input type="submit" value="Send Email" /> 
    </form> 
  );
};

export default ContactForm;

প্রতিক্রিয়া ফর্মে ফাইল আপলোড পরিচালনা করা

প্রতিক্রিয়া ফর্মে ফাইল আপলোডগুলি নিয়ে কাজ করার সময়, ফাইল রিডিং এবং ডেটা এনকোডিংয়ের সঠিক পরিচালনা নিশ্চিত করা অপরিহার্য। ব্যবহার করে JavaScript-এ API আমাদেরকে ফাইলের বিষয়বস্তু অ্যাসিঙ্ক্রোনাসভাবে পড়তে দেয়, সেগুলোকে একটি base64 এনকোডেড স্ট্রিং-এ রূপান্তর করে, যা HTTP-এর মাধ্যমে ফাইল ডেটা পাঠানোর জন্য প্রয়োজনীয়। এপিআই কল করার সময় এই এনকোড করা স্ট্রিংটি রিকোয়েস্ট বডির অংশ হিসেবে সহজেই প্রেরণ করা যেতে পারে।

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

  1. ব্যবহার করার উদ্দেশ্য কি ফাইল আপলোড?
  2. দ্য এপিআই ফাইলের বিষয়বস্তু অ্যাসিঙ্ক্রোনাসভাবে পড়তে এবং HTTP অনুরোধে ট্রান্সমিশনের জন্য বেস64 স্ট্রিং হিসাবে এনকোড করতে ব্যবহৃত হয়।
  3. আমি কিভাবে নিশ্চিত করতে পারি যে আমার ফাইল আপলোড নিরাপদ?
  4. নিশ্চিত করুন যে শুধুমাত্র নির্দিষ্ট ফাইল প্রকারগুলি ব্যবহার করে গৃহীত হয় ইনপুট ক্ষেত্রের বৈশিষ্ট্য। অতিরিক্তভাবে, সার্ভার-সাইডে ফাইল সামগ্রী যাচাই করুন।
  5. এর তাৎপর্য কি ঘটনা ?
  6. দ্য ফাইল রিডিং অপারেশন সম্পূর্ণ হলে ইভেন্ট ট্রিগার হয়, যা আপনাকে ফাইলের বিষয়বস্তু অ্যাক্সেস করতে এবং পরবর্তী ক্রিয়া সম্পাদন করতে দেয়।
  7. আমি কীভাবে প্রতিক্রিয়াতে বড় ফাইলগুলি পরিচালনা করতে পারি?
  8. বড় ফাইলগুলির জন্য, ব্রাউজার মেমরির সীমাবদ্ধতা এড়াতে এবং ব্যবহারকারীকে অগ্রগতি প্রতিক্রিয়া প্রদান করতে খণ্ডিত ফাইল আপলোডগুলি প্রয়োগ করার কথা বিবেচনা করুন৷
  9. আমি কেন ব্যবহার করতে হবে ফাইল ডেটা পাঠানোর সময়?
  10. ফাইল ডেটা ধারণকারী জাভাস্ক্রিপ্ট অবজেক্টকে একটি JSON স্ট্রিং-এ রূপান্তর করে, যা API কলগুলিতে অনুরোধের বডির জন্য প্রয়োজনীয় বিন্যাস।
  11. ইমেল পাঠানোর সময় 500 (অভ্যন্তরীণ সার্ভার ত্রুটি) কী নির্দেশ করে?
  12. একটি 500 ত্রুটি সাধারণত সার্ভার-সাইড সমস্যা নির্দেশ করে, যেমন ভুল API এন্ডপয়েন্ট কনফিগারেশন বা ইমেল পাঠানো পরিষেবার মধ্যে সমস্যা।
  13. আমি কিভাবে আমার API কলগুলিতে একটি 500 ত্রুটি ডিবাগ করতে পারি?
  14. বিশদ ত্রুটি বার্তাগুলির জন্য সার্ভার লগগুলি পরীক্ষা করুন এবং নিশ্চিত করুন যে API এন্ডপয়েন্ট এবং অনুরোধ পেলোড সঠিকভাবে কনফিগার করা হয়েছে৷
  15. কি ভূমিকা আছে ব্যাকএন্ড স্ক্রিপ্টে পদ্ধতি খেলা?
  16. দ্য HTTP প্রতিক্রিয়া শিরোনাম সেট করতে পদ্ধতি ব্যবহার করা হয়, অনুমোদিত HTTP পদ্ধতিগুলি নির্দিষ্ট করে (যেমন, 'POST')।
  17. ফাইল আপলোড করার সময় আমি কিভাবে ব্যবহারকারীর প্রতিক্রিয়া প্রদান করতে পারি?
  18. ব্যবহারকারীদের আপলোড স্থিতি এবং কোনো ত্রুটির সম্মুখীন হওয়ার বিষয়ে অবহিত করতে সতর্কতা বার্তা, অগ্রগতি বার, বা স্থিতি সূচক ব্যবহার করুন।
  19. আমি কি এই সেটআপের সাথে একসাথে একাধিক ফাইল আপলোড করতে পারি?
  20. এই সেটআপ একক ফাইল আপলোড পরিচালনা করে। একাধিক ফাইলের জন্য, আপনাকে ফাইল ডেটার অ্যারেগুলি পরিচালনা করতে এবং API অনুরোধে সেগুলি পাঠাতে কোডটি সংশোধন করতে হবে।

রিসেন্ড ব্যবহার করে রিঅ্যাক্ট কন্টাক্ট ফর্মে ফাইল অ্যাটাচমেন্ট প্রয়োগ করার ক্ষেত্রে ফ্রন্ট-এন্ড এবং ব্যাক-এন্ড কনফিগারেশন উভয়ই জড়িত। ফ্রন্ট-এন্ড বেস64-এ ফাইল নির্বাচন, পড়া এবং এনকোডিং পরিচালনা করে, যখন ব্যাক-এন্ড রিসেন্ডের API ব্যবহার করে সংযুক্তি সহ ইমেল পাঠানো পরিচালনা করে। নির্বিঘ্ন ব্যবহারকারীর অভিজ্ঞতার জন্য সঠিক ত্রুটি পরিচালনা এবং ব্যবহারকারীর প্রতিক্রিয়া প্রক্রিয়া অত্যন্ত গুরুত্বপূর্ণ। সর্বোত্তম অনুশীলনগুলি অনুসরণ করা এবং সমস্ত কনফিগারেশন সঠিক কিনা তা নিশ্চিত করা সার্ভারের ত্রুটির মতো সাধারণ সমস্যাগুলি এড়াতে সহায়তা করতে পারে।