[perl] mail attachments

Pagina: 1
Acties:

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Ondanks de vele posts over mailattachments, kom ik er nog steeds niet uit. Ik wil in perl een simpel plaatje aan de verzonden mail toevoegen.

ben met mime aant proberen en enkele scripts, maar zie echt door de bomen het bos niet meer.
zou het hiermee moeten lukken? :
code:
1
2
3
Content-Type: text/plain; name="message.txt"; charset=US-ASCII
Content-Disposition: inline; filename="message.txt"
Content-Transfer-Encoding: 7bit

Verwijderd

Nee.

Je moet een bericht maken met MIME boundaries met wat headers en het plaatje kan je het beste base64 encoded in zo'n boundary plakken.

Maar deze informatie is hier echt beschikbaar hoor. Kijk maar eens goed met de search.

En als je het echt wil weten ook eens in rfc 2045, 2046, etc.

Verwijderd

Attachments versturen is met de Mail::Sender module erg makkelijk.

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Op vrijdag 10 mei 2002 14:47 schreef Zef het volgende:
Attachments versturen is met de Mail::Sender module erg makkelijk.
hoe wat waar te vinden

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Op vrijdag 10 mei 2002 14:41 schreef lnfinitive het volgende:
rfc 2045, 2046, etc.
kun je me ff uitleggen wat je hiermee bedoelt

Verwijderd

Op vrijdag 10 mei 2002 14:57 schreef Vinzzz het volgende:

[..]

hoe wat waar te vinden
Voor al uw Module problemen: CPAN

  • _DeWie_
  • Registratie: November 2001
  • Laatst online: 10-04 16:23
Toevallig net uitgezocht
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 $SMTP->datasend("MIME-Version: 1.0\r\n");
     29 $SMTP->datasend("Content-Type: multipart/alternative;\r\n");
     30 $SMTP->datasend("     boundary=\"--=_MimePart_ACA1C71D\"\r\n");
     31 $SMTP->datasend("Message-Id: <20020506144614.79B72D3D1\@cougar.veritate.net>\r\n\r\n");
     32 $SMTP->datasend("----=_MimePart_ACA1C71D\r\n");
     33 $SMTP->datasend("Content-Type: text/plain; charset=\"iso-8859-1\"\r\n");
     34 $SMTP->datasend("Content-Transfer-Encoding: quoted-printable\r\n\r\n");
     35 $SMTP->datasend("Dit is de textversie \r\n\r\n");
     36
     37
     38 $SMTP->datasend("----=_MimePart_ACA1C71D\r\n");
     39 $SMTP->datasend("Content-Type: multipart/related;\r\n");
     40 $SMTP->datasend("     boundary=\"--=_MimePart_7C03E103\";\r\n");
     41 $SMTP->datasend("     type=\"text/html\"\r\n\r\n");
     42
     43
     44 $SMTP->datasend("----=_MimePart_7C03E103\r\n");
     45 $SMTP->datasend("Content-Type: text/html; charset=\"iso-8859-1\"\r\n");
     46 $SMTP->datasend("Content-Transfer-Encoding: quoted-printable\r\n\r\n");
     47 $SMTP->datasend("<HTML><HEAD><TITLE>Sapenda | Internet editie</TITLE></HEAD>\r\n");
     48 $SMTP->datasend("<BODY>\r\n");
     49 $SMTP->datasend("<h2> daniel == KING </h2>\r\n");
     50 $SMTP->datasend("<li>daniel == goed </li>\r\n");
     51 $SMTP->datasend("[img]3D\"cid:3556374262\@veritate.com\">\r\n");
[/img]datasend("</BODY>=\r\n");
     53 $SMTP->datasend("</HTML>=\r\n\r\n");
     54
     55 $SMTP->datasend("----=_MimePart_7C03E103\r\n");
     56 $SMTP->datasend("Content-Type: image/gif;\r\n");
     57 $SMTP->datasend("     name=\"internet_kop.gif\"\r\n");
     58 $SMTP->datasend("Content-Transfer-Encoding: base64\r\n");
     59 $SMTP->datasend("Content-ID: <3556374262\@veritate.com>\r\n");
     60 $SMTP->datasend("Content-Disposition: inline\r\n\r\n");
     61
     62
     63 # File inlezen en omzetten naar base64 string $image
     64 open(FILE, "itxl.gif") or die "$!";
     65    while (read(FILE, $buf, 60*57)) {
     66   $image= encode_base64($buf);
     67    }
     68
     69 $SMTP->datasend($image);
     70
     71
     72 $SMTP->datasend("----=_MimePart_7C03E103--\r\n\r\n");
     73 $SMTP->datasend("----=_MimePart_ACA1C71D--\r\n\r\n");

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
Op vrijdag 10 mei 2002 15:18 schreef _DeWie_ het volgende:
Toevallig net uitgezocht
hey, ok, dit kan van pas komen. maar hoe voeg je die dan toe, hoe ziet de complete code er dan uit?

Verwijderd

kun je me ff uitleggen wat je hiermee bedoelt
Op z'n simpelst gezegt: RFCxxxx is een volgnummer van een document waarin een protocol zoals MIME, HTTP, FTP, etc beschreven staat.

In een zoekmachine intikken van zo'n volgnummer brengt je al snel op de juiste pagina.

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
ah ok thx

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 09:41

Pelle

🚴‍♂️

* Pelle gebruikt er MIME::Entity voor.
PHP:
1
<?use MIME::Entity;$top = build MIME::Entity        Type    => "multipart/mixed",        To      => "email\@adres.nl",        From    => "ander.email\@adres.nl",        Subject => "Iets";$type = $query->uploadInfo($file)->{'Content-Type'};attach $top        Path        => "/directory/filename",        Type        => "$type",        Encoding    => "base64";}?>

$type is in dit geval het content-type van een geuploade file, maar dat kun je er natuurlijk ook gewoon handmatig inzetten.

php-tags voor de leesbaarheid

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
erm :? ik moet het in perl doen..maar de mime code is niet zo het probleem, DENK ik...

wat ik verder ermee moet doen, das de vraag.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl
$mailprog = '/usr/sbin/sendmail -i -t';
&send_mailfactuur;

sub send_mailfactuur 
{
open(MAIL,"|$mailprog");

print MAIL "To: $Config{'recipient'}\n"; 
print MAIL "From: $Config{'huidig_email'}\n";
print MAIL "Subject: $Config{'subject'}\n";
print MAIL "Content-type: text/html\n\n";
print MAIL "\n\n"; 
print MAIL " <b>Prive Mail</b><br>\n "; 
print MAIL " <i>Hier komt de mail naar prive te staan</i><br> \n"; 
print MAIL " <font size=3>op naam van</font> <br> $Config{'recipient'} \n"; 
print MAIL "\n\n" ; 
close(MAIL); 
print "Content-type: text/html\n\n"; 
}

heb ik in een .pl staan
als ik op de plaats van content-type die massa van mime plak, werkt het niet ? |:(

Verwijderd

Ik gebruik altijd MIME::Lite, misschien kan je deze sub gebruiken?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
sub email() {
  # $_[0] => TO ADDRESS | $_[1] => SUBJECT | $_[2] => MESSAGE | $_[3] => FROM ADDRESS | $_[4] => REF TO ATTACHMENTS ARRAY

  use MIME::Lite;
  MIME::Lite->send('smtp',"smtp.server.address",Timeout=>60);
    
  $type = 'TEXT';
    
  my $msg;
  my %mail = (To     => $_[0], Subject => $_[1]);
  if($_[3]) { 
    $mail{'From'} = $_[3];
  }
  else {
    $mail{'From'} = 'info@youraddress.nl';
  }
  if(@{$_[4]}) {
    $mail{'Type'} = 'multipart/related';
    $msg = MIME::Lite->new(%mail);
    if(length($_[2]) > 0) {
    $msg->attach(Type=>$type,Data=>$_[2]);
    }
    my %attach;
    foreach(@{$_[4]}) {
    if(-r $_) {
      $attach{'Type'} = 'AUTO';
      $attach{'Path'} = $_;
      $attach{'Disposition'} = 'attachment';
      $msg->attach(%attach);
    }
    }   
  }
  else {
    $mail{'Data'} = $_[2];
    $mail{'Type'} = $type;
    $msg = MIME::Lite->new(%mail);
  }
  $msg->send();
}

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
echt, serieus, hartstikke bedankt dat jullie posten, maar kun je ook erbij zetten wat ik moet editten? ik heb nu alleen smtp server en from verandert in jouw code.

en heb die helemaal gekopieerd in mijn eigen .pl

ga nu es proberen

[edit] dacht het al, zal wel nog code ofzo missen die die sub van jou gebruikt...?

Verwijderd

Op vrijdag 10 mei 2002 15:52 schreef Vinzzz het volgende:
echt, serieus, hartstikke bedankt dat jullie posten, maar kun je ook erbij zetten wat ik moet editten? ik heb nu alleen smtp server en from verandert in jouw code.
Oke, dat was de bedoeling ook idd.
en heb die helemaal gekopieerd in mijn eigen .pl

ga nu es proberen

[edit] dacht het al, zal wel nog code ofzo missen die die sub van jou gebruikt...?
Heb je MIME::Lite al wel geinstalleerd? Deze module kan je eventueel wel op CPAN vinden (www.cpan.org).
Verder heb je niets nodig dacht ik, welke foutmelding krijg je?

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
REF TO ATTACHMENTS ARRAY
zal ik toch ook moeten editten?

Verwijderd

Op vrijdag 10 mei 2002 16:09 schreef Vinzzz het volgende:
REF TO ATTACHMENTS ARRAY
zal ik toch ook moeten editten?
Nee, ik bedoel daarmee dat je een referentie naar een array met daarin het path+bestandsnaam van elke attachment als argument moet meegeven.

dus:
code:
1
2
3
my @attachments = ('/dir1/dir2/filename.pic','/filename.jpg');

email('me@home.nl', 'test', 'test 123', 'him@work.nl', \@attachments);

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
hmm ok, kan nergens vinden waar ie lite.pm heeft geplaatst op de server......vaag!!!

zucht, en dit allemaal om een plaatje mee te sturen |:(

Verwijderd

Op vrijdag 10 mei 2002 16:40 schreef Vinzzz het volgende:
hmm ok, kan nergens vinden waar ie lite.pm heeft geplaatst op de server......vaag!!!

zucht, en dit allemaal om een plaatje mee te sturen |:(
Meestal werkt dit:
gzip -dc module.tar.gz | tar -xof -
perl Makefile.PL; make; make test; make install
Om een CPAN module te installeren.
(ik had de bovenstaande code trouwens nog ff aangepast ;))

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
ja precies gedaan als op cpan staat (install modules) maar vind hem niet, erg vaag, kan het niet zonder mime::lite? maar met de standaard functies?
Pagina: 1