Я не хочу использовать sendmail для отправки электронной почты, но предпочитаю использовать SMTP. Как я могу использовать Perl для отправки электронной почты на мою учетную запись GMAIL?
Как отправить электронную почту на мою учетную запись Gmail с помощью SMTP и Perl?
Ответы (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 $@;
Согласно комментарию, неясно, хотите ли вы отправлять электронную почту через SMTP Google или просто отправлять электронную почту в целом (возможно, в свою учетную запись gmail). Вам следует проверить Email :: Send и, возможно, Электронная почта :: Send :: Gmail.
В качестве альтернативы, если вы действительно спрашиваете, как перенести электронную почту из другого места, кроме Gmail, в Gmail, мне очень повезло с IMAP, используя Mail :: Box и Бэкэнд Mail :: Box :: IMAP4 :: SSL. Вы можете увидеть пример использования здесь.
Другая возможность, которую вы, возможно, захотите рассмотреть, - это использование Email :: Send :: Gmail от CPAN. Это позволит вам отправлять электронную почту из своей учетной записи Gmail в любую учетную запись (например, себе).
На CPAN есть несколько модулей SMTP, например Net :: ESMTP. Кроме того, очень вероятно, что sendmail использует SMTP для связи с почтовыми серверами, так какова ваша настоящая причина, по которой вы не хотите его использовать?
Электронная почта :: Отправить (как используется в ответе Фейланда Лэма ) устарел:
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 });
Если вы не знакомы с CPAN (всеобъемлющая сеть архивов Perl), я рекомендую вам добавить этот сайт в закладки. Он содержит сторонние (в основном хорошо протестированные) библиотеки.
Пример, показывающий, как отправлять электронные письма с помощью perl: http://www.perlfect.com/articles/sendmail.shtml
Я использую MIME::Lite
, который является оболочкой вокруг Net::SMTP
для упрощения процесса создания объектов электронной почты, файловых вложений и отправки полезной нагрузки.
Если вы не знакомы с установкой модулей, проверьте:
В Windows используйте ActiveState Perl Package Manager (в меню «Пуск»).
В Unix используйте CPAN: $ sudo cpan Module::Name
В размещенных учетных записях Unix: Как установить модуль CPAN в локальный каталог?
Если вам просто не нравится sendmail, другой вариант - использовать Postfix, другой MTA.
Вот инструкции, которым я следовал, чтобы настроить его на моем компьютере с помощью Gmail: http://souptonuts.sourceforge.net/postfix_tutorial.html
Это также может быть полезно, если вы получаете предупреждение о невозможности проверить сертификат от Thawte Premium Server CA. http://ubuntuforums.org/archive/index.php/t-894355.html