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 을 실행하여 메일을 작성한 후 발송해본다.
Comments