Я не хочу использовать sendmail для отправки электронной почты, но предпочитаю использовать SMTP. Как я могу использовать Perl для отправки электронной почты на мою учетную запись GMAIL?
Как отправить сообщение электронной почты моей учетной записи Gmail с помощью SMTP и Perl?
Ответ 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 });