| Darcs-Notify documentation | Contained in the Darcs-Notify distribution. |
Darcs::Notify::Email - Send email notifications when patches are added or removed from a Darcs repo.
use Darcs::Notify;
Darcs::Notify->new(Email => { to => ["user1@example.com",
"user2@example.com"],
smtp_server => "smtp.example.com" })
->notify;
This module is meant to be passed as a the "Email" option to Darcs::Notify->new. This module sends email notifications of a Darcs repository's new and unpulled patches to a list of recipients using an SMTP server.
Normal users will probably just want to use the command line script darcs-notify, which is a front end to Darcs::Notify::Email.
new()This is called by Darcs::Notify->new when passed the "Email" hash-style option. The value of the option should be a reference to a hash with the following parameters:
The smtp server to send the emails through. If not specified it defaults to `localhost'.
This is reference to an array of recipient email addresses. This option is required.
$notify->notify()This function sends the email notifications. It is automatically invoked by Darcs::Notify->notify (assuming the "Email" option was passed to Darcs::Notify->new), so you shouldn't have to call it yourself.
darcs-notify, Darcs::Notify, Darcs::Notify::Base
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Copyright (C) 2007-2009 David Caldwell
David Caldwell <david@porkrind.org>
| Darcs-Notify documentation | Contained in the Darcs-Notify distribution. |
# Copyright (c) 2007-2009 David Caldwell, All Rights Reserved. package Darcs::Notify::Email; use base 'Darcs::Notify::Base'; use strict; use warnings; use Mail::Send; sub notify($$$$) { my ($self, $notify, $new, $unpull) = @_; my @group = @{$self->{to}}; if (scalar @$unpull) { my $msg = new Mail::Send Subject=>"[Unpulled patches]"; $msg->to(@group); #$ENV{MAILADDRESS} = $p->author; $msg->set("Reply-To", @group); $msg->set("Content-Type", ' text/plain; charset="utf-8"'); $msg->set("X-Darcs-Notify", $notify->repo_name); my $fh = $msg->open('smtp', Server=>$self->{smtp_server} || 'localhost') or die "$!"; #my $fh = $msg->open('testfile') or die "$!"; print $fh "Unpulled:\n\n"; print $fh join "\n", map { $_->as_string } @$unpull; $fh->close or die "no mail!"; print "Sent unpull mail to @group\n"; } # New patches each get their own email: foreach my $p (@$new) { my $name = ($p->undo?"UNDO: ":"").$p->name; my $msg = new Mail::Send Subject=>$name; $msg->to(@group); $ENV{MAILADDRESS} = $p->author; $msg->set("Reply-To", @group); $msg->set("Content-Type", ' text/plain; charset="utf-8"'); $msg->set("X-Darcs-Notify", $notify->repo_name); my $fh = $msg->open('smtp', Server=>$self->{smtp_server} || 'localhost') or die "$!"; #my $fh = $msg->open('testfile') or die "$!"; print $fh "$p\n"; print $fh $p->diffstat,"\n"; print $fh $p->diff,"\n"; $fh->close or die "no mail!"; print "Sent $name to @group\n"; } } 1; __END__