Программа отправки электронной почты в Python

Sendmail из командной строки с помощью Python

Бывают случаи, когда нужно отправить какой-нибудь текстовый файл, например, python-скрипт Bash Script или Power Shell скрипт из командной строки себе или своим коллегам, используя командную строку. Конечно, если вы работаете в Linux, вы можете воспользоваться утилитой sendmail или командой mail, однако и та, и другая имеют некоторые ограничения в плане того, к какому почтовому серверу они могут подключиться или от/к пользователю они могут это сделать.

Я написал небольшой скрипт на языке python для использования в операционных системах Linux/Windows/Mac, который может прочитать любой файл и отправить его непосредственно на указанный адрес электронной почты, использование будет выглядеть следующим образом:

Usage: ./sendmail_insecure.py -f <File> -r <Recepient_Eamil> -s "Subject"

Пример использования – если вы хотите отправить один и тот же скрипт sendmail_insecure.py

$./sendmail_insecure.py -f myfile.txt -r test@test.com -s "Test Eamil"

Перед запуском скрипта необходимо обновить 2 основные переменные

smtp_server = "yourmailserver.yourdomain.com"
sender_email = "sender_email@yourdomain.com"

Скрипт использует неаутентифицированные серверы, обычно находящиеся в пределах вашей компании или страны, которые доверяют вашему IP-адресу. Поэтому он называется небезопасным, поскольку не происходит TLS-коммуникации.

Полный текст скрипта приведен ниже:

import smtplib
import getopt
import sys

smtp_port = 25
smtp_server = "yourmailserver.yourdomain.com"
sender_email = "youremailaddress@yourdomain.com"


def usage():
 print("Usage: ./sendmail_insecure.py -f <File> -r <Recepient_Eamil> -s \"Subject\" \n")

if ( len(sys.argv[1:]) != 6):
 usage()
 sys.exit(2)

try:
 opts,args = getopt.getopt(sys.argv[1:],"f:s:r:",["File","Subject","Recepient"])
except:
 usage()
 exit(1)

for opt,arg in opts:
 if (opt == "-f"):
          file = arg
 elif (opt == "-s"):
          subject = arg
 elif (opt == "-r"):
          receiver_email = arg
 else:
                print("Invalid Usage")

try:
 messagefile = open(file,"r")
except:
 print("Unable to Open Files: <",file,">")
 sys.exit(2)


message = "Subject: " + subject + "\n" + messagefile.read()

try:
 with smtplib.SMTP(smtp_server,smtp_port) as server:
         server.sendmail(sender_email,receiver_email,message)
         print("Mail sent!")
         messagefile.close()
         exit(0)
except smtplib.SMTPResponseException as e:
        print("Unable to Connect to Stmp Server")
         #print(e.smtp_error)   ## Enable for Dubugging
         #print(e.smtp_code)   ## Enable for Dubugging
        sys.exit(3)

messagefile.close()

Наслаждайтесь 🙂

+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *