#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())
этому не нравится работать на производстве!
Спасибо вам 🙂