попытка отправить электронное письмо с помощью python и django

#python #django #gmail #smtplib

Вопрос:

Поэтому я пытаюсь отправить электронное письмо с python django видом проблема в том, что все внутри моего собственного сервера localhost в порядке, но в производстве ему просто не нравится работать, и я не знаю, почему

вот код

 @api_view(["PUT"])
@permission_classes([IsAuthenticated])
def updateOrderToPaid(request, pk):
    order = Order.objects.get(taransId=pk)
    orderItems = OrderItem.objects.filter(order=order).all()
    address = ShippingAddress.objects.get(order=order)
    smtp_server = "smtp.gmail.com"
    port = 465  
    sender_email = "MYGMAIL"
    password = "MYPASSWORD"
    receiver_email = "RECEIVERGMAIL"
    message = MIMEMultipart("alternative")
    message["Subject"] = "DONE"
    message["From"] = sender_email
    message["To"] = receiver_email
    context = ssl.create_default_context()

    text = """
    ITS WORKING
    """
    html = """
    <html>
    <body>
        <p class="text-danger">Done!</p><br>
        <ul>n
    """
    html  = "n".join(["<li>"   str(s)   "</li>" for s in orderItems])
    html  = f"""
    n</ul>
    </body>
    </html>"""



    part1 = MIMEText(text, "plain")
    part2 = MIMEText(html, "html")
    message.attach(part1)
    message.attach(part2)
    
    data = {
    'pin' : 'SOME_PIN',
    'amount' : int(order.TotalPrice),
    'transid' : order.taransId
    }
    try:
        response = requests.post('https://panel.aqayepardakht.ir/api/verify', data = data)
        if response.status_code == 200 and response.text == '1':
            order.isPaid = True
            order.paidAt = datetime.now()
            order.save()
            return Response({"message": "پرداخت با موفقیت انجام شد"}, status=status.HTTP_200_OK)
            with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
                server.login(sender_email, password)
                server.sendmail(sender_email, receiver_email, message.as_string())
        elif response.status_code == 200 and response.text =='0':
            print(response, "else if error")
            return Response({"details": "تراکنش با موفقیت انجام نشد"}, status=status.HTTP_400_BAD_REQUEST)
        else:
            print(response, "else Error")
            return Response({"details": "تراکنش با موفقیت انجام نشد"}, status=status.HTTP_400_BAD_REQUEST)
    except Exception as e:
        return Response({"details": f"{e}"})
 

и я должен упомянуть, что хост, который я использую, не возвращает только ошибок

 with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
                server.login(sender_email, password)
                server.sendmail(sender_email, receiver_email, message.as_string())
 

этому не нравится работать на производстве!

Спасибо вам 🙂