ਪਾਈਥਨ ਈਮੇਲ ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ SMTP ਡੇਟਾ ਗਲਤੀ 550 ਨੂੰ ਹੱਲ ਕਰਨਾ

ਪਾਈਥਨ ਈਮੇਲ ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ SMTP ਡੇਟਾ ਗਲਤੀ 550 ਨੂੰ ਹੱਲ ਕਰਨਾ
Python

ਪਾਈਥਨ ਵਿੱਚ SMTP ਗਲਤੀਆਂ ਨੂੰ ਸਮਝਣਾ

ਪਾਈਥਨ ਰਾਹੀਂ ਈਮੇਲ ਆਟੋਮੇਸ਼ਨ ਡਿਵੈਲਪਰਾਂ ਲਈ ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸਾਧਨ ਹੈ, ਜਿਸ ਨਾਲ ਉਹਨਾਂ ਨੂੰ ਉਹਨਾਂ ਦੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਤੋਂ ਸੂਚਨਾਵਾਂ, ਰਿਪੋਰਟਾਂ ਅਤੇ ਅੱਪਡੇਟ ਸਿੱਧੇ ਭੇਜੇ ਜਾ ਸਕਦੇ ਹਨ। smtplib ਅਤੇ ssl ਵਰਗੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਪਾਈਥਨ ਈਮੇਲ ਸਰਵਰਾਂ ਨਾਲ ਆਸਾਨੀ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰ ਸਕਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਕਈ ਵਾਰ ਇਸ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਸਮੱਸਿਆਵਾਂ ਆਉਂਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ SMTPDataError(550)।

ਇਹ ਖਾਸ ਗਲਤੀ ਆਮ ਤੌਰ 'ਤੇ ਭੇਜਣ ਵਾਲੇ ਦੀਆਂ ਈਮੇਲ ਸੈਟਿੰਗਾਂ ਜਾਂ ਸਰਵਰ ਨੀਤੀਆਂ ਨਾਲ ਸੰਬੰਧਿਤ ਸਮੱਸਿਆ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਪ੍ਰਮਾਣੀਕਰਨ ਮੁੱਦੇ ਜਾਂ ਗਲਤ ਪ੍ਰਾਪਤਕਰਤਾ ਹੈਂਡਲਿੰਗ। ਇਹਨਾਂ ਗਲਤੀਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਅਤੇ ਤੁਹਾਡੀਆਂ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟਾਂ ਦੁਆਰਾ ਭਰੋਸੇਯੋਗ ਈਮੇਲ ਡਿਲੀਵਰੀ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਮੂਲ ਕਾਰਨ ਨੂੰ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ।

ਹੁਕਮ ਵਰਣਨ
smtplib.SMTP_SSL ਸੁਰੱਖਿਅਤ ਈਮੇਲ ਭੇਜਣ ਲਈ SSL ਉੱਤੇ SMTP ਸਰਵਰ ਨਾਲ ਇੱਕ ਕਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ।
server.login() ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਪ੍ਰਦਾਨ ਕੀਤੇ ਈਮੇਲ ਪਤੇ ਅਤੇ ਪਾਸਵਰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਈਮੇਲ ਸਰਵਰ ਵਿੱਚ ਲੌਗ ਇਨ ਕਰੋ।
server.sendmail() ਨਿਰਧਾਰਿਤ ਸੰਦੇਸ਼ ਦੇ ਨਾਲ ਭੇਜਣ ਵਾਲੇ ਦੀ ਈਮੇਲ ਤੋਂ ਪ੍ਰਾਪਤਕਰਤਾ ਦੀ ਈਮੇਲ ਨੂੰ ਇੱਕ ਈਮੇਲ ਭੇਜਦਾ ਹੈ।
os.getenv() ਇੱਕ ਵਾਤਾਵਰਣ ਵੇਰੀਏਬਲ ਦਾ ਮੁੱਲ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਆਮ ਤੌਰ 'ਤੇ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲਸ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਐਕਸੈਸ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
MIMEMultipart() ਈਮੇਲ ਲਈ ਇੱਕ ਮਲਟੀਪਾਰਟ ਕੰਟੇਨਰ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਸਰੀਰ ਦੇ ਕਈ ਅੰਗਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਅਟੈਚਮੈਂਟ ਅਤੇ ਟੈਕਸਟ।
MIMEText ਮਲਟੀਪਾਰਟ ਈਮੇਲ ਵਿੱਚ ਇੱਕ ਟੈਕਸਟ ਭਾਗ ਜੋੜਦਾ ਹੈ, ਸਧਾਰਨ ਅਤੇ HTML ਟੈਕਸਟ ਫਾਰਮੈਟਾਂ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।

ਪਾਈਥਨ ਈਮੇਲ ਸਕ੍ਰਿਪਟ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀ ਵਿਆਖਿਆ ਕਰਨਾ

ਪਾਈਥਨ ਸਕ੍ਰਿਪਟਾਂ ਪ੍ਰਦਾਨ ਕੀਤੀਆਂ ਗਈਆਂ ਕਈ ਪਾਈਥਨ ਲਾਇਬ੍ਰੇਰੀਆਂ ਅਤੇ ਵਾਤਾਵਰਣ ਸੰਰਚਨਾਵਾਂ ਦੀ ਵਰਤੋਂ ਦੁਆਰਾ ਈਮੇਲ ਭੇਜਣ ਨੂੰ ਸਵੈਚਾਲਤ ਕਰਨ ਦਾ ਇੱਕ ਸਿੱਧਾ ਤਰੀਕਾ ਦਰਸਾਉਂਦੀਆਂ ਹਨ। ਪਹਿਲੀ ਜ਼ਰੂਰੀ ਹੁਕਮ ਹੈ smtplib.SMTP_SSL, ਜੋ SSL ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ SMTP ਸਰਵਰ ਨਾਲ ਇੱਕ ਸੁਰੱਖਿਅਤ ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਤੁਹਾਡੀ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ ਅਤੇ ਈਮੇਲ ਸਰਵਰ ਵਿਚਕਾਰ ਸਾਰਾ ਸੰਚਾਰ ਇਨਕ੍ਰਿਪਟਡ ਅਤੇ ਸੁਰੱਖਿਅਤ ਹੈ। ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਸੰਵੇਦਨਸ਼ੀਲ ਜਾਣਕਾਰੀ ਜਿਵੇਂ ਕਿ ਲੌਗਇਨ ਪ੍ਰਮਾਣ ਪੱਤਰ ਅਤੇ ਸੰਦੇਸ਼ ਸਮੱਗਰੀ ਨੂੰ ਰੋਕੇ ਜਾਣ ਤੋਂ ਬਚਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ।

ਸਕ੍ਰਿਪਟ ਦੇ ਦੂਜੇ ਮਹੱਤਵਪੂਰਨ ਹਿੱਸੇ ਵਿੱਚ ਈਮੇਲ ਸਰਵਰ ਦੀ ਵਰਤੋਂ ਨਾਲ ਪ੍ਰਮਾਣਿਕਤਾ ਸ਼ਾਮਲ ਹੈ server.login(), ਜਿੱਥੇ ਸਕ੍ਰਿਪਟ ਈਮੇਲ ਪਤੇ ਅਤੇ ਪਾਸਵਰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲੌਗ ਇਨ ਕਰਦੀ ਹੈ, ਜਿਸ ਰਾਹੀਂ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ os.getenv(). ਇਹ ਫੰਕਸ਼ਨ ਵਾਤਾਵਰਣ ਵੇਰੀਏਬਲ ਤੋਂ ਸੰਵੇਦਨਸ਼ੀਲ ਡੇਟਾ ਲਿਆਉਂਦਾ ਹੈ, ਜੋ ਕਿ ਸਰੋਤ ਕੋਡ ਵਿੱਚ ਹਾਰਡਕੋਡਿੰਗ ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ ਤੋਂ ਬਚਣ ਲਈ ਇੱਕ ਸੁਰੱਖਿਅਤ ਅਭਿਆਸ ਹੈ। ਸਫਲ ਪ੍ਰਮਾਣਿਕਤਾ ਦੇ ਬਾਅਦ, server.sendmail() ਖਾਸ ਪ੍ਰਾਪਤਕਰਤਾ ਨੂੰ ਈਮੇਲ ਭੇਜਦਾ ਹੈ। ਇਹ ਵਿਧੀ ਈਮੇਲ ਦੇ ਅਸਲ ਪ੍ਰਸਾਰਣ ਨੂੰ ਹੈਂਡਲ ਕਰਦੀ ਹੈ, ਭੇਜਣ ਵਾਲੇ, ਪ੍ਰਾਪਤ ਕਰਨ ਵਾਲੇ ਅਤੇ ਭੇਜੇ ਜਾਣ ਵਾਲੇ ਸੰਦੇਸ਼ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਦੀ ਹੈ।

ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ ਨਾਲ SMTP 550 ਗਲਤੀ ਨੂੰ ਹੱਲ ਕਰਨਾ

ਈਮੇਲ ਆਟੋਮੇਸ਼ਨ ਲਈ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟਿੰਗ

import os
import smtplib
import ssl
def send_mail(message):
    smtp_server = "smtp.gmail.com"
    port = 465
    sender_email = "your_email@gmail.com"
    password = os.getenv("EMAIL_PASS")
    receiver_email = "receiver_email@gmail.com"
    context = ssl.create_default_context()
    with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
        server.login(sender_email, password)
        server.sendmail(sender_email, receiver_email, message)
        print("Email sent successfully!")

ਪਾਈਥਨ ਵਿੱਚ ਡੀਬੱਗਿੰਗ ਈਮੇਲ ਭੇਜਣ ਵਿੱਚ ਅਸਫਲਤਾਵਾਂ

ਸਰਵਰ ਸੰਚਾਰ ਲਈ ਉੱਨਤ ਪਾਈਥਨ ਤਕਨੀਕਾਂ

import os
import smtplib
import ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_secure_mail(body_content):
    smtp_server = "smtp.gmail.com"
    port = 465
    sender_email = "your_email@gmail.com"
    password = os.getenv("EMAIL_PASS")
    receiver_email = "receiver_email@gmail.com"
    message = MIMEMultipart()
    message["From"] = sender_email
    message["To"] = receiver_email
    message["Subject"] = "Secure Email Test"
    message.attach(MIMEText(body_content, "plain"))
    context = ssl.create_default_context()
    with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
        server.login(sender_email, password)
        server.send_message(message)
        print("Secure email sent successfully!")

ਪਾਈਥਨ ਈਮੇਲ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ SMTP 550 ਗਲਤੀਆਂ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਨਾ

smtpDataError(550) ਆਮ ਤੌਰ 'ਤੇ ਭੇਜਣ ਵਾਲੇ ਦੇ ਅਧਿਕਾਰਤ ਨਾ ਹੋਣ ਜਾਂ ਪ੍ਰਾਪਤਕਰਤਾ ਦਾ ਪਤਾ ਮੌਜੂਦ ਨਾ ਹੋਣ ਕਾਰਨ ਪ੍ਰਾਪਤਕਰਤਾ ਦੇ ਮੇਲ ਸਰਵਰ ਤੋਂ ਅਸਵੀਕਾਰ ਹੋਣ ਦਾ ਸੰਕੇਤ ਦਿੰਦਾ ਹੈ। ਇਸ ਗਲਤੀ ਨੂੰ ਅਕਸਰ ਇਹ ਯਕੀਨੀ ਬਣਾ ਕੇ ਘੱਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿ ਈਮੇਲ ਸੈਟਿੰਗਾਂ ਸਹੀ ਢੰਗ ਨਾਲ ਕੌਂਫਿਗਰ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ ਅਤੇ ਭੇਜਣ ਵਾਲੇ ਦਾ ਈਮੇਲ ਖਾਤਾ SMTP ਸਰਵਰ ਨਾਲ ਸਹੀ ਤਰ੍ਹਾਂ ਪ੍ਰਮਾਣਿਤ ਹੈ। ਇਹ ਪੁਸ਼ਟੀ ਕਰਨਾ ਵੀ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਭੇਜਣ ਵਾਲੇ ਦਾ ਈਮੇਲ ਪਤਾ ਸਹੀ ਢੰਗ ਨਾਲ ਫਾਰਮੈਟ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਵਾਲੇ ਸਰਵਰ ਦੁਆਰਾ ਪਛਾਣਿਆ ਗਿਆ ਹੈ।

ਇਸ ਤੋਂ ਇਲਾਵਾ, ਇਹ ਸਮੱਸਿਆ ਹੋ ਸਕਦੀ ਹੈ ਜੇਕਰ ਮੇਲ ਸਰਵਰ 'ਤੇ ਨੀਤੀ ਪਾਬੰਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਸੀਮਾਵਾਂ ਭੇਜਣਾ ਜਾਂ ਸੁਰੱਖਿਆ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਣਪਛਾਤੇ ਈਮੇਲ ਪਤਿਆਂ ਨੂੰ ਬਲੌਕ ਕਰਨਾ। ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਆਪਣੇ ਸਰਵਰ ਦੇ ਦਸਤਾਵੇਜ਼ਾਂ ਦੀ ਸਲਾਹ ਲੈਣੀ ਚਾਹੀਦੀ ਹੈ ਜਾਂ ਕਿਸੇ ਖਾਸ ਪਾਬੰਦੀਆਂ ਜਾਂ ਸੰਰਚਨਾਵਾਂ ਨੂੰ ਸਮਝਣ ਲਈ ਸਰਵਰ ਪ੍ਰਬੰਧਕ ਨਾਲ ਸੰਪਰਕ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਨਾਲ 550 ਗਲਤੀ ਹੋ ਸਕਦੀ ਹੈ। ਸਹੀ ਗਲਤੀ ਨੂੰ ਸੰਭਾਲਣ ਅਤੇ ਈਮੇਲ ਭੇਜਣ ਵਾਲੇ ਕੋਡ ਵਿੱਚ ਲੌਗਇਨ ਕਰਨ ਨਾਲ ਵੀ ਮੁੱਦਿਆਂ ਨੂੰ ਪਛਾਣਨ ਅਤੇ ਹੱਲ ਕਰਨ ਵਿੱਚ ਮਦਦ ਮਿਲ ਸਕਦੀ ਹੈ।

SMTP 550 ਐਰਰ ਹੈਂਡਲਿੰਗ ਬਾਰੇ ਆਮ ਸਵਾਲ

  1. ਸਵਾਲ: smtpDataError(550) ਦਾ ਕੀ ਮਤਲਬ ਹੈ?
  2. ਜਵਾਬ: ਇਹ ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਪ੍ਰਾਪਤਕਰਤਾ ਦੇ ਈਮੇਲ ਸਰਵਰ ਨੇ ਭੇਜਣ ਵਾਲੇ ਦੇ ਅਧਿਕਾਰਤ ਨਾ ਹੋਣ ਕਾਰਨ ਸੰਦੇਸ਼ ਨੂੰ ਰੱਦ ਕਰ ਦਿੱਤਾ ਹੈ।
  3. ਸਵਾਲ: ਮੈਂ smtpDataError(550) ਨੂੰ ਕਿਵੇਂ ਠੀਕ ਕਰ ਸਕਦਾ ਹਾਂ?
  4. ਜਵਾਬ: ਭੇਜਣ ਵਾਲੇ ਪ੍ਰਮਾਣਿਕਤਾ, ਪ੍ਰਾਪਤਕਰਤਾ ਦੇ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ, ਅਤੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਈਮੇਲ ਸਰਵਰ ਨੀਤੀਆਂ ਦੀ ਉਲੰਘਣਾ ਨਹੀਂ ਕਰ ਰਹੀ ਹੈ।
  5. ਸਵਾਲ: ਕੀ smtpDataError(550) ਭੇਜਣ ਵਾਲੇ ਜਾਂ ਪ੍ਰਾਪਤਕਰਤਾ ਨਾਲ ਸਬੰਧਤ ਹੈ?
  6. ਜਵਾਬ: ਇਹ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਮੁੱਦਾ ਭੇਜਣ ਵਾਲੇ ਦੇ ਅਧਿਕਾਰ ਜਾਂ ਪ੍ਰਾਪਤਕਰਤਾ ਦੇ ਪਤੇ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਨਾਲ ਹੈ, ਇਹ ਕਿਸੇ ਨਾਲ ਵੀ ਸਬੰਧਤ ਹੋ ਸਕਦਾ ਹੈ।
  7. ਸਵਾਲ: ਕੀ ਸਰਵਰ ਸੈਟਿੰਗਾਂ smtpDataError(550) ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੀਆਂ ਹਨ?
  8. ਜਵਾਬ: ਹਾਂ, ਸਰਵਰ ਪਾਬੰਦੀਆਂ ਜਾਂ ਸੁਰੱਖਿਆ ਸੈਟਿੰਗਾਂ ਇਸ ਗਲਤੀ ਨੂੰ ਟਰਿੱਗਰ ਕਰ ਸਕਦੀਆਂ ਹਨ।
  9. ਸਵਾਲ: ਮੈਂ ਇਹ ਕਿਵੇਂ ਯਕੀਨੀ ਬਣਾਵਾਂ ਕਿ ਮੇਰੀ ਈਮੇਲ smtpDataError(550) ਨੂੰ ਟਰਿੱਗਰ ਨਾ ਕਰੇ?
  10. ਜਵਾਬ: ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸਾਰੀਆਂ ਈਮੇਲ ਸੈਟਿੰਗਾਂ ਸਹੀ ਹਨ, ਭੇਜਣ ਵਾਲਾ ਅਧਿਕਾਰਤ ਹੈ, ਅਤੇ ਸਰਵਰ ਨੀਤੀਆਂ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ।

SMTP ਡੇਟਾ ਗਲਤੀ ਨੂੰ ਸੰਭਾਲਣ ਬਾਰੇ ਅੰਤਿਮ ਵਿਚਾਰ

smtpDataError(550) ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਹੱਲ ਕਰਨਾ SMTP ਪ੍ਰੋਟੋਕੋਲ ਅਤੇ ਸਰਵਰ-ਵਿਸ਼ੇਸ਼ ਨੀਤੀਆਂ ਦੀ ਸਪਸ਼ਟ ਸਮਝ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਸਹੀ ਪ੍ਰਮਾਣਿਕਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾ ਕੇ, ਸਰਵਰ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਧਿਆਨ ਨਾਲ ਸੈੱਟ ਕਰਨਾ, ਅਤੇ ਸਰਵਰ ਫੀਡਬੈਕ ਲਈ ਉਚਿਤ ਜਵਾਬ ਦੇ ਕੇ, ਡਿਵੈਲਪਰ ਆਪਣੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਭਰੋਸੇਯੋਗ ਅਤੇ ਸੁਰੱਖਿਅਤ ਈਮੇਲ ਕਾਰਜਕੁਸ਼ਲਤਾ ਨੂੰ ਕਾਇਮ ਰੱਖ ਸਕਦੇ ਹਨ। ਸਰਵਰ ਸੰਰਚਨਾਵਾਂ 'ਤੇ ਨਿਯਮਤ ਅੱਪਡੇਟ ਅਤੇ ਜਾਂਚਾਂ ਭਵਿੱਖ ਦੇ ਮੁੱਦਿਆਂ ਨੂੰ ਵੀ ਰੋਕ ਸਕਦੀਆਂ ਹਨ, ਕਿਸੇ ਵੀ ਡਿਵੈਲਪਰ ਦੇ ਸ਼ਸਤਰ ਵਿੱਚ ਈਮੇਲ ਆਟੋਮੇਸ਼ਨ ਨੂੰ ਇੱਕ ਮਜ਼ਬੂਤ ​​ਟੂਲ ਬਣਾਉਂਦੀਆਂ ਹਨ।