Отправка электронной почты работает в Perl, не в Python - PullRequest
0 голосов
/ 29 января 2019

Я могу отправлять электронные письма из сценария Perl, но не из сценария Python.

Я создал perl-скрипт, который ежедневно запускается через jenkins, и, если некоторые проверки не пройдены, он отправляет мне электронное письмо.

Я пытаюсь перенести скрипт из perl в python3.7, но не могу отправить письмо от python.

Это код в perl:

use strict;
use warnings;

use Email::MIME;
use Email::Sender::Simple qw(sendmail);
use Data::Dumper;

my $message = Email::MIME->create(
    header_str => [
    From    => 'my_email@domain.com',
    To      =>  $email,
    Subject => 'just a subject',
    ],
    attributes => {
        encoding => 'quoted-printable',
        charset  => 'ISO-8859-1',
    },
    body_str => $arr_msg,
    );

    my $email_test = sendmail($message);

}

Это код на python:

import smtplib

server = smtplib.SMTP('127.0.0.1', 25) # also tried my-domain.com with port 2525

server.sendmail(
    "me@my-domain.com", 
    "someone@address.com", 
    "this message is from python")
server.quit()

Он умирает на сервере = smtplib.SMTP ('127.0.0,1 ', 25) с ошибкой:

smtplib.SMTPServerDisconnected: Connection unexpectedly closed

Вывод lsof -i: 25

COMMAND  PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
master  2728 root   12u  IPv4 1774572613      0t0  TCP 
localhost.localdomain:smtp (LISTEN)

Что это может быть?

1 Ответ

0 голосов
/ 29 января 2019

Да, я сделал это для gmx-mail

import smtplib
from email.mime.text import MIMEText


class MailService:
    senderEmail = "..."
    fromMail = "..."

    def __init__(self):
        self.server = smtplib.SMTP('mail.gmx.net', 587)  # Die Server Daten
        self.server.starttls()
        self.server.login(self.senderEmail, "passwort")  # Das Passwort

    def __delete__(self, instance):
        self.server.quit()

    def sendMail(self, toMail, text, subject):
        msg = MIMEText(text)
        msg['From'] = self.fromMail
        msg['To'] = toMail
        msg['Subject'] = subject
        mail = msg.as_string()
        self.server.sendmail(self.fromMail, toMail, mail)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...