powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / отправка почты через smtp
13 сообщений из 13, страница 1 из 1
отправка почты через smtp
    #39134781
noTpyJI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите разобраться. Есть функция send_mail('server', 'to@mail.ru', 'from@mail.ru', 'msg', 'msg msg msg')
на smtp сервере анонимная авторизация, когда запускаю скрипт с локальной машины почта ходит как надо.
тот же скрипт на машине с ubuntu server выдает ошибку доступа.

p.s. Машины находятся в разных подсетях

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
#! /usr/bin/perl

sub send_mail {
    use Net::SMTP;  
    
    my ($smtpserver, $to, $from, $msg, $subject) = @_;
    my $error;
    my $body;
    my $smtp;
    
    $body = "MIME-Version: 1.0\n"
        . "From: $from\n"
        . "To: $to \n"
        . "Subject: $subject\n\n" 
        . $msg . "\n"; 
 
    eval
    {
        require Authen::SASL;
    };

    if (!ref($to))
    { 
        @$to = split(/[,;]\s*/, $to); 
    }
    if(!($smtp = Net::SMTP->new($smtpserver)))
    {
        return "Could not connect to SMTP Server: $smtpserver ";
    }    
    if (!($smtp->mail($from)))
    {
        return "Bad 'From', check your Ac count Information";
    }
    if (!($smtp->recipient(@$to)))
    {
        return "Bad 'EmailTo'";
    }
    
    $smtp->data($body);
    $smtp->quit;
    
    return 0;
}
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39135183
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И какого рода ошибка - не удалось соединиться, сервер отверг подключение, что-то другое?
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39135191
noTpyJI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle, <vf.mirkos@mail.ru>;: Relay access denied
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39135231
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noTpyJIна smtp сервере анонимная авторизация
Не стыкуется с
noTpyJI@mail.ru>;: Relay access denied
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39135338
noTpyJI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

этот скрипт прекрасно работает с тем же smtp серверов, с другой машины из другой подсетки.
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39135389
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noTpyJIvkle,

этот скрипт прекрасно работает с тем же smtp серверов, с другой машины из другой подсетки.
я правильно понимаю, что relay у вас локально находится?
полагаю, на нем настроен access list по IP адресам/подсетям.
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39135400
noTpyJI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Q.Tarantino,

relay находится физически на другой машине. Скрипт писал изначально на локальной машине, там же и тестил рассылку (relay сервер и локальная машина в одной сетки).
Вот на машине из другой сетки не пашет. Вот про access list нужно будет узнать у сис админа
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39135427
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noTpyJIrelay находится физически на другой машине. Скрипт писал изначально на локальной машине, там же и тестил рассылку (relay сервер и локальная машина в одной сетки).
Вот на машине из другой сетки не пашет. Вот про access list нужно будет узнать у сис админа
под локальным я имел ввиду внутри вашей конторы а не какой нить gmail и тп.
спрашивайте админа, там надо смотреть.
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39136163
noTpyJI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Q.Tarantino,

C Админом разобрались.
Теперь другая проблема. Теперь на smtp нужно авторизоватся. Выданный логин и пароль учетки проверенны на клиенте ms sql management studio, письма ходят прекрасно! )

А вот скрипт мой не пашет

smtp запущен в режиме debug а

авторNet::SMTP>>> Net::SMTP(2.34)
Net::SMTP>>> Net::Cmd(2.30)
Net::SMTP>>> Exporter(5.71)
Net::SMTP>>> IO::Socket::INET(1.35)
Net::SMTP>>> IO::Socket(1.38)
Net::SMTP>>> IO::Handle(1.35)
Net::SMTP=GLOB(0x33bbb08)<<< 220 srvexcas2.bops.local Microsoft ESMTP MAIL Service ready at Wed, 23 Dec 2015 04:19:37 -0800
Net::SMTP=GLOB(0x33bbb08)>>> EHLO localhost.localdomain
Net::SMTP=GLOB(0x33bbb08)<<< 250-srvexcas2.bops.local Hello [172.20.14.75]
Net::SMTP=GLOB(0x33bbb08)<<< 250-SIZE 37748736
Net::SMTP=GLOB(0x33bbb08)<<< 250-PIPELINING
Net::SMTP=GLOB(0x33bbb08)<<< 250-DSN
Net::SMTP=GLOB(0x33bbb08)<<< 250-ENHANCEDSTATUSCODES
Net::SMTP=GLOB(0x33bbb08)<<< 250-STARTTLS
Net::SMTP=GLOB(0x33bbb08)<<< 250-X-ANONYMOUSTLS
Net::SMTP=GLOB(0x33bbb08)<<< 250-AUTH NTLM
Net::SMTP=GLOB(0x33bbb08)<<< 250-X-EXPS GSSAPI NTLM
Net::SMTP=GLOB(0x33bbb08)<<< 250-8BITMIME
Net::SMTP=GLOB(0x33bbb08)<<< 250-BINARYMIME
Net::SMTP=GLOB(0x33bbb08)<<< 250-CHUNKING
Net::SMTP=GLOB(0x33bbb08)<<< 250 XRDST
Net::SMTP=GLOB(0x33bbb08)>>> AUTH NTLM
Net::SMTP=GLOB(0x33bbb08)<<< 334 NTLM supported
Net::SMTP=GLOB(0x33bbb08)>>>
Net::SMTP=GLOB(0x33bbb08)<<< 535 5.7.3 Authentication unsuccessful
5.7.3 Authentication unsuccessful


Код: ruby
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
#! /usr/bin/perl -w

sub send_mail {
    use Net::SMTP;
    use MIME::Base64;
	
    my ($smtpserver, $to, $from, $msg, $subject, $apass) = @_;
    my $error;
    my $body;
    my $smtp;
    
    $body = "MIME-Version: 1.0\n"
        . "From: $from\n"
        . "To: $to \n"
        . "Subject: $subject\n\n" 
        . $msg . "\n"; 
 
	eval 
	{
		require Authen::SASL;
    };
	
	if ($@)
	{
		$error = system("ppm install Authen::SASL");
		$error = system("ppm install MIME::Base64");
	};
	
    if (!ref($to))
    { 
        @$to = split(/[,;]\s*/, $to); 
    }
    if(!($smtp = Net::SMTP->new($smtpserver, , Debug => 1)))
    {
        return "Could not connect to SMTP Server: $smtpserver \n";
    }
	if (length($apass) > 0)
	{
		if(!($smtp->auth(encode_base64('login'), encode_base64('pass'))))
		{
			return $smtp->message(); 
		}
	}
    if (!($smtp->mail($from)))
    {
        return "Bad From, check your Ac count Information " . $smtp->message();
    }
    if (!($smtp->recipient(@$to)))
    {	
        return "Bad EmailTo " . $smtp->message();
    }
    
    $smtp->data($body);
    $smtp->quit;
    
    return 0;
}
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39136189
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noTpyJIА вот скрипт мой не пашет
модуль Authen::SASL установлен?
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39136204
noTpyJI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Q.Tarantino,

Да. Код немного устаревший


Код: ruby
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
#! /usr/bin/perl -w

sub send_mail {
    use Net::SMTP;
	
    my ($smtpserver, $to, $from, $msg, $subject, $apass) = @_;
    my $error;
    my $body;
    my $smtp;
    
    $body = "MIME-Version: 1.0\n"
        . "From: $from\n"
        . "To: $to \n"
        . "Subject: $subject\n\n" 
        . $msg . "\n"; 
 
	eval 
	{
		use Authen::SASL;
		use MIME::Base64;
    };
	
	if ($@)
	{
		$error = system("ppm install Authen::SASL");
		$error = system("ppm install MIME::Base64");
	};
	
    if (!ref($to))
    { 
        @$to = split(/[,;]\s*/, $to); 
    }
    if(!($smtp = Net::SMTP->new($smtpserver, Debug => 1)))
    {
        return "Could not connect to SMTP Server: $smtpserver \n";
    }
	if (length($apass) > 0)
	{
		if(!($smtp->auth(encode_base64('login'), encode_base64('pass'))))
		{
			return $smtp->message(); 
		}
	}
    if (!($smtp->mail($from)))
    {
        return "Bad From, check your Ac count Information " . $smtp->message();
    }
    if (!($smtp->recipient(@$to)))
    {	
        return "Bad EmailTo " . $smtp->message();
    }
    
    $smtp->data($body);
    $smtp->quit;
    
    return 0;
}

...
Рейтинг: 0 / 0
отправка почты через smtp
    #39140049
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
noTpyJI, ну видно же что NTLM неntlm-мит.
Попробуйте модуль Authen::NTLM установить или обновить.
И еще есть модуль Authen::SASL::Perl::NTLM. Может там любой из модулей подхватывается
...
Рейтинг: 0 / 0
отправка почты через smtp
    #39140850
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чудовищный бред.
где ты взял этот код?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
eval 
	{
		require Authen::SASL;
    };
	
	if ($@)
	{
		$error = system("ppm install Authen::SASL");
		$error = system("ppm install MIME::Base64");
	};



почему бы не использовать use вместо require ?

и уж если require, то

1) кто будет $error проверять ? Папа Римский?

2) ты твёрдо уверен, что на убунте установлен ActivePerl ?

даже если ActivePerl установлен и ppm install вдруг успешен, придётся запускать код ещё раз,
ну и зачем тогда require ?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / отправка почты через smtp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]