Отправка электронной почты с помощью Perl без установленного sendmail и без почтовых модулей - PullRequest
2 голосов
/ 31 января 2011

Я создаю веб-сайт для кемпинга, и мне нужно отправить письмо от Perl.Однако sendmail не установлен на сервере, и это единственные установленные модули Perl:

  • Class :: Accessor
  • Config :: Tiny
  • Math :: Calc :: Units
  • Nagios :: Плагин
  • Params :: Validate
  • Perl 5.8.8
  • TimeDate

Есть ли еще способ отправить по электронной почте форму сценария Perl?


Я уже звонил в веб-хостинговую компанию по этому поводу, но, похоже, они даже не знают, что такое Perl,Не говоря уже о sendmail.Это называет себя компанией веб-хостинга.

Ответы [ 5 ]

13 голосов
/ 31 января 2011

Этот вопрос можно перефразировать в более общем виде: «Как я могу сделать что-то в Perl, для которого требуется модуль, который не установлен в моей системе, и у меня нет корневого контроля над этим блоком, а системные администраторы не могут или выиграли не сотрудничаете? "

В одном предложении лучшим ответом будет «use local :: lib », но вы можете прочитать больше опций в блоге Мэтта Траута «Но я не могу использовать CPAN!» .

8 голосов
/ 31 января 2011

Net :: SMTP является основным модулем и должен быть включен в любую установку Perl.В документации модуля приведен простой пример отправки электронного письма.Используйте «perldoc Net :: SMTP», чтобы увидеть, есть ли он, и посмотреть пример.

4 голосов
/ 31 января 2011

Помимо очевидного ответа («смени хостера»), конечно, вы можете написать SMTP-клиент на голом perl.Самый простой способ сделать это - интегрировать Net::SMTP или, для чего-то более изворотливого, Email::Send в ваш Perl-код.Модули Pure Perl не требуют какого-либо специального процесса установки.Но также нетрудно написать SMTP-клиент с нуля.

Какой бы вариант вы ни выбрали, обязательно добавьте способ повторной попытки через час или около того в случае сбоя.Иначе, ваш сайт попадет в число тех сайтов, которые просто не могут отправлять почту кому-либо, используя greylisting .

2 голосов
/ 31 января 2011

Найти новую хостинговую компанию?Или, по крайней мере, разместить свою электронную почту в другом месте?

Если у вас есть доступ к оболочке, вы сможете установить модуль в локальную папку.За исключением того, что вы можете даже установить «чистый» модуль perl на другой компьютер, а затем скопировать полученный модуль через FTP на хост.

Что касается модуля, который вы должны использовать: MIME :: Lite может отправлять сообщения по SMTP, поэтому sendmail не требуется.Это также все perl (без C-бэкэнда), так что вы, вероятно, сможете это сделать.

Если ничего из вышеперечисленного не работает, вы можете подключиться к SMTP-серверу напрямую, но это довольно сложно, особенно если вы хотите отправлять вложения

1 голос
/ 31 января 2011

Самый простой способ, если вы не можете установить какой-либо другой модуль, - это интегрировать исходный код вашего модуля sendmail в ваш проект, но вы также должны проверить, разрешает ли вам лицензия на это модуль sendmail.

...