Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Email::Send::Gmail


Автор: qw1mb0 6.11.2011, 16:11
Добрый день форумчане.
Разбираюсь с модулем Email::Send::Gmail

написал такую программку
Код

#!/usr/bin/perl
  use strict;
  use warnings;
  use Email::Send;
  use Email::Send::Gmail;
  use Email::Simple::Creator;
  print "Enter please your mail: ";
  chomp (my $mail = <STDIN>);
  print "Enter please your password: ";
  chomp (my $pass = <STDIN>);
  print "Enter a mail to: ";
  chomp (my $to = <STDIN>);
  print "Enter a text: ";
  chomp (my $text = <STDIN>);

  my $email = Email::Simple->create(
      header => [
          From    => '$mail',
          To      => '$to',
          Subject => 'Lol',
      ],
      body => '$text',
  );

  my $sender = Email::Send->new(
      {   mailer      => 'Gmail',
          mailer_args => [
              username => '$mail',
              password => '$pass',
          ]
      }
  );
  eval { $sender->send($email) };
  die "Error sending email: $@" if $@;


Выдает ошибку: Error sending email: Email::Send::Gmail: error authenticating username $mail .... 
Как решить данную проблему?

Автор: alezzz 6.11.2011, 19:16
Цитата(qw1mb0 @  6.11.2011,  16:11 Найти цитируемый пост)
username => '$mail',              password => '$pass',

С одинарными кавычками в username и password не попадают значения $mail и $pass, делайте:
Код

              username => "$mail",
              password => "$pass",

или:
Код

              username => $mail,
              password => $pass,

Автор: qw1mb0 6.11.2011, 20:38
спасибо. Помогло
А можно ли при удачном выполнении отправки письма. Сообщить об этом каким либо выводом сообщения?

Автор: qw1mb0 6.11.2011, 23:07
А можно ли сделать так, что бы при вводе пароля он не отображался на экране, а заменялся звездочками например?

Автор: alezzz 7.11.2011, 00:07
Можно сделать чтобы никак не отображался, посмотрите http://search.cpan.org/dist/TermReadKey/ReadKey.pm с его функцией ReadMode('noecho');

Автор: qw1mb0 8.11.2011, 23:57
Спасибо большое за наводку
решил это вот так:
Код

#!/usr/bin/perl
  use strict;
  use warnings;
  use Email::Send;
  use Email::Send::Gmail;
  use Email::Simple::Creator;
  use Term::ReadKey;
  print "Login: \n";
  print "\tEnter please your mail: ";
  chomp (my $mail = <STDIN>);
  if ($mail eq 'wimba'){
      $mail = 'qqw1mb0@gmail.com'  }
  print "\tEnter please your password: ";
  ReadMode 'noecho';
  my $password = ReadLine 0;
  chomp $password;
  ReadMode 'normal';
  print"\n";
 # chomp (my $pass = <STDIN>);
  print "Write a mail:\n";
  print "\tEnter a mail to: ";
  chomp (my $to = <STDIN>);
  if ($to eq 'Мыло'){
      $to = 'wimbostud@gmail.com'
  }
  print "\tEnter a mail subject: ";
  chomp (my $subject = <STDIN>);
  print "\tEnter a text: ";
  chomp (my $text = <STDIN>);

  my $email = Email::Simple->create(
      header => [
          From    => $mail,
          To      => $to,
          Subject => $subject,
      ],
      body => $text,
  );

  my $sender = Email::Send->new(
      {   mailer      => 'Gmail',
          mailer_args => [
              username => $mail,
              password => $password,
          ]
      }
  );
  eval { $sender->send($email) };
  die "Error sending email: $@" if $@;


Но пока еще не разобрался с сообщением об  удачном выполнении

Автор: Lols 9.11.2011, 00:25
Напишите, пожалуйста, когда разберетесь, а то у меня аналогичная проблема.

Автор: baldina 9.11.2011, 01:21
Цитата(Lols @  9.11.2011,  00:25 Найти цитируемый пост)
а то у меня аналогичная проблема

с сообщением об удачном выполнении?  smile 

Автор: qw1mb0 10.11.2011, 18:35
Цитата(Lols @ 9.11.2011,  00:25)
Напишите, пожалуйста, когда разберетесь, а то у меня аналогичная проблема.

Я вот тут подумал... если eval возвращает положительное значение, то выводится сообщение об успешном выполнении.. 
Не намекнете как это реализовать?

Автор: qw1mb0 12.11.2011, 19:08
Цитата(Lols @  9.11.2011,  00:25 Найти цитируемый пост)
Напишите, пожалуйста, когда разберетесь, а то у меня аналогичная проблема. 

Что-то я сомвсем протупил с решением этой задачи smile
решение просто и элементарно до безумства:

Код

 eval { $sender->send($email) };
  die "Error sending email: $@" if $@;
  print "";


Просто добавить print.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)