[prev in list] [next in list] [prev in thread] [next in thread] 

List:       perl-mailbox
Subject:    RE: attachment names
From:       "Simon, Michael S" <Michael_Simon () apl ! com>
Date:       2005-07-21 21:55:43
Message-ID: B210068CD4B0604A8B34703F7A496C919D235D () D1COL622MB ! D1 ! AD ! APL ! COM
[Download RAW message or body]

I've clearly been working on this too long or I just don't understand
what you are saying to do in these cases.  Here is my complete program.
The sendEmail is the part where I'm having the problems and I've tried
to include as much details as possible of what problems I'm having.

Any suggestions you have would be appreciated.

Again thank you for your help.
________________________
#!/bin/perl.exe
use warnings;
use strict;

use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
use File::Path;
use Mail::Message;
use Mail::Message::Body;
use MIME::Entity;

sub sendEmail;
sub zipAttachment;

my $email = \*STDIN;

my $msg = Mail::Message->read($email);

my $head = $msg->head;
my $body = $msg->body;
my @bodyParts;

my @attachments;
my $from='seechange@apl.com';
my $to=$head->get("To");
my $cc=$head->get("Cc");
my $bcc=$head->get("Bcc");
my $subject=$head->get("Subject");
my $bodyText = "";

my $zipFile;

my $attachmentsDir = "/tmp/attachments.$$";
#
# Create Attachments directory if non existent
#
mkpath ($attachmentsDir);
chdir ($attachmentsDir);

my $counter=0;
my $iParts=0;
  foreach my $part ( $msg->parts )
  {
    if ($part->body->mimeType ne 'text/plain')
    {
      my $attachmentName = $part->decoded->dispositionFilename;
      my $attachment = File::Spec->catfile( "$attachmentName" );

      unless ( -f $attachment )     #  Write attachment to file
      {
        open( FH, ">$attachment" );
        $part->decoded->print( \*FH );
        close(FH);
      }

      if ($part->body->size > 16384)
      {
        zipAttachment($attachment);
        push(@attachments, "$attachment.zip");
      }
    }
    else
    {
      $bodyText = $bodyText . $part->decoded;
      push(@bodyParts,$part->decoded);
    }

  }

sendEmail;
rmtree ($attachmentsDir);

### Start Subroutines

sub sendEmail()
{
  
  # I've attempted to start building a multipart email but just can't
seem to do it.
  my $body = Mail::Message::Body->new
  ( mime_type         => 'text/html'
  , transfer_encoding => '8bit'
  , data              => $bodyText
  );
  my $body2  = Mail::Message::Body::Multipart->new();


 my $multi = Mail::Message::Body::Multipart->new();
 my $part  = Mail::Message::Part->buildFromBody(@bodyParts, $multi);
 


  # When I create a message via this way I'm limiting myself as I may
have 
  # more then one file to attach.  If I understand email well enough I
could 
  # have multiple text i.e. the body minus the attachments i.e. the
text.
  # Also I won't always have attachments.
 
  # Issues with the below are that at the bottom of the email I see the
following
  #  -- boundary-1121982005 --
  # this shouldn't show.

  # The "text" coming from the STDIN could be plain or html.  
  # I need to be able to to keep it in this format.

  my $msg = Mail::Message->build
  ( From     => $from
  , To       => $to
  , Cc       => $cc
  , Bcc      => $bcc
  , Subject  => $subject
  , file     => $attachments[0]
  , data     => $bodyText



  # My desire is to see a sample of how I could do the following steps.
  # If they should be done in different order then please explain the
order.
  # 
  # 1) Create a Message with To, From, cc, bcc, subject
  # 2) Add an array text to the Message
  # 3) Add an array of attachments to the Message
  # 4) Send the email.
  
  $msg->send
  ( via        => 'sendmail'
  );

}

#
# sub will create zip and add file to zip
#
sub zipAttachment()
{
  my $attachmentName = "@_";
  my $zip = Archive::Zip->new();
  $zip->addFile( $attachmentName ) or warn "Can't add file
$attachmentName\n";
  my $status = $zip->writeToFileNamed("$attachmentName.zip");
}

________________________

Thanks
______________________________________________________
Michael Simon Actuate Architect
* Work Tel#:  510-272-8010 * Email: Michael_Simon@apl.com
______________________________________________________ 


-----Original Message-----
From: Mark Overmeer [mailto:mark@overmeer.net] 
Sent: Wednesday, July 20, 2005 11:42 PM
To: Simon, Michael S
Cc: Mail-Box Mailinglist
Subject: Re: attachment names

* Simon, Michael S (Michael_Simon@apl.com) [050721 02:15]:
>   my $message = Mail::Message->build
>   ( From     => $from
>   , To       => $to
>   , Cc       => $cc
>   , Bcc      => $bcc
>   , Subject  => $subject
> #, attach   => $bodyParts[0]
> #  , file     => $zipFile
>    );
> 
> Now how to I append parts to this email message?  I could have
multiple
> attachments and possibly multiple parts as text/html.  For sure I have
> the text of the message.  I may or may not have an attachment(s).
> Any help is appreciated.

You can attach multiple parts like this:

   Mail::Message->build(attach => \@bodyparts);

or

   Mail::Message->build(attach => $parts[0], attach => $parts[1]);

When you specify a file-name, the mime-type and such are automatically
detected (as long as you have the filename-extensions right).

If you want complex things, you need to do it in steps, for instance:
  
  my $p1 = Mail::Message::Body->new(data => \@lines);
  ...
  my $b  = Mail::Message::Body::Multipart->new(parts => [$p1, ...]);

  my $m  = Mail::Message->build(attach => $b); # multipart attached to
msg
or
  my $m  = Mail::Message->buildFromBody($b);   # multipart == msg

> I'm looking to do something of the following nature. 
>   foreach $body (@bodyParts)
>   {
>      $message-attachFile(); or 
>      $message-attachText();

 my $r = $body->attach(file => 'a.pgp');

Called on a multipart body, one part within the multipart will be added
(and
$r == $body), otherwise $r will be a multipart.
-- 
    MarkOv

[Attachment #3 (text/html)]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7226.0">
<TITLE>RE: attachment names</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">I've clearly \
been working on this too long or I just don't understand what you are saying to do in \
these cases.</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us">&nbsp;<FONT \
COLOR="#800000" FACE="Verdana"> Here is my complete program.&nbsp; The sendEmail is \
the part where I'm having the problems and I've tried to include as much details as \
possible of what problems I'm having.</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">Any suggestions \
you have would be appreciated.</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">Again thank you \
for your help.</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">________________________</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">#!/bin/perl.exe</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">use \
warnings;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">use \
strict;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">use \
Archive::Zip qw(:ERROR_CODES :CONSTANTS);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">use <A \
HREF="File::Path;">File::Path;</A></FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">use \
Mail::Message;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">use \
Mail::Message::Body;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">use \
MIME::Entity;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">sub \
sendEmail;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">sub \
zipAttachment;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my $email = \
\*STDIN;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my $msg = \
Mail::Message-&gt;read($email);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my $head = \
$msg-&gt;head;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my $body = \
$msg-&gt;body;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
@bodyParts;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
@attachments;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
$from='seechange@apl.com';</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
$to=$head-&gt;get(&quot;To&quot;);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
$cc=$head-&gt;get(&quot;Cc&quot;);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
$bcc=$head-&gt;get(&quot;Bcc&quot;);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
$subject=$head-&gt;get(&quot;Subject&quot;);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my $bodyText = \
&quot;&quot;;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
$zipFile;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
$attachmentsDir = &quot;/tmp/attachments.$$&quot;;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">#</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana"># Create \
Attachments directory if non existent</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">#</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">mkpath \
($attachmentsDir);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">chdir \
($attachmentsDir);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
$counter=0;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">my \
$iParts=0;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; foreach \
my $part ( $msg-&gt;parts )</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
{</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp; if ($part-&gt;body-&gt;mimeType ne \
'text/plain')</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp; {</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $attachmentName = \
$part-&gt;decoded-&gt;dispositionFilename;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $attachment = <A \
HREF="File::Spec-">File::Spec-</A>&gt;catfile( &quot;$attachmentName&quot; \
);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unless ( -f $attachment \
)&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp; Write attachment to file</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; open( FH, \
&quot;&gt;$attachment&quot; );</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
$part-&gt;decoded-&gt;print( \*FH );</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
close(FH);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($part-&gt;body-&gt;size &gt; \
16384)</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
zipAttachment($attachment);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push(@attachments, \
&quot;$attachment.zip&quot;);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp; }</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp; else</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp; {</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $bodyText = $bodyText . \
$part-&gt;decoded;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
push(@bodyParts,$part-&gt;decoded);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp; }</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
}</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">sendEmail;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">rmtree \
($attachmentsDir);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">### Start \
Subroutines</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">sub \
sendEmail()</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">{</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"> \
</SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # I've \
attempted to start building a multipart email but just can't seem to do \
it.</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; my $body \
= Mail::Message::Body-&gt;new</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; ( \
mime_type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; \
'text/html'</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; , \
transfer_encoding =&gt; '8bit'</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; , \
data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
=&gt; $bodyText</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; my \
$body2&nbsp; = Mail::Message::Body::Multipart-&gt;new();</FONT></SPAN></P> <BR>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp;my $multi \
= Mail::Message::Body::Multipart-&gt;new();</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp;my \
$part&nbsp; = Mail::Message::Part-&gt;buildFromBody(@bodyParts, \
$multi);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana"></FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us">&nbsp;</SPAN></P> <BR>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # When I \
create a message via this way I'm limiting myself as I may have </FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # more \
then one file to attach.&nbsp; If I understand email well enough I \
could</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"> </SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
#</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"> <FONT COLOR="#800000" \
FACE="Verdana">have multiple</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us"> <FONT COLOR="#800000" FACE="Verdana">text i.e. the body minus the \
attachments i.e. the text</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">.</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # Also I \
won't always have attachments.</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana"></FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us">&nbsp;</SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # Issues \
with the below are that at the bottom of the email I see</FONT></SPAN><SPAN \
LANG="en-us"></SPAN><SPAN LANG="en-us"> <FONT COLOR="#800000" FACE="Verdana">the \
following</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
#&nbsp;</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"> <FONT \
COLOR="#800000" FACE="Verdana">-- boundary-1121982005 --</FONT></SPAN><SPAN \
LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # this \
shouldn't show.</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # The \
&quot;text&quot;</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"> <FONT \
COLOR="#800000" FACE="Verdana">coming from</FONT></SPAN><SPAN \
LANG="en-us"></SPAN><SPAN LANG="en-us"> <FONT COLOR="#800000" \
FACE="Verdana">the</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT \
COLOR="#800000" FACE="Verdana"> STDIN</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us"> <FONT COLOR="#800000" FACE="Verdana">could be plain or \
html</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">.&nbsp; </FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # I need \
to be able to to keep it in this format.</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; my $msg \
= Mail::Message-&gt;build</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; ( \
From&nbsp;&nbsp;&nbsp;&nbsp; =&gt; $from</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; , \
To&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; $to</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; , \
Cc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; $cc</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; , \
Bcc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; $bcc</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; , \
Subject&nbsp; =&gt; $subject</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; , \
file&nbsp;&nbsp;&nbsp;&nbsp; =&gt; $attachments[0]</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; , \
data&nbsp;&nbsp;&nbsp;&nbsp; =&gt; $bodyText</FONT></SPAN></P> <BR>
<BR>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # My \
desire is to see a sample of how I could do the following steps.</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # If \
they should be done in different order then please explain the \
order.</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # \
</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # 1) \
Create a Message with To, From, cc, bcc, subject</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # 2) \
Add</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"> <FONT COLOR="#800000" \
FACE="Verdana">an array</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"> \
<FONT COLOR="#800000" FACE="Verdana">text to the</FONT></SPAN><SPAN \
LANG="en-us"></SPAN><SPAN LANG="en-us"> <FONT COLOR="#800000" \
FACE="Verdana">Message</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # 3) Add \
an array of attachments to the Message</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; # 4) \
Send the email.</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
$msg-&gt;send</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; ( \
via&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; 'sendmail'</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">}</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">#</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana"># sub will \
create zip and add file to zip</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">#</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">sub \
zipAttachment()</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">{</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; my \
$attachmentName = &quot;@_&quot;;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; my $zip \
= Archive::Zip-&gt;new();</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
$zip-&gt;addFile( $attachmentName ) or warn &quot;Can't add file \
$attachmentName\n&quot;;</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; my \
$status = $zip-&gt;writeToFileNamed(&quot;$attachmentName.zip&quot;);</FONT></SPAN></P>


<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">}</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">________________________</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"></SPAN><A NAME=""><SPAN LANG="en-us"><FONT \
COLOR="#800000" FACE="Verdana">Thanks</FONT></SPAN></A></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">______________________________________________________</FONT></SPAN></P>


<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">Michael Simon \
Actuate Architect</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">* Work \
Tel#:&nbsp; 510-272-8010 * Email: Michael_Simon@apl.com</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">______________________________________________________ \
</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">-----Original \
                Message-----<BR>
From: Mark Overmeer [<A \
                HREF="mailto:mark@overmeer.net">mailto:mark@overmeer.net</A>]<BR>
Sent: Wednesday, July 20, 2005 11:42 PM<BR>
To: Simon, Michael S<BR>
Cc: Mail-Box Mailinglist<BR>
Subject: Re: attachment names</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">* Simon, \
Michael S (Michael_Simon@apl.com) [050721 02:15]:</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp; my $message = \
Mail::Message-&gt;build</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp; ( From&nbsp;&nbsp;&nbsp;&nbsp; =&gt; \
$from</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp; , To&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; \
$to</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp; , Cc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; \
$cc</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp; , Bcc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; \
$bcc</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp; , Subject&nbsp; =&gt; $subject</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&gt; #, \
attach&nbsp;&nbsp; =&gt; $bodyParts[0]</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&gt; #&nbsp; , \
file&nbsp;&nbsp;&nbsp;&nbsp; =&gt; $zipFile</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp;&nbsp; );</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&gt; \
</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&gt; Now how to \
I append parts to this email message?&nbsp; I could have multiple</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&gt; \
attachments and possibly multiple parts as text/html.&nbsp; For sure I \
have</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&gt; the text \
of the message.&nbsp; I may or may not have an attachment(s).</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&gt; Any help \
is appreciated.</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">You can attach \
multiple parts like this:</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp;&nbsp; \
Mail::Message-&gt;build(attach =&gt; \@bodyparts);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">or</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp;&nbsp; \
Mail::Message-&gt;build(attach =&gt; $parts[0], attach =&gt; \
$parts[1]);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">When you \
specify a file-name, the mime-type and such are automatically</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">detected (as \
long as you have the filename-extensions right).</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">If you want \
complex things, you need to do it in steps, for instance:</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; my $p1 = \
Mail::Message::Body-&gt;new(data =&gt; \@lines);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; \
...</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; my \
$b&nbsp; = Mail::Message::Body::Multipart-&gt;new(parts =&gt; [$p1, \
...]);</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; my \
$m&nbsp; = Mail::Message-&gt;build(attach =&gt; $b); # multipart attached to \
msg</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">or</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp; my \
$m&nbsp; = Mail::Message-&gt;buildFromBody($b);&nbsp;&nbsp; # multipart == \
msg</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&gt; I'm \
looking to do something of the following nature. </FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp; foreach $body (@bodyParts)</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp; {</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $message-attachFile(); or \
</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
$message-attachText();</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">&nbsp;my $r = \
$body-&gt;attach(file =&gt; 'a.pgp');</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">Called on a \
multipart body, one part within the multipart will be added (and</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">$r == $body), \
otherwise $r will be a multipart.</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" FACE="Verdana">-- \
</FONT></SPAN></P>

<P ALIGN=LEFT><SPAN LANG="en-us"><FONT COLOR="#800000" \
FACE="Verdana">&nbsp;&nbsp;&nbsp; MarkOv</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN \
LANG="en-us"></SPAN></P>

</BODY>
</HTML>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic