Perl: отправка электронной почты

Если ваша программа работает в системе Linux/Unix, вы можете использоватьsendmailкак инструмент для отправки электронной почты.

Ниже приведён простой пример скрипта для отправки электронной почты:

Пример

#!/usr/bin/perl # Адрес получателя, здесь я указал свой почтовый ящик QQ, вам нужно заменить его на свой почтовый ящик $to = '[email protected]'; # Адрес отправителя $from = '[email protected]'; # Тема $subject = 'Пример руководства: тест отправки электронной почты на Perl'; $message = 'Это письмо, отправленное с помощью Perl.'; open(MAIL, "|/usr/sbin/sendmail -t"); # Заголовок письма print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; # Информация о письме print MAIL $message; close(MAIL); print "Письмо успешно отправлено\n";

При выполнении вышеуказанной программы выводится следующий результат:

Email sent successfully

При обычных обстоятельствах вышеуказанное письмо будет перехвачено почтовым ящиком QQ. Мы можем добавить его в белый список. Чтобы узнать, как это сделать, нажмите:https://kf.qq.com/faq/120322fu63YV130805rYRFzu.html

После добавления его в белый список вы сможете нормально получать письма.

Отправка письма в формате HTML

Мы можем добавитьContent-type: text/html\n, чтобы отправить письмо в формате HTML, следующим образом:

Пример

#!/usr/bin/perl # Адрес получателя, здесь я указал свой почтовый ящик QQ, вам нужно заменить его на свой почтовый ящик $to = '[email protected]'; # Адрес отправителя $from = '[email protected]'; # Тема $subject = 'Пример руководства: тест отправки электронной почты на Perl'; $message = '<h1>Это письмо, отправленное с помощью Perl<h1><p>Здравствуйте, я из Example Tutorial, адрес: http://www.example.com.</p>'; open(MAIL, "|/usr/sbin/sendmail -t"); # Заголовок письма print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-type: text/html\n"; # Информация об электронном письме print MAIL $message; close(MAIL); print "Письмо успешно отправлено\n";

После успешного выполнения просмотрите содержимое письма следующим образом:


Использование модуля MIME::Lite

Если вы используете систему Windows и у вас нет инструмента sendmail, вы можете использовать модуль MIME::Lite из Perl в качестве почтового клиента для отправки писем.

Адрес для скачивания модуля MIME::Lite:MIME-Lite-3.030.tar.gz。

Здесь мы напрямую используем cpan для установки (требуются права root), скачивать не нужно:

$ cpan -i MIME::Lite
……
  /usr/bin/make install  -- OK

После успешной установки давайте продемонстрируем пример:

Пример

#!/usr/bin/perl use MIME::Lite; # Электронная почта получателя, здесь я установил свой почтовый ящик QQ, вам нужно изменить его на свой почтовый ящик $to = '[email protected]'; # Получатели копии, несколько адресов разделяйте запятыми # $cc = '[email protected], [email protected]'; # Электронная почта отправителя $from = '[email protected]'; # Тема $subject = 'Тест отправки электронной почты на Perl от Example Tutorial'; $message = 'Это письмо, отправленное с помощью Perl, с использованием модуля MIME::Lite.'; $msg = MIME::Lite->new( From => $from, To => $to, Cc => $cc, Subject => $subject, Data => $message ); $msg->send; print "Письмо успешно отправлено\n";

После успешного выполнения просмотрите содержимое письма следующим образом:

Отправка письма в формате HTML

Мы можем добавитьContent-type: text/html\n, чтобы отправить письмо в формате HTML, следующим образом:

Пример

#!/usr/bin/perl use MIME::Lite; # Электронная почта получателя, здесь я установил свой почтовый ящик QQ, вам нужно изменить его на свой почтовый ящик $to = '[email protected]'; # Получатели копии, несколько адресов разделяйте запятыми # $cc = '[email protected], [email protected]'; # Электронная почта отправителя $from = '[email protected]'; # Тема $subject = 'Тест отправки электронной почты на Perl от Example Tutorial'; $message = '<h1>Это письмо, отправленное с помощью Perl<h1><p>Используется модуль MIME::Lite.</p><p>От Example Tutorial, адрес: http://www.example.com.</p>'; $msg = MIME::Lite->new( From => $from, To => $to, Cc => $cc, Subject => $subject, Data => $message ); # Добавить информацию заголовка $msg->attr("content-type" => "text/html"); $msg->send; print "Письмо успешно отправлено\n";

После успешного выполнения просмотрите содержимое письма следующим образом:

Отправка электронного письма с вложениями

Пример отправки электронного письма с вложениями выглядит следующим образом:

Пример

#!/usr/bin/perl use MIME::Lite; # Электронная почта получателя, здесь я установил свой почтовый ящик QQ, вам нужно изменить его на свой почтовый ящик $to = '[email protected]'; # Получатели копии, несколько адресов разделяйте запятыми # $cc = '[email protected], [email protected]'; # Электронная почта отправителя $from = '[email protected]'; # Тема $subject = 'Тест отправки электронной почты на Perl от Example Tutorial'; $message = 'Это электронное письмо, отправленное с помощью Perl с использованием модуля MIME::Lite, содержит вложение.'; $msg = MIME::Lite->new( From => $from, To => $to, Cc => $cc, Subject => $subject, Type => 'multipart/mixed' # Маркер вложения ); $msg->attach ( Type => 'TEXT', Data => $message );# Указать информацию о вложении $msg->attach(Type => 'TEXT', Путь => './example.txt', # В текущем каталоге Имя файла => 'example.txt', Размещение => 'вложение' ); $msg->send; print "Письмо успешно отправлено\n";

После успешного выполнения просмотрите содержимое письма следующим образом:

Вы можете добавить несколько вложений, используя несколько $msg->attach.

Другие расширения