Windows 환경의 EMACS에서 Gmail SMTP 사용하기

MSMTP를 사용하는 방법

  • MSMTP를 다운로드한 후 적절한 곳에 msmtp.exe 파일을 풀어 놓는다.

  • 압축 파일 내의 Documentation에서 msmtprc-user.txt 파일을 가져와 홈디렉토리에 msmtprc.txt 파일로 저장하고 그 내용을 적절히 편집한다. 대략 다음과 유사하게 수정하면 될 듯...

      • defaults

      • account account1

      • host smtp.gmail.com

      • from MyID@gmail.com

      • auth on

      • port 587

      • tls on

      • tls_certcheck off

      • user MyID@gmail.com

      • password MyPassword

      • logfile c:\msmtplog.txt

      • account default : account1

  • .emacs 파일에 다음 내용을 추가한다.

      • (setq send-mail-function 'sendmail-send-it)

      • (setq sendmail-program "C:/msmtp/msmtp.exe")

      • (setq message-sendmail-extra-arguments '("-a" "account1"))

      • (setq mail-host-address "gmail.com")

      • (setq user-full-name "My Name")

      • (setq user-mail-address "MyID@gmail.com")

  • C-x m 혹은 M-x mail 을 실행하여 메일을 작성한 후 발송해본다.

GNUTLS와 SMTP 사용하는 방법

  • 당연히 GNUTLS가 필요하다. Signal과 관련된 문제로 인해 gnutls-cli.exe 파일에 signal을 보내줄 수 있는 방법이 필요한데, 이 모든 것을 간편하게 처리하려면 Cygwin의 GNUTLS 패키지와 kill.exe 파일을 사용하는 것이 적절한 것 같다.

  • Cygwin을 사용한다고 가정하고 다음의 내용을 .emacs 파일에 추가한다.

      • (if (not (member "C:/cygwin/bin/" exec-path))

      • (setq exec-path (cons "C:/cygwin/bin/" exec-path)))

      • (setq mail-host-address "gmail.com")

      • (setq user-full-name "My Name")

      • (setq user-mail-address "MyID@gmail.com")

      • (setq smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil))

      • smtpmail-smtp-server "smtp.gmail.com"

      • smtpmail-default-smtp-server "smtp.gmail.com"

      • send-mail-function 'smtpmail-send-it

      • message-send-mail-function 'smtpmail-send-it

      • smtpmail-smtp-service 587

      • smtpmail-auth-credentials '(("smtp.gmail.com" 587 "MyID@gmail.com" nil))

      • ;자동 로그인을 사용하려면 아래 부분 주석을 풀고 .authinfo 파일에 적절한 내용을 추가한다.

      • ;smtpmail-auth-credentials (expand-file-name "~/.authinfo")

      • ;디버깅 정보를 상세히 보여주려면 아래 주석을 해제한다.

      • ;smtpmail-debug-info t

      • )

  • 가장 중요한 부분: emacs_root/lisp/gnus/starttls.el 파일을 수정해야 한다. (또는, 관련 함수를 찾아 수정한 다음 그 내용을 .emacs 파일에서 재정의하는 것도 가능하다. 사실 이 방법이 더 편할 수 있다.)

  • 찾아야 할 내용: 아래 코드 내용을 모두 찾아서...

      • (signal-process (process-id process) 'SIGALRM)

  • 바꿀 내용: 아래의 내용으로 바꾸어 준다!!

      • (call-process "c:/cygwin/bin/kill.exe" nil nil nil

      • "-ALRM" (format "%d" (process-id process)))

  • 자동 로그인을 사용하려면 위 .emacs 파일의 설정 내용 중 파란색 부분의 주석을 해제하고, ~/.authinfo 파일을 만든 후 그 내용을 다음과 같이 채운다. 아래 내용은 한 줄로만 구성되어야 하고 끝에 개행 문자가 오지 않아야 한다.

      • machine smtp.gmail.com login MyID@gmail.com password MyPassword

  • C-x m 혹은 M-x mail 을 실행하여 메일을 작성한 후 발송해본다.