Подтвердить что ты не робот

Как отправить сообщение электронной почты моей учетной записи Gmail с помощью SMTP и Perl?

Я не хочу использовать sendmail для отправки электронной почты, но предпочитаю использовать SMTP. Как я могу использовать Perl для отправки электронной почты на мою учетную запись GMAIL?

4b9b3361

Ответ 1

лично я предлагаю вам использовать мой модуль Email:: Send:: SMTP:: TLS который хорошо работает через TLS в Google Mail.

Спасибо.

use Email::Send;

my $mailer = Email::Send->new( {
    mailer => 'SMTP::TLS',
    mailer_args => [
        Host => 'smtp.gmail.com',
        Port => 587,
        User => '[email protected]',
        Password => 'password',
        Hello => 'fayland.org',
    ]
} );

use Email::Simple::Creator; # or other Email::
my $email = Email::Simple->create(
    header => [
        From    => '[email protected]',
        To      => '[email protected]',
        Subject => 'Subject title',
    ],
    body => 'Content.',
);

eval { $mailer->send($email) };
die "Error sending email: [email protected]" if [email protected];

Ответ 2

В соответствии с комментарием неясно, хотите ли вы отправлять электронную почту через SMTP Google или просто отправлять электронную почту вообще (возможно, в свою учетную запись gmail). Вы должны проверить Email::Send и, возможно, Email::Send::Gmail,

В качестве альтернативы, если вы действительно задаетесь вопросом, как я могу перемещать электронную почту откуда-то, а не Gmail в Gmail, мне очень повезло с IMAP, используя Mail::Box и Mail::Box::IMAP4::SSL. Вы можете увидеть пример использования здесь.

Ответ 3

Я всегда пользовался и имел очень удачу с Mail:: Sender.

Ответ 4

В CPAN имеются многоуровневые SMTP-модули, например Net:: ESMTP. Кроме того, sendmail, скорее всего, использует SMTP для связи с почтовыми серверами, так что ваша настоящая причина не хотеть использовать его?

Ответ 5

Еще одна возможность, которую вы можете захотеть, - использовать модуль Email:: Send:: Gmail из CPAN. Это позволит вам отправлять электронную почту со своей учетной записи Gmail в любую учетную запись (например, для себя).

Ответ 6

Если вы не знакомы с CPAN (полная архивная сеть Perl), я рекомендую вам пометить этот сайт. Он содержит библиотеки третьих сторон (в основном хорошо протестированные).

Пример, показывающий, как отправлять электронные письма с помощью perl: http://www.perlfect.com/articles/sendmail.shtml

Ответ 7

Я использую MIME::Lite, который является оберткой вокруг Net::SMTP, чтобы упростить процесс создания почтовых объектов, вложений файлов, и отправку полезной нагрузки.

Если вы не знакомы с установкой модулей, проверьте:

В Windows используйте диспетчер пакетов ActiveState Perl (в меню "Пуск" )

В Unix используйте CPAN: $ sudo cpan Module::Name

Входящие учетные записи Unix: Как установить модуль CPAN в локальный каталог?

Ответ 8

Если вам просто не нравится sendmail, другой вариант - использовать Postfix, другой MTA.

Вот инструкции, которые я выполнил, чтобы настроить его на моей машине, используя gmail: http://souptonuts.sourceforge.net/postfix_tutorial.html

Это может быть полезно также, если вы получите предупреждение о невозможности проверить сертификат от Thawte Premium Server CA. http://ubuntuforums.org/archive/index.php/t-894355.html

Ответ 9

Email:: Отправить (как используется в ответе Fayland Lam) устарел:

Электронная почта:: Отправить уходит... ну, не совсем уходит, но это будучи официально отмеченным "не в порядке".

Это работает для меня, используя предпочтительный Email:: Sender:

use strict;
use warnings;

use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTPS ();
use Email::Simple ();
use Email::Simple::Creator ();

my $smtpserver = 'server';
my $smtpport = 587;
my $smtpuser   = 'username';
my $smtppassword = 'password';

my $transport = Email::Sender::Transport::SMTPS->new({
  host => $smtpserver,
  port => $smtpport,
  ssl => "starttls",
  sasl_username => $smtpuser,
  sasl_password => $smtppassword,
});

my $email = Email::Simple->create(
  header => [
    To      => '[email protected]',
    From    => '[email protected]',
    Subject => 'Hi!',
  ],
  body => "This is my message\n",
);

sendmail($email, { transport => $transport });