Как отправить электронное письмо на мою учетную запись Gmail, используя SMTP и Perl? - PullRequest
12 голосов
/ 18 февраля 2009

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

Ответы [ 9 ]

13 голосов
/ 18 февраля 2009

лично я бы посоветовал вам использовать мой модуль Электронная почта :: Отправить :: 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 => 'username@gmail.com',
        Password => 'password',
        Hello => 'fayland.org',
    ]
} );

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

eval { $mailer->send($email) };
die "Error sending email: $@" if $@;
6 голосов
/ 18 февраля 2009

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

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

2 голосов
/ 18 февраля 2009

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

1 голос
/ 06 сентября 2015

E-mail :: Send (как используется в ответе Fayland Lam) устарела:

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      => 'mymail@gmail.com',
    From    => 'sender@example.com',
    Subject => 'Hi!',
  ],
  body => "This is my message\n",
);

sendmail($email, { transport => $transport });
1 голос
/ 26 февраля 2009

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

1 голос
/ 18 февраля 2009

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

0 голосов
/ 23 ноября 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

0 голосов
/ 18 февраля 2009

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

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

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

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

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

0 голосов
/ 18 февраля 2009

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

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

...