Как отправить письмо через GMail из программы на Perl?

Раздел: Программирование
Написано: 8.06.2011
Автор: Antonio

В комментариях к статье Как отправить письмо используя Perl ? Или модуль Perl MIME-Lite был задан вопрос — а как собственно применить статью если возникла необходимость отправлять письма не через локальный почтовый сервер с простейшей авторизацией или вообще без нее.

Как отправить письмо из программы написанной на Perl через почтовый ящик GMail?

А особенность отправки — это работа SMTP GMail по 465 порту через SSL.

Итак, приступим — решение есть и я его вам покажу.

Некоторые люди любят изобретать колесо, велосипед и прочее снова и снова, но при программировании на языке Perl сильно не стоит этим увлекаться — практически на любые стандартные необходимости написаны модули и их написано очень много.

Мы облегчим себе жизнь и используем уже придуманное колесо, т.е. модуль для работы с почтой через SSL — Net::SMTP::SSL

Обычно этот модуль на сервере не установлен, если у вас есть доступ (если нет, обратитесь к поддержке), то можно его установить, я приведу пример установки для FreeBSD

cd /usr/ports/mail/p5-Net-SMTP-SSL ; make install clean

чтобы не было вот такого — 530-5.5.1 Authentication Required — сразу установим модуль p5-Authen-SASL

cd /usr/ports/security/p5-Authen-SASL ; make install clean

Дальше разберем работающий пример отправки письма через GMail SMTP SSL

#!/usr/bin/perl
 
# Подключаем модуль
use Net::SMTP::SSL;
 
# Задаем переменные
$from = '[email protected]';
$pass = 'password';
$to = '[email protected]';
$subject = 'Привет!';
$body = 'Я пишу тебе с приветом, рассказать что солнце встало!<br /> Удачного дня!';
 
# Создаем соединение с удаленным сервером, включаем режим отладки (можно не включать)
$smtp = Net::SMTP::SSL->new('smtp.gmail.com',
                             Port => 465,
                             Debug => 1);
# Указываем свой логин (для почты GMail это ваш почтовый ящик) и пароль
$smtp->;auth($from, $pass);
# Создаем письмо, указываем свой ящик
$smtp->;mail($from);
# Указываем получателя
$smtp->to($to);
# Объявляем начало передачи данных
$smtp->data();
# Отправка данных удаленному серверу
$smtp->datasend("From: " . $from . "\n");
$smtp->datasend("To: " . $to . "\n");
$smtp->datasend("Subject: " . $subject . "\n");
# Формат письма задаем html, можем использовать теги
# Скрипт написан в кодировке utf-8, указываем ее
$smtp->datasend("Content-Type: text/html; charset=utf-8\n");
$smtp->datasend("Content-Transfer-Encoding: quoted-printable\n");
$smtp->datasend("\n");
# Передаем собственно сам текст письма
$smtp->datasend($body . "\n");
# Конец отправки данных удаленному серверу
$smtp->dataend();
# Закрываем сокет соединения с сервером
$smtp->quit;

Вот в принципе и все, скрипт успешно отправил мои тестовые письма, они успешно прочитались.

Поделиться с друзьями или в соц.сетях (спасибо)
Ещё похожие заметки:

1 Comment

Аноним
Дек 30, 2011 19:02

*CRAZY* *CRAZY* *CRAZY* *CRAZY* *CRAZY* *CRAZY* *CRAZY* *HELP* *DRINK* @= *YAHOO* *DANCE* *UNKNOWN* *NO* *PARDON* *LOL* *BRAVO* *SORRY* *WASSUP* *OK* *MACHO* *STOP* *TIRED* [:-} ]:-> *JOKINGLY* :-/ >:o :-x :-* :-[ O=) *CRAZY* %) *IN LOVE* :-! =-O :-D :P ;) :( 8) =) *YAHOO* *DANCE* *UNKNOWN* *NO* *PARDON* *LOL* *BRAVO* *SORRY* *WASSUP* *OK* *MACHO* *HELP* @= *DRINK* *THUMBS UP* *ROSE* *KISSING* *STOP* *TIRED* *KISSED* [:-} ]:-> *JOKINGLY* :-/ :-| >:o :-x :-* :-[ O=) *CRAZY* %) *IN LOVE* :-! =-O :-D :P ;) :( 8) =)

 

Написать

Копирование информации с сайта возможно только с указанием прямой ссылки - https://nemcd.com