Nowe posty

Autor Wątek: Problem wysyłania maili z załącznikiem  (Przeczytany 4982 razy)

Linuis

  • Gość
Problem wysyłania maili z załącznikiem
« dnia: 2012-01-16, 09:43:17 »
Mam problem z wysyłaniem załączników z Debiana, a mianowicie gdy wysyłam komendą tak jak poniżej:
sudo uuencode plik.pdf plik.pdf | mail -s "Temat" mail@com.pl
to załącznik wyświetla się w outlooku normalnie, czyli jako załącznik, zaś po stronie przeglądarki pojawiają się 'fistaszki' i nie ma załącznika.

Sądzę, ze problem leży po stronie kodowania, lecz nie bardzo wiem jak można byłoby to zmienić.
Może ktoś coś doradzić na temat wysyłania maili z załącznikiem?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3062
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Problem wysyłania maili z załącznikiem
« Odpowiedź #1 dnia: 2012-01-16, 10:28:37 »
Problem stoi w niezrozumieniu zasady działania załączników.

Dodaj sobie w programie pocztowym załącznik do maila, obejrzyj wynikowy plik i porównaj z plikiem wygenerowanym przez Ciebie.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Linuis

  • Gość
Problem wysyłania maili z załącznikiem
« Odpowiedź #2 dnia: 2012-01-17, 08:05:48 »
Cytat: pkraszewski
Dodaj sobie w programie pocztowym załącznik do maila, obejrzyj wynikowy plik i porównaj z plikiem wygenerowanym przez Ciebie.
tzn? możesz bardziej rozwinąć swoją myśl?
ponieważ robiłem już na kilka sposobów i za jednym razem po stronie przeglądarki mam mój załącznik, zaś brak go po stronie outlooka (pojawiają się fistaszki).
No i drugi sposób to oczywiście na odwrót - czyli załącznik widziany po stronie outlooka, brak w przeglądarce.

Dlatego napisałem tego posta w celu jakiejś porady na temat wysyłania załączników

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3062
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Problem wysyłania maili z załącznikiem
« Odpowiedź #3 dnia: 2012-01-17, 09:31:40 »
Ale czy obejrzałeś różnicę w zawartości ("kodzie źródłowym") między mailem z wklejonym zUUENCODowanym plikiem i mailem z dodanym załącznikiem według zasad RFC? Najlepiej w kate/notatniku/wordpadzie/czymkolwiek do plików TXT?

Co rozumiesz przez "po stronie przeglądarki"? Oglądasz maila za pomocą przeglądarki? W sensie plik maila? Tak jak przeglądarką można zobaczyć plik HTML? Czy może w jakimś webmailu pokazują się krzaki?
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

xavery

  • Gość
Problem wysyłania maili z załącznikiem
« Odpowiedź #4 dnia: 2012-01-17, 11:08:21 »
Generalnie uuencode to staroć i nie wszystkie klienty pocztowe muszą potrafić toto odczytać nie mówiąc o przeglądarce (swoją szosą nie mam pojęcia co oznacza "po stronie przeglądarki"). uuencode jest pomocne przy prostym wysyłaniu maili z shell'a ale do wysyłania załączników w większej zgodności z współczesnymi standardami lepiej wykorzystać mime multipart/mixed+base64. No ale z kolei to już nie da się tak łatwo w shell'u":)

ZipoKing

  • Gość
Problem wysyłania maili z załącznikiem
« Odpowiedź #5 dnia: 2012-01-17, 11:16:03 »
Próbowałeś może (i to w mojej opinii będzie najlepsze rozwiązanie) napisać prosty skrypt (w jakimkolwiek języku: PHP, Python, Ruby) który "wyprodukuje" ci odpowiedniego maila?

Linuis

  • Gość
Problem wysyłania maili z załącznikiem
« Odpowiedź #6 dnia: 2012-05-15, 13:30:48 »
Chciałbym odświeżyć temat, gdyż znalazłem na necie taki o to skrypt:

#!/usr/bin/perl

# Akadia AG, Arvenweg 4, CH-3604 Thun                 send_attachment.pl
# ----------------------------------------------------------------------
#
# File:       send_attachment.pl
#
# Autor:      Martin Zahn / 05.01.2003
#
# Purpose:    Email attachments in Perl
#
# Location:   $ORACLE_HOME\\Database
#
# Certified:  Perl 5.6.1, MIME-Lite-2.117 on Cygwin / Windows 2000
# ----------------------------------------------------------------------

use MIME::Lite;
use Net::SMTP;

### Adjust sender, recipient and your SMTP mailhost
my $from_address = 'martin dot zahn at akadia dot ch';
my $to_address = 'martin dot zahn at akadia dot ch';
my $mail_host = 'mailhost.domain.com';

### Adjust subject and body message
my $subject = 'A message with 2 parts ...';
my $message_body = "Here's the attachment file(s) you wanted";

### Adjust the filenames
my $my_file_gif = 'my_file.gif';
my $your_file_gif = 'your_file.gif';
my $my_file_zip = 'my_file.zip';
my $your_file_zip = 'your_file.zip';

### Create the multipart container
$msg = MIME::Lite->new (
  From => $from_address,
  To => $to_address,
  Subject => $subject,
  Type =>'multipart/mixed'
) or die "Error creating multipart container: $!\\n";

### Add the text message part
$msg->attach (
  Type => 'TEXT',
  Data => $message_body
) or die "Error adding the text message part: $!\\n";

### Add the GIF file
$msg->attach (
   Type => 'image/gif',
   Path => $my_file_gif,
   Filename => $your_file_gif,
   Disposition => 'attachment'
) or die "Error adding $file_gif: $!\\n";

### Add the ZIP file
$msg->attach (
   Type => 'application/zip',
   Path => $my_file_zip,
   Filename => $your_file_zip,
   Disposition => 'attachment'
) or die "Error adding $file_zip: $!\\n";

### Send the Message
MIME::Lite->send('smtp', $mail_host, Timeout=>60);
$msg->send;
i swoją pocztę mam na gmailu, to w pole $mail_host wpisuję = 'smtp.gmail.com' i gdy próbuję wysłać maila mam taki błąd:

SMTP mail() command failed:
5.7.0 Must issue a STARTTLS command first. k6sm41718162wiy.7
Czy możecie mi coś poradzić na rozwiazanie tego problemu?

płona

  • Gość
Problem wysyłania maili z załącznikiem
« Odpowiedź #7 dnia: 2012-05-15, 14:59:23 »
Cześć
gmail używa szyfrowania STARTLS, i dodatkowo wymaga autoryzacji przy wysyłaniu poczty. Czyli musisz:
1. Pobrać certyfikat serwera
2. Otworzyć szyfrowaną sesję
3. Zautoryzować się przed wysłaniem wiadomości.
Nie wiem jak zrobić 1, 2 i 3 :-(
Skrypt, który załączyłeś będzie działał tylko z serwerem SMTP typu "open relay" - to w zasadzie tylko w sieciach wewnętrznych można spotkać.
Spróbuj przejrzeć metody perl::net. Jeśli jutro znajdę chwilę, to postaram się to przejrzeć.
Acha, nie jestem pewien metody szyfrowania - nie mam konta na gmailu. Możesz to sprawdzić w pomocy gmaila tam  gdzie jest napisane jak skonfigurować klienta poczty do współpracy z gmailem.

Linuis

  • Gość
Problem wysyłania maili z załącznikiem
« Odpowiedź #8 dnia: 2012-05-15, 16:46:06 »
Cytat: płona
Cześć
gmail używa szyfrowania STARTLS, i dodatkowo wymaga autoryzacji przy wysyłaniu poczty. Czyli musisz:
1. Pobrać certyfikat serwera
2. Otworzyć szyfrowaną sesję
3. Zautoryzować się przed wysłaniem wiadomości.
Nie wiem czy do końca masz rację, ponieważ jak zainstaluję sobie exim4 to tam bez przeszkód wpiszę sobie smtp.gmail.com::587 i odbiór oraz wysyłanie maili działa bez problemu.

ale poczytam jeszcze na necie, czy ta autoryzacja i pobranie certyfikatu serwera jest potrzebne.