Ich versuche, E-Mail mit Net::SMTPS
und gmail zu senden:
#! /usr/bin/env perl
use feature qw(say);
use strict;
use warnings;
use Net::SMTPS;
my $smtp = Net::SMTPS->new(
'smtp.gmail.com',
Port => 587,
Timeout => 20,
Debug => 1,
doSSL => 'starttls',
);
die "Initialization failed: $!" if !defined $smtp;
my $sender = my $user = '[email protected]';
my $password = '????';
say "Trying to authenticate..";
$smtp->auth($user, $password, 'LOGIN' ) or die "could not authenticate\n";
my $receiver = '[email protected]';
$smtp->mail($sender);
$smtp->to($receiver);
$smtp->data();
$smtp->datasend("To: $receiver\n");
$smtp->datasend("From: $sender\n");
$smtp->datasend("Content-Type: text/html\n");
$smtp->datasend("Subject: Testing Net::SMTPS");
$smtp->datasend("\n");
$smtp->datasend('The body of the email');
$smtp->dataend();
$smtp->quit();
say "Done.";
, wenn die Ausgabe läuft dieses Skript (Ubuntu 16.04, Perl Version 5.22.1) ist:
Net::SMTPS>>> Net::SMTPS(0.04)
Net::SMTPS>>> IO::Socket::INET6(2.72)
Net::SMTPS>>> IO::Socket(1.38)
Net::SMTPS>>> IO::Handle(1.35)
Net::SMTPS>>> Exporter(5.72)
Net::SMTPS>>> Net::SMTP(3.05)
Net::SMTPS>>> Net::Cmd(3.05)
Net::SMTPS>>> IO::Socket::IP(0.37)
Net::SMTPS=GLOB(0x10b2dd8)<<< 220 smtp.gmail.com ESMTP x131sm3965376lff.44 - gsmtp
Net::SMTPS=GLOB(0x10b2dd8)>>> EHLO localhost.localdomain
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-smtp.gmail.com at your service, [195.139.193.120]
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-SIZE 35882577
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-8BITMIME
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-STARTTLS
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-ENHANCEDSTATUSCODES
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-PIPELINING
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-CHUNKING
Net::SMTPS=GLOB(0x10b2dd8)<<< 250 SMTPUTF8
Net::SMTPS=GLOB(0x10b2dd8)>>> STARTTLS
Net::SMTPS=GLOB(0x10b2dd8)<<< 220 2.0.0 Ready to start TLS
Net::SMTPS=GLOB(0x10b2dd8)>>> EHLO localhost.localdomain
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-smtp.gmail.com at your service, [195.139.193.120]
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-SIZE 35882577
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-8BITMIME
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-ENHANCEDSTATUSCODES
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-PIPELINING
Net::SMTPS=GLOB(0x10b2dd8)<<< 250-CHUNKING
Net::SMTPS=GLOB(0x10b2dd8)<<< 250 SMTPUTF8
Trying to authenticate..
Use of uninitialized value $_ in pattern match (m//) at /usr/share/perl/5.22/Net/Cmd.pm line 250.
Use of uninitialized value in join or string at /usr/share/perl/5.22/Net/Cmd.pm line 249.
Net::SMTPS=GLOB(0x10b2dd8)>>> AUTH
Net::SMTPS=GLOB(0x10b2dd8)<<< 555 5.5.2 Syntax error. x131sm3965376lff.44 - gsmtp
could not authenticate
ich frage mich, warum ich diesen Fehler:
Use of uninitialized value $_ in pattern match (m//) at /usr/share/perl/5.22/Net/Cmd.pm line 250.
Use of uninitialized value in join or string at /usr/share/perl/5.22/Net/Cmd.pm line 249.
wenn sie versuchen, zu authentifizieren?
Haben Sie versucht, Net :: SMTP zu verwenden? AFAIR-Versionen von Net :: SMTP über 3.0 unterstützen SMTPS und STARTLS. – AnFi
@ AndrzejA.Filip Danke für die Informationen. Ich habe jetzt 'Net :: SMTP' ausprobiert und es scheitert auch bei' $ smtp-> auth ($ user, $ password) '. Dieses Mal gibt es keinen internen Syntaxfehler wie in 'Net :: SMTPS', stattdessen gibt es 'undef' zurück, was auf einen Fehler bei der Authentifizierung hinweist. Ich habe bemerkt, dass es auch eine '$ smtp-> Auth (SASL)' gibt, wo Sie stattdessen ein 'Authen :: SASL'-Objekt angeben können. Aber ich bin nicht sicher, wie man das macht, basierend auf der Dokumentation in ['Authen :: SASL :: XS'] (https://metacpan.org/pod/Authen::SASL::XS) –