Perl - отправка электронной почты
Использование утилиты sendmail
Отправка простого сообщения
Если вы работаете на машине Linux / Unix, вы можете просто использовать sendmailслужебная программа внутри вашей программы Perl для отправки электронной почты. Вот пример сценария, который может отправить электронное письмо на указанный адрес электронной почты. Просто убедитесь, что указан правильный путь для утилиты sendmail. Это может быть другим для вашей машины Linux / Unix.
#!/usr/bin/perl
$to = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';
open(MAIL, "|/usr/sbin/sendmail -t");
# Email Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
# Email Body
print MAIL $message;
close(MAIL);
print "Email Sent Successfully\n";
Фактически, приведенный выше сценарий представляет собой сценарий электронной почты клиента, который будет составлять черновик сообщения электронной почты и отправлять его на сервер, работающий локально на вашем компьютере Linux / Unix. Этот скрипт не будет отвечать за отправку электронной почты фактическому адресату. Таким образом, вы должны убедиться, что почтовый сервер правильно настроен и работает на вашем компьютере, чтобы отправлять электронную почту на указанный адрес электронной почты.
Отправка сообщения HTML
Если вы хотите отправлять электронную почту в формате HTML с помощью sendmail, вам просто нужно добавить Content-type: text/html\n в заголовке письма следующим образом -
#!/usr/bin/perl
$to = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = '<h1>This is test email sent by Perl Script</h1>';
open(MAIL, "|/usr/sbin/sendmail -t");
# Email Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
print MAIL "Content-type: text/html\n";
# Email Body
print MAIL $message;
close(MAIL);
print "Email Sent Successfully\n";
Использование модуля MIME :: Lite
Если вы работаете на компьютере с Windows, у вас не будет доступа к утилите sendmail. Но у вас есть альтернатива написать свой собственный почтовый клиент с использованием модуля Perl MIME: Lite. Вы можете загрузить этот модуль с MIME-Lite-3.01.tar.gz и установить его на свой компьютер под управлением Windows или Linux / Unix. Чтобы установить его, выполните простые шаги -
$tar xvfz MIME-Lite-3.01.tar.gz
$cd MIME-Lite-3.01
$perl Makefile.PL
$make
$make install
Вот и все, и на вашем компьютере будет установлен модуль MIME :: Lite. Теперь вы готовы отправить электронное письмо с помощью простых сценариев, описанных ниже.
Отправка простого сообщения
Теперь ниже приведен сценарий, который позаботится об отправке электронной почты на указанный идентификатор электронной почты.
#!/usr/bin/perl
use MIME::Lite;
$to = '[email protected]';
$cc = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';
$msg = MIME::Lite->new(
From => $from,
To => $to,
Cc => $cc,
Subject => $subject,
Data => $message
);
$msg->send;
print "Email Sent Successfully\n";
Отправка сообщения HTML
Если вы хотите отправлять электронную почту в формате HTML с помощью sendmail, вам просто нужно добавить Content-type: text/html\nв заголовке письма. Ниже приведен сценарий, который позаботится об отправке электронной почты в формате HTML.
#!/usr/bin/perl
use MIME::Lite;
$to = '[email protected]';
$cc = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = '<h1>This is test email sent by Perl Script</h1>';
$msg = MIME::Lite->new(
From => $from,
To => $to,
Cc => $cc,
Subject => $subject,
Data => $message
);
$msg->attr("content-type" => "text/html");
$msg->send;
print "Email Sent Successfully\n";
Отправка вложения
Если вы хотите отправить вложение, то следующий сценарий служит этой цели -
#!/usr/bin/perl
use MIME::Lite;
$to = '[email protected]';
$cc = '[email protected]';
$from = '[email protected]';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';
$msg = MIME::Lite->new(
From => $from,
To => $to,
Cc => $cc,
Subject => $subject,
Type => 'multipart/mixed'
);
# Add your text message.
$msg->attach(Type => 'text',
Data => $message
);
# Specify your file as attachement.
$msg->attach(Type => 'image/gif',
Path => '/tmp/logo.gif',
Filename => 'logo.gif',
Disposition => 'attachment'
);
$msg->send;
print "Email Sent Successfully\n";
Вы можете прикрепить к письму столько файлов, сколько захотите, используя метод attach ().
Использование SMTP-сервера
Если на вашем компьютере не установлен почтовый сервер, вы можете использовать любой другой почтовый сервер, доступный в удаленном месте. Но для использования любого другого почтового сервера вам потребуется идентификатор, его пароль, URL-адрес и т. Д. Когда у вас есть вся необходимая информация, вам просто нужно предоставить эту информацию вsend() метод следующим образом -
$msg->send('smtp', "smtp.myisp.net", AuthUser=>"id", AuthPass=>"password" );
Вы можете связаться с администратором своего почтового сервера, чтобы получить использованную выше информацию, и если идентификатор пользователя и пароль еще не доступны, ваш администратор может создать их за считанные минуты.