나름의 이유로 시스템에서 메일을 보내야할 일이 있는데,

이왕이면 Gmail을 이용해보고 싶어서 살펴보기로 했다.

 

일단 Gmail을 통해 이메일을 보내기 위해서

미리 셋팅을 해줘야 할 것이 있다.

 

 

Gmail의 설정 화면으로 이동한 뒤에

 

 

IMAP 사용 설정을 해주면 된다.

 

 

그런데, Python 코드에서 Gmail 인증 부분을 구현해야 이메일 발송을 할 수 있을텐데,

2가지 방법 중 하나를 선택해야 한다.

 

1. 로그인 PASSWORD
2. 앱 PASSWORD

 

로그인 PASSWORD를 사용하기에는 왠지 찝찝한 느낌이 들기에

앱 PASSWORD를 사용하도록 해보겠다. (보안은 중요하다!!! ^^)

 

 

Google 계정 관리 화면에 일단 들어가보자.

 

 

어?! 그런데, 찾고자 하는 "앱 비밀번호" 부분이 안보인다.

 

 

2단계 인증을 사용한다고 해야 원하는 항목이 등장한다.

2단계 인증을 사용하게 되면 조금 불편할 수도 있지만, 보안을 위한 일이니 감수하자!!! ^____^

 

 

전화 및 인증 기기 등을 잘 확인하면서 진행하면 되는데,

 

 

개인적으로 OTP 앱까지 추가해주는 것을 추천한다.

 

자~ 이제, "앱 비밀번호" 항목을 볼 수 있다.

 

 

우리 입맛에 맞게 생성 진행하면 된다.

 

 

그러면 16 digit을 만들어 준다.

 

 

저 비밀번호는 다시 안알려준다. 미리 잘 기억/기록 해야 한다.

 

 

자~ 이제 Gmail에서 준비할 것은 모두 끝났다.

이제 Python 코딩을 시작해보자.

 

 
  #!/usr/bin/env python3
  """
  Send email via Gmail SMTP
  """

  __author__ = "whatwant"
  __version__ = "0.1.0"
  __license__ = "BEER-WARE"

  import smtplib
  from email.mime.text import MIMEText
  from email.mime.multipart import MIMEMultipart

  def send_email(sender_email, receiver_email, app_password, subject, text, html):
      message = MIMEMultipart("alternative")
      message["Subject"] = subject
      message["From"] = sender_email
      message["To"] = receiver_email

      part1 = MIMEText(text, "plain")
      part2 = MIMEText(html, "html")

      message.attach(part1)
      message.attach(part2)

      with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
          server.login(sender_email, app_password)
          server.sendmail(sender_email, receiver_email, message.as_string())

  if __name__ == "__main__":
      sender_email = "whatwant@whatwant.com"
      receiver_email = "whatwant@gmail.com"
      app_password = "xxx"
 
      subject = "This is a lucky email from Python"
      text = "whatwant is a good man."
      html = f"<html><body><p>{text}</p></body></html>"
 
      send_email(sender_email, receiver_email, app_password, subject, text, html)

 

여전히 예쁘지 않은 코드이지만, 그래도 동작한다!

실행하면 된다.

 

 

메일이 잘 도착했다!!!

 

첨부파일까지 보내는 것까지 하려고 했는데, 지금 당장은 필요하지 않기에...^^

나중에 필요로 할 때 해보겠다! ^^

 

반응형

GitLab에서는 E-mail을 기반으로 사용자 관리가 이루어진다.

특히 새로운 사용자를 추가할 때 패스워드를 바로 설정하지 않는다.
임시 패스워드를 등록된 이메일 주소로 발송을 해주게 된다.

이 때, GitLab에 smtp 셋팅이 안되어 있으면 난감하다.
그래서 일단 급한대로 Gmail을 smtp로 셋팅하는 방법을 찾아보았다.

물론 Gitlab에서는 친절히 직접 설명을 해주고 있다.
   - https://gist.github.com/xavierjurado/3138813

$ sudo su - git
$ cd /home/git/gitlab/
$ nano ./config/environments/production.rb

다음의 내용을 수정 및 추가하자.

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true

  config.action_mailer.smtp_settings = {
     :address              => "smtp.gmail.com",
     :port                 => 587,
     :domain               => 'gmail.com',
     :user_name            => 'whatwant@gmail.com',
     :password             => 'xxx',
     :authentication       =>  :plain,
     :enable_starttls_auto => true
  }

발신자 정보도 셋팅을 해야한다.

$ nano ./config/gitlab.yml

    ## Email settings
    # Email address used in the "From" field in mails sent by GitLab
    email_from: whatwant@gmail.com


이제 GitLab만 재시작 하면 된다.

$ exit
$ sudo /etc/init.d/gitlab restart



이렇게 하면 이메일 발송 기능은 잘 동작하지만,
서버 주소 등에 있어서는 집에서 혼자 설치해서 사용하기에 좀 신경써야 하는 점은 귀찮다.

반응형

요즘 계속 꽂혀 있는 Redmine 살펴보기~!!

Redmine과 같은 ALM (혹은 Project Management ?) 도구들에게서 가장 중요한 기능 중의 하나가
바로, 바로 E-mail 기능이다 !!!

여러분들이, 특히 제가 주로 사용하고 있는 Gmail을 활용하는 방법에 대해서 알아보고자 한다!



1. TLS plugin

   - Gmail에서 권장으로 사용되어지는 TLS를 지원하기 위해서는 추가로 plugin을 설치해야 한다.


 $ cd /redmine이 설치된 경로
 $ sudo ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git



2. configuration.yml

   - 환경 설정을 해야한다.


 $ cd /redmine이 설치된 경로
 $ sudo cp ./config/configuration.yml.example ./config/configuration.yml
 $ sudo nano ./config/configuration.yml


production:
  delivery_method: :smtp
  smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "whatwant@whatwant.com"
    password: "passwd"


   - 위 내용을 참조하여 각 상황에 맞게 작성하면 된다.
   - (gmail에서 제공해주는 서비스를 이용하여 @whatwant.com 도메인 서비스 이용중이다 ^^)



3. 테스트 메일 보내기

   - 위 설정이 제대로 되었는지 테스트 메일을 보내보자.

   - redmine에 새로 접속하여 관리자 계정(admin)으로 로그인 하자.


   - [관리]→[설정]→[메일 알림] 들어온 후 오른쪽 제일 밑의 "테스트 메일 보내기"를 클릭하자.


   - 관리자 계정의 이메일 주소로 메일을 보낸 것을 확인할 수 있다.




이메일을 제대로 사용하기 위한 설정 등에 대해서는 나중에 기회가 되면....^^
(귀찮은 것은 전부 나중에 기회가 되면이라는 핑계대기 신공~!!!^^)

반응형

+ Recent posts