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

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


person git-noob    schedule 18.02.2009    source источник
comment
Я действительно не понимаю вопроса: вы хотите напрямую разговаривать с SMTP-сервером Google? Или свой? Есть ли в этом вопросе что-нибудь, относящееся к gmail?   -  person innaM    schedule 18.02.2009


Ответы (9)


лично я предлагаю вам использовать мой модуль 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: $@" if $@;
person Fayland Lam    schedule 18.02.2009

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

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

person xdg    schedule 18.02.2009
comment
Email :: Send недавно устарел и заменен Email :: Sender. - person fB.; 18.02.2009

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

person Joe Casadonte    schedule 18.02.2009

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

person Mark Fowler    schedule 26.02.2009

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

person Simon    schedule 18.02.2009

Электронная почта :: Отправить (как используется в ответе Фейланда Лэма ) устарел:

Email :: Send уходит ... ну, на самом деле не уходит, но официально помечен как «вышедший из употребления».

У меня это работает, используя предпочтительный 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 });
person JosephH    schedule 06.09.2015

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

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

person Schildmeijer    schedule 18.02.2009
comment
OP сказал: я не хочу использовать sendmail - person jfs; 18.02.2009

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

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

В Windows используйте ActiveState Perl Package Manager (в меню «Пуск»).

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

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

person spoulson    schedule 18.02.2009

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

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

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

person Kaypro II    schedule 22.11.2009