Cygal.net.pl

Systemy, Sieci i takie tam :)

Jak automatycznie wysyłać wiadomosci MAIL z konta Gmail.com




Zaistniała potrzeba aby co jakiś czas automatycznie wysłać maila do znajomych z mojego konta emial na Gmailu. Do tego celu napisałem prosty skrypt w Perlu. Skrypt pobiera dane adresowe z bazy mysql a następnie wysyła maila o jednakowej treści na wszystkie znalezione adresy emial w bazie. Oczywiście skrypt jest uruchamiany z crona raz w tygodniu w każdą… niedziele minute po północy.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/perl
use strict;
use Email::Send;
use Email::Send::Gmail;
use Email::Simple::Creator;
use vars qw(@result $date $time);
use DBI;
use Date::Format;
use File::Copy;

my $logname = 'raport_wysylki.txt';
my $logpath = '/home/lech/BACKUP/raport_email/';
my $db = 'dbname';
my $user = 'dbuser';
my $pass = 'dppass';
#=======KONIEC=USTAIWEN=========

if (-e $logname){
unlink($logname);
}

$date = time2str("%m-%d-%Y", time);
$time = time2str("%H-%M-%S", time);

my $dbh = DBI->connect("DBI:mysql:$db", $user, $pass);
die "Can't connect: " . DBI->errstr() unless $dbh;
print "Succes: connected!n";

my $sth=$dbh->prepare('SELECT email FROM users');

$sth->execute();

while (my @result = $sth->fetchrow_array){
foreach my $i (@result)
{
#=======SEKCJA WYSYLANIA MAILA=======
my $email = Email::Simple->create(
header => [
From => 'destine@destine.com',
To => $i,
Subject => 'Jakis temat wiadomosci',
],
body => "Czesc, nnnnJakas informacje czy inna tresc wiadomoscie email nnnnnnnZ powazaniemnDestinenn--nJakas stopkanwww.destine.vhosted.pln",
);

my $sender = Email::Send->new(
{
mailer => 'Gmail',
mailer_args => [
username => 'destine@destine.com',
password => 'destinepassword',
]
}
);

open (file, '>>', 'raport_wysylki.txt') or die "Nie mozna otworzyc pliku: $!";
print file "Date|$date|Time|$time|Status|Wiadomosc zostala wyslana|E-mail|$i n";
close file;

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

my $lognamedate = $logname . "_" . $date;
copy($logname,$logpath) or die "nie moge skopiowac raportu";
chdir($logpath) or die "nie moge zmienic przejsc do katalogu $logpath";
rename($logname,$lognamedate) or die "nie moge zmienic nazwy pliku";

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *


Time limit is exhausted. Please reload CAPTCHA.