Hej!
Håler på att hjälpa en funktionshindrad kille att kunna mejla. Jag skulle behöva kunna skicka det som ligger i urklipp till en viss adress. Är det möjligt att göra via en bat-fil eller något annat script? Finns det något specialprogram som man kan starta med startparametrar (tänket mig något som liknar "mail -to:adress -file:mail.txt")?
/Stefan
Skicka mejl via script XP
Detta kanske kan hjälpa dig på vägen. Mailar inte direkt från urklipp, men kan skicka valda filer via bat kommandon, mm.
http://www.elektroniikka.org/thermometer/bin/sems.zip
http://www.elektroniikka.org/thermometer/bin/sems.zip
Här är ett script i Perl som mailar iväg innehåller i clipboard, förutsatt att det är text:
Kom ihåg att ställa in variablerna för avsändare, mottagare och SMTP-server till korrekta värden.
För att köra det från en dator med Windows, måste du installera ActivePerl, som är gratis och open source.
Här är en direktlänk till senaste versionens (820) MSI-fil, för direkt nertankning:
http://downloads.activestate.com/Active ... 274739.msi
Kod: Markera allt
#!/usr/bin/perl
use strict;
use warnings;
use Win32::Clipboard;
use Net::SMTP;
### Adjust sender, recipient and server.
my $from_address = 'sender@address.net';
my $to_address = 'recipient@address.net';
my $mail_host = 'smtp.server.net';
my $clip = Win32::Clipboard();
my $smtp = Net::SMTP->new($mail_host);
$smtp->mail($from_address);
$smtp->to($to_address);
$smtp->data();
$smtp->datasend("Subject: A message from your friend.");
$smtp->datasend("\n\n");
$smtp->datasend("This is the contents of my clipboard:");
$smtp->datasend("\n\n");
$smtp->datasend($clip->Get());
$smtp->datasend("\n\n");
$smtp->dataend();
$smtp->quit;
För att köra det från en dator med Windows, måste du installera ActivePerl, som är gratis och open source.
Här är en direktlänk till senaste versionens (820) MSI-fil, för direkt nertankning:
http://downloads.activestate.com/Active ... 274739.msi
Jaha, du ville kunna ange email-adressen för mottagare på kommandoraden också, såg inte det förrän nu...
Jag är inte med på varför du vill ange ett filnamn som parameter.
Du säger ju att du vill emaila innehållet i clipboard.
Vill du emaila innehållet i clipboard eller vill du emaila en angiven fil?
Här är en version där du kan ange mottagarens email-adress som parameter på kommandoraden:Varsågod.
Jag är inte med på varför du vill ange ett filnamn som parameter.
Du säger ju att du vill emaila innehållet i clipboard.
Vill du emaila innehållet i clipboard eller vill du emaila en angiven fil?
Här är en version där du kan ange mottagarens email-adress som parameter på kommandoraden:
Kod: Markera allt
#!/usr/bin/perl
use strict;
use warnings;
use Win32::Clipboard;
use Net::SMTP;
### Adjust sender and server.
my $mail_host = 'smtp.server.net';
my $from_address = 'sender@address.net';
my $to_address = shift or usage();
my $clip = Win32::Clipboard();
my $smtp = Net::SMTP->new($mail_host);
$smtp->mail($from_address);
$smtp->to($to_address);
$smtp->data();
$smtp->datasend("Subject: A message from your friend.");
$smtp->datasend("\n\n");
$smtp->datasend("This is the contents of my clipboard:");
$smtp->datasend("\n\n");
$smtp->datasend($clip->Get());
$smtp->datasend("\n\n");
$smtp->dataend();
$smtp->quit;
sub usage {
$0 =~ s{^.+(\\|/)(.+$)}{$2};
print "Email the contents of your clipboard through SMTP-server '$mail_host'.\n\n";
print "Usage: $0 <recipient email-address>\n\n";
print "Example: $0 ", 'someone@hisdomain.net', "\n";
exit;
}
Rå SMTP är inte alltid så bra, om han skulle ha en rad med en ensam punkt mitt i meddelandet, så skulle meddelandet klippa där.
Det är nog bättre att använda MIME för att kapsla in texten, så här ser det ut då:
Det är nog bättre att använda MIME för att kapsla in texten, så här ser det ut då:
Kod: Markera allt
#!/usr/bin/perl
use strict;
use warnings;
use Win32::Clipboard;
use MIME::Lite;
### Adjust sender and server.
my $mail_host = 'smtp.server.net';
my $from_address = 'sender@address.net';
my $to_address = shift or usage();
my $clip = Win32::Clipboard();
my $body = "This is the contents of my clipboard:\n\n" . $clip->Get() . "\n\n";
my $msg = MIME::Lite->new( From => $from_address,
To => $to_address,
Subject => 'A message from your friend.',
Type => 'TEXT',
Data => $body );
MIME::Lite->send('smtp', $mail_host, Timeout=>60);
eval {$msg->send;}; # Wrap send method in eval to catch errors.
if ($@) {
print "Warning! Email-transfer failed!\n";
warn $@;
} else {
print "Message sent.\n";
}
sub usage {
$0 =~ s{^.+(\\|/)(.+$)}{$2};
print "Email the contents of your clipboard through SMTP-server '$mail_host'.\n\n";
print "Usage: $0 <recipient email-address>\n\n";
print "Example: $0 ", 'someone@hisdomain.net', "\n";
exit;
}