###################################################################################
#
#   Embperl - Copyright (c) 1997-2008 Gerald Richter / ecos gmbh  www.ecos.de
#   Embperl - Copyright (c) 2008-2014 Gerald Richter
#
#   You may distribute under the terms of either the GNU General Public
#   License or the Artistic License, as specified in the Perl README file.
#
#   THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
#   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
#   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
#   $Id: Mail.pm 1578075 2014-03-16 14:01:14Z richter $
#
###################################################################################
 
package Embperl::Syntax::Mail ;

use Embperl::Syntax qw{:types} ;
use Embperl::Syntax::HTML ;

use strict ;
use vars qw{@ISA} ;

@ISA = qw(Embperl::Syntax::HTML) ;


###################################################################################
#
#   Methods
#
###################################################################################

# ---------------------------------------------------------------------------------
#
#   Create new Syntax Object
#
# ---------------------------------------------------------------------------------


sub new

    {
    my $class = shift ;

    my $self = Embperl::Syntax::HTML::new ($class) ;

    if (!$self -> {-mailInit})
        {
        $self -> {-mailInit} = 1 ;    
        Init ($self) ;
        }

    return $self ;
    }



###################################################################################
#
#   Definitions for Mail HTML tags
#
###################################################################################

sub Init

    {
    my ($self) = @_ ;

    $self -> AddTagBlock ('mail:send', ['from', 'to', 'cc', 'bcc', 'subject', 'reply-to', 
                                        'mailhost', 'mailhelo', 'maildebug', 'content-type'], 
                                        undef, undef, 
                { 
                removenode  =>  106,
		compiletimeperlcode => q{
			$_ep_mail_opt_save = $Embperl::req->component->config->options ;
			$Embperl::req->component->config->options (Embperl::Constant::optKeepSpaces | $_ep_mail_opt_save) ;
			},
		compiletimeperlcodeend => q{
			$Embperl::req->component->config->options ($_ep_mail_opt_save) ;
			},

                perlcodeend =>  q{
                    {
                    use Embperl::Mail ;

                    my $txt = XML::Embperl::DOM::Node::iChildsText (%$n%) ;
                    my @errors ;
                    $? = Embperl::Mail::Execute (
                        {
                        'input'       => \$txt,
                        'inputfile'   => 'mail',
                        'errors'      => \@errors,
                        'syntax'      => 'Text',
                        'from'        => %&'from%,
                        'to'          => %&'to%,
                        'cc'          => %&'cc%,
                        'bcc'         => %&'bcc%,
                        'subject'     => %&'subject%,
                        'reply-to'    => %&'reply-to%,
                        'mailhost'    => %&'mailhost%,
                        'mailhelo'    => %&'mailhelo%,
                        'maildebug'   => %&'maildebug%,
                        'mailheaders' => [ (( %&'content-type% ) ? ('Content-Type: '.%&'content-type%) : ()) ],
                        }) ;
                    print STDERR join ('; ', @errors) if (@errors) ;
                    }
                  },
                stackname   => 'mail_send',
                'push'        => '%$x%',
                },
                ) ;

    }


###################################################################################
#
#   Mail Implementation
#
###################################################################################


1; 

__END__

=pod

=head1 NAME

Embperl::Syntax::Mail - tag library for sending mail

=head1 SYNOPSIS

  [$ syntax + Mail $]

  <mail:send to="richter@ecos.de" subject="Testmail">
    Hi,
    this is a test for a new mail tag
    it is send at [+ scalar(localtime) +]
    from Embperl's Mail taglib.
  </mail:send>

  [$ if $? $]
    <h2>Sorry, there was an error, your mail couldn't be send</h2>
  [$else$]
    <h2>Your mail was successfully delivered</h2>
  [$endif$]


=head1 DESCRIPTION

The is module provides a mail:send tag, for sending text via email. It uses the
Embperl::Mail module for actualy sending the mail. The following attributes
are recognized. The mail body is enclosed between the mail:send tags.
See L<Embperl::Mail> for an description of the attribues:


=over 4

=item from       

=item to         

=item cc         

=item bcc        

=item subject    

=item reply-to   

=item mailhost   

=item mailhelo   

=item maildebug  

=item content-type

=back


On success it sets C<$?> to zero, otherwise to a value other then zero.

=head1 Author

Gerald Richter <richter at embperl dot org>

=head1 See Also

Embperl::Syntax, Embperl::Syntax::HTML