Email really only deals with the ASCII charset. As a result anything outside of this charset really needs to be base 64 encoded. You are already torturing the mailserver by sending non ascii chars in the body (ie e acute). It may be your CSV contains non ASCII chars and this is causing the mail server to barf.
However, the problem is probably this:
$smtp->datasend("Content-type: multipart/mixed;
boundary=\"frontier\"\n");
# needs to be all on one line or like this:
$smtp->datasend("Content-type: multipart/mixed;
boundary=\"frontier\"\n");
The whitespace before boundary indicates that is the line continuation (it is), but in your code you send it as a header line (it isn't). It does not really explain your symptoms as described, but is wrong and should fail.
As you seem hell bent on rolling your own solution I suggest you base64 encode your CSV and send it as binary. You can just cut and paste the < 30 lines of code from MIME::Base64 encode routine to do this. BTW I would not use just "frontier" as your multipart boundary. "==frontier==", which will become "--==frontier==" would seem a far more improbable boundary.
You can make your code a lot more readable if you use a HEREDOC.
my $body = ....
my $attach = .... # base 64 encoded data
my $a_name = .....
my $email =<<EMAIL;
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==frontier=="
This is a multi-part message in MIME format.
--==frontier==
Content-Transfer-Encoding: binary
Content-Type: text/plain
$body
--==frontier==
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream; name="$a_name"
$attach
--==frontier==--
EMAIL
$smtp->datasend($email)
$smtp->dataend()
$smtp->quit;
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|