블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT/Perl 2008.08.21 13:53

[ Perl ] Perl 로 메일보내기 ... SSMTP 와 MIME::Lite 를 사용해서!


  Perl 로 메일을 보내려면 어떻게 해야할까요?

  저도 몰라서 근처 사는 최선생님께 물어봤습니다.

사용자 삽입 이미지

"메일, 그거 삶아먹으면 되는 거 아닙니까?"


.
.
.
라는 것은 훼이크고...

 Net::SMTP 라든가... CPAN 을 찾아보면 Mail 에 관련된 모듈은 널리고 널렸습니다.

 전 MIME::Lite 를 사용하기 때문에... 이쪽으로만 다루겠습니다. :-)

 사실 Korean Perl Workshop 참가신청을 만들 때, 메일 송신 스크립트 때문에 좀 고단했던 적이 있었습니다.
 메일서버도 없고, 사용할만한 건 Gmail 인데... CPAN 에서 Gmail 에 관련된 메일 송신 모듈이 제대로 동작하지 않는 것도 문제였죠. KPW 자체적인 메일 서버도 가지고 있지 않았구요. 시간은 촉박했고...
  설령 메일서버가 있다고 해도... 메이저 포털로 메일을 보낼 때 잘 안된다고 하는 그런 이슈도 있었구요.

 그때 한줄기 빛이 내려왔는데,, 그것이 SSMTP 라는 것입니다.
 
 SSMTP 가 무엇이냐는 자세한 설명은 여기에서 하지 않겠습니다. 구글해주세요.

 우분투에서 간단하게 SSMTP 패키지를 설치할때는...

sudo apt-get install ssmtp

 로 설치가 가능합니다.

  그리고는 /etc/ssmtp/ssmtp.conf 에 아래의 설정을 넣습니다.

root=your.email@gmail.com
mailhub=smtp.gmail.com:587
useSTARTTLS=YES
AuthUser=your.email@gmail.com
AuthPass=your.password
rewriteDomain=gmail.com
FromLineOverride=YES
hostname=blah

 그래서 메일계정은 gmail 을 사용하기로 하고 위와같이 설정했습니다. Gmail 을 사용하면 어디든지 메일을 보낼 수 있기 때문이었죠. Gmail 을 스팸처리하는 곳은 없을 테니...
  MIME::Lite 모듈이 없으면 설치해주세요.
 
use strict;
use warnings;
use MIME::Lite;

my $msg = MIME::Lite->new(
    'Return-Path' => 'sender.email@gmail.comr',
    'From'        => 'sender.email@gmail.com',
    'To'          => 'receive@email.com',
    'Subject'     => 'saillinux 산 버터, 어떻게 생각하시나요?',
    'Charset'     => 'utf-8',
    'Encoding'    => '8bit',
    'Data'        => '사실 그거 삶아먹으면 괜찮은거 아닙니까?'
    );
$msg->send;

 이렇게 스크립트 하나 만들어서 실행시키면...

사용자 삽입 이미지

 이렇게 메일이 오게됩니다. +_+

 뭐, 파라메터 넘겨서 From ,To 바꾸거나, 제목 바꾸거나... DB 에서 긁어와서 집어넣거나... 혹은 Template 를 사용해서 메일 내용을 꾸미거나... 하는 방법도 있겠죠.

 여러가지 다양한 부수적인 내용은 직접 해보시면 됩니다.
 현재 KPW 사이트에서는 KPW::Mail 이라는 Wrapper 모듈을 만들어 두고 사용하고 있습니다. Template 도 만들어서 Mail 내용등은 완전히 분리시켜두고 말이죠.

  Daum이나 Yahoo 에서는 Subject 가 깨지는 현상도 있다고 하는데요. keedi 님께서 이에 대한 처치방법을 알려주셨네요.
  use MIME::QuotedPrint qw(encode_qp);
  use Encode qw(encode);

 필요한 모듈을 use 해서... Subject 를

...
Subject => '=?UTF8?Q?' . encode_qp(encode('utf-8', "블라블라"), '') .'?=',
...
 
 이런식으로 감싸면 된다는 군요. keedi++

 (SSMTP 는 jachin 님으로부터 줏어들어서 saillinux 님께서 설정해주셨습니다. jachin++, saillinux++)


  :: 이상 IRC #perl-kr 에서 h0ney 님께서 "메일 어케날려요?" 라는 떡밥을 날리셔서 썼습니다.
  :: (떡밥주도 블로그 포스팅 전략!!)

:: 2011/12/29 추기
  최근 코드관련 얘기를 하는 블로그를 따로 만들어서, 위의 내용을 좀 더 보완했습니다.
  http://jeen.github.com/blog/2011/12/29/perl-email-send/ 
신고
Project 2008.03.27 20:16

[PERL] 급조 #2 Me2Day Perl API 만들기...

오늘의 떡밥은 pung96님께서 me2day 친구 신청하신 것으로 시작되었습니다.

떡밥 전문



쿨럭.. 그리고 Twitter는  TwitterPOD같은 멋들어진 어플이 있는데 me2day는 없을까? 라는 질문에...

그딴 거 없다는 이야기를 듣고 실망하며... "그래서 제가 Twitter만 한다니까요" 라는 혼잣말을 덧붙인 뒤에...

aero 님께서 "그럼 만들어라"라고 하심에... pung96님께서 지원사격하고, 하얀_고양이님께서 관망하던 차에..

원래는 하얀_고양이님께 외주 주겠다라고 했었는데... 그냥 삘 받은 김에 만들어보기로 했습니다.

사용자 삽입 이미지

http://codian.springnote.com/pages/425517


(aero님께서 perl API만 없다고....)

일단 기본 토대는 aero 님의 Springnote API 모듈이 있었으니까... 쉽고 쉬운 작업이었습니다.

다만 코드가 좀 아름답지 못할 뿐이었지만...

BEAUTIFUL CODE 상세보기
찰스 페졸드 지음 | 한빛미디어 펴냄
내 생애 가장 아름다운 코드! 38인의 코디 명장이 말하는 『BEAUTIFUL CODE』. 전세계의 유명한 프로그래머 38인으로부터 받은 글을 엄선하여 총33가지의 챕터로 구성했다. 프로그래머들이 소프트웨어 프로젝트 아키텍처를 구축하면서 쌓게 된 프로그래밍 노하우가 고스란히 녹아 있다. 이 책은 탁월한 소프트웨어 설계자로 살아가는 프로그래머들의 눈을 통해 세상을 바라볼 수 있도록 도와준다. 느리지만 우아하며 감동적인

전혀 아름답지 못한 코드가 되어버렸다.

일단은 기본적으로 Me2Day API Spec은 http://codian.springnote.com/pages 에 정의되어 있으니

간단한 작업으로 끝냈다(라는 것은 어차피 Me2Day 사용한 적이 없고, 자세히 모르니까 하는 뻘소리)

사용자 삽입 이미지

이런 식으로 커멘트와 포스트 각각 쓰기가 가능하게 되었다는 것...

일단 Source Repository는 http://code.google.com/p/me2day-perl-api/  에 등록해놨지만...

http://code.google.com/p/me2day-api/
에 자바랑 루비 버젼이 있는 걸 봐서...

이쪽에도 신청해놓을 까 합니다. reject 되면 ㅜ_ㅜ

일단 대충 정돈되고 나면... Shell에서도 가지고 놀 수 있게 되면 왠지 재미있을 지도~ 라고 생각합니다.

Web::Scraper가 셸 명령어를 지원하는 것 처럼...

:^) 그리고 때가 되면... CPAN에도 올려보고 싶...

하악... 아무튼 오늘도 떡밥에 물려서 이렇게 하루를 보내는 군요.


신고
TOTAL 488,013 TODAY 43

티스토리 툴바