﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Веб-программирование / Perl  / Проблема с отправкой аттача / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Sat, 22 Nov 2008 20:16:03 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Проблема с отправкой аттача</title><link>http://www.relib.com/forums/Topic904797-18-1.aspx</link><description>Файл исходный и полученный после отправки, различаются на 1 байт, куда мог потерятся, может что с чтением в буфер не то?</description><pubDate>Mon, 25 Sep 2006 17:03:45 GMT</pubDate><dc:creator>alex-chem</dc:creator></item><item><title>Проблема с отправкой аттача</title><link>http://www.relib.com/forums/Topic904797-18-1.aspx</link><description>А проблема в том что иногда, подчеркиваю не постоянно, архив в полученном письме имеет CRC = 00000000, вобщем ноль, что распознается как запорченный архив, и файлы извлеч нельзя :(. Привожу код который формирует письмо с аттачем:&lt;/P&gt;&lt;P&gt;[quote]&lt;/P&gt;&lt;P&gt;$smtp = Net::SMTP-&amp;gt;new($smtp_ip, Timeout =&amp;gt; 30, Debug =&amp;gt; 1 ) or die "Couldn't connect to server: $!" ;&lt;BR&gt;   &lt;BR&gt; $smtp-&amp;gt;mail($from_address);  &lt;BR&gt;$smtp-&amp;gt;data();&lt;/P&gt;&lt;P&gt;$smtp-&amp;gt;datasend("From: $from_address");&lt;BR&gt;$smtp-&amp;gt;datasend("To: $to_address");&lt;BR&gt;$smtp-&amp;gt;datasend("Subject: ".$subj."");&lt;BR&gt;$smtp-&amp;gt;datasend("Mime-Version: 1.0");&lt;/P&gt;&lt;P&gt;&lt;BR&gt;$smtp-&amp;gt;datasend("X-Mailer: MyMail v1b");&lt;BR&gt;$smtp-&amp;gt;datasend("");&lt;BR&gt;$smtp-&amp;gt;datasend("Content-Transfer-Encoding: 8bit");&lt;BR&gt;$smtp-&amp;gt;datasend("");&lt;/P&gt;&lt;P&gt;if (length($attachname) &amp;gt; 3) &lt;BR&gt;  {#если имеется этач&lt;BR&gt;   $smtp-&amp;gt;datasend("Content-Type: multipart/mixed; boundary=\"MyBoundary\"");&lt;BR&gt;   &lt;BR&gt;   open (ATTACH, "&amp;lt; $attachdir/$attachname");&lt;BR&gt;   $attach = ATTACH;&lt;BR&gt;  } &lt;BR&gt;else &lt;BR&gt;  { &lt;BR&gt;   $smtp-&amp;gt;datasend("Content-Type: text/plain; charset=Windows-1251");&lt;BR&gt;  }&lt;/P&gt;&lt;P&gt;if ($attach) &lt;BR&gt;  {#если имеется этач&lt;BR&gt;   $smtp-&amp;gt;datasend(" This is a multi-part message in MIME format.");&lt;BR&gt;   $smtp-&amp;gt;datasend("");&lt;BR&gt;   $smtp-&amp;gt;datasend("--MyBoundary"); #разделитель - определен в начале&lt;BR&gt;   $smtp-&amp;gt;datasend(" Content-Type: text\/plain");&lt;BR&gt;  }&lt;/P&gt;&lt;P&gt;$smtp-&amp;gt;datasend(" $mess"); #тут тело письма&lt;/P&gt;&lt;P&gt;if ($attach) &lt;BR&gt;  { # а тут этачмент &lt;BR&gt;   $smtp-&amp;gt;datasend("");&lt;BR&gt;   $smtp-&amp;gt;datasend("--MyBoundary"); #разделитель - определен в начале &lt;BR&gt;   $smtp-&amp;gt;datasend("");&lt;BR&gt;   $smtp-&amp;gt;datasend("Content-Type: application/octet-stream; name=\"$attachname\""); &lt;BR&gt;   $smtp-&amp;gt;datasend("");&lt;BR&gt;   $smtp-&amp;gt;datasend("Content-Disposition: attachment; filename=\"$attachname\""); &lt;BR&gt;   $smtp-&amp;gt;datasend("");&lt;BR&gt;   $smtp-&amp;gt;datasend("Content-Transfer-Encoding: base64"); &lt;/P&gt;&lt;P&gt;   $smtp-&amp;gt;datasend("");&lt;BR&gt;   $smtp-&amp;gt;datasend("--MyBoundary");&lt;BR&gt;   $smtp-&amp;gt;datasend("");&lt;/P&gt;&lt;P&gt;   while (read($attach, $buf, 60*57)) &lt;BR&gt;      { &lt;BR&gt;        $smtp-&amp;gt;datasend(encode_base64($buf)); &lt;BR&gt;      } &lt;/P&gt;&lt;P&gt;   $smtp-&amp;gt;datasend("--MyBoundary--");&lt;BR&gt;  &lt;BR&gt;  }&lt;/P&gt;&lt;P&gt;$smtp-&amp;gt;dataend();&lt;BR&gt;$smtp-&amp;gt;quit;&lt;/P&gt;&lt;P&gt;[/quote]</description><pubDate>Mon, 25 Sep 2006 12:26:16 GMT</pubDate><dc:creator>alex-chem</dc:creator></item></channel></rss>