[풀버전] php를 사용하여 AmazonSES를 시작합니다(인터넷 응용 프로그램에서 메일을 보내는 데 가장 적합한 기능)

10112 단어 PHPAWSamazonses

AmazonSES란

  • Amazon WebService(AWS)에서 펼쳐진 메일 수신 서비스
  • 중량요금제, 최저요금은 0엔
  • 무료 이용 프레임 중 EC2에서 한 달에 62000건, 한 달에 1000건 접수
  • 어플리케이션 및 전자 잡지 이용자(사용자)에게 자동 메일 발송 등에 유용
  • 사용자가 임시로 등록하거나 시스템에 통지하는 메일 발송
  • 메일과 잡지 동시 발송 등
  • 구축 환경 예

  • Ubutnu14.04
  • PHP5.5.9
  • 우선

  • SES는 현재 EU, 미국 서부, 미국 동부의 3개 구역에서만 사용할 수 있다(사용된 서버는 같은 구역에서 사용하지 않아도 되고 도쿄에서도 사용할 수 있다)
  • 서비스의 도메인이 필요하고 DNS의 설정이 필요하므로 DNS 담당자가 다른 경우 가능한 빨리 설정
  • 원본을 보내거나 수신자에게 보낼 메일 주소가 유용해야 하기 때문에 메일 주소를 작성하여 수신할 수 있는 상태로 만들어 주십시오
  • SES에 송신 기능만 위임하려면 수신만 하도록 설정할 수도 있음
  • 절차.


    서비스 사이트의 도메인 이름 가져오기

  • SES를 이용하려면 신청 도메인
  • 이 필요합니다.
  • 미리 사용하려는 서버는 도메인 이름을 DNS 책임자 또는 이름으로 지정합니다.com 등의 설정 완성
  • SES 사용 도메인 신청

  • AWS 콘솔에서 도메인 요청
  • Verifya New Domain Push

      
  • Domain에 신청하고 싶은 URL이 https://www.sample.com라면 Sample.com)
  • General DKIM Settings, Verify This Domain 확인

      
  • 도메인 승인 레코드 1개, DCIM 레코드 3개를 DNS로 설정



    이미지의 TXT 레코드 1개, CNAME 3개 설정
    CNAME는 Download Record Set as CSV를 통해 확인하시면 편리합니다.
    ※ 참고: TXT, 씨나미 기록이란

      

    AWS에서 인증 메시지 대기

  • 이런 기록이 있다. 기록을 설정하면 AWS가 검출될 때까지 최대 72시간이 걸리지만 내가 설정했을 때 20분 정도 모든 인증이 끝났다
  • 인증이 완료되면 다음 메일을 받을 수 있습니다.
      

  •   

    DKIM의 음반 승인 활성화



    DKIM 열을 확장하려면 도메인 설정 세부 정보 페이지로 이동합니다.
    이 enable를 클릭하여 활성화

    이메일 주소 승인

  • 필드와 마찬가지로 발송원이나 수신자의 메일 주소가 유용한지 판단하기 위해 신청해야 한다
  • 메일의 인증은 매우 간단하다(아래와 같다)
  • 왼쪽 탭에서 이메일 주소 선택
  • Verifly a New Email 주소
  • 를 클릭

    보낸 사람 또는 받는 사람의 메일 주소를 입력하고 "Verify This Email Address"를 클릭합니다.
    입력한 메일 주소에 인증 URL이 기재된 메일 보내기

    전자 메일 주소 활성화


    메일에 기재된 인증 URL을 클릭하여 활성화

    이렇게 역, 메일의 설정이 완성되었습니다

    인증 설정


    이 항목만 SES 작업 권한이 허용되므로 권한을 설정합니다.


    ※ 사용자가 없을 때 제작


    생성 후 사용자 이름 클릭

    정책 첨부 파일


    ※ 방문할 수 있는 서비스, 무엇을 할 수 있는지 구분하기 위한 작업

    정책 선택



    정책 설정 완료

    제작 aws


    액세스 키 및 기밀 키 가져오기


    ※ 이미 알고 계신 분들은 여기를 건너가세요.

    여기서 방문키와 비밀키를 얻을 수 있으니 잘 보관하세요

    서버에 설정

  • 서버에 SSH 로그인
  • 다음 명령을 사용하여 환경 변수를 설정합니다
  • $ aws configure
    
    - 다음 4가지를 순서대로 묻겠으니 아래 샘플을
    AWS Access Key ID [None]: xxxxxxxxxx ←さっき取得したアクセスキー
    AWS Secret Access Key [None]: xxxxxxxxxx ←さっき取得したシークレットキー
    Default region name [None]: us-west-2
    Default output format [None]: json
    
  • 구조 확인은 다음과 같다
  • $ ll ~/.aws
    total 16
    -rw-------  1 xxxxxx  staff   48 10 25 18:47 config
    -rw-------  1 xxxxxx  staff  116 10 25 18:47 credentials
    
    $ cat ~/.aws/config
    [default]
    output = json
    region = us-west-2
    
    $ cat ~/.aws/credentials 
    [default]
    aws_access_key_id = xxxxxxxxxx
    aws_secret_access_key = xxxxxxxxxx
    

    AWS SDK 도입

  • 다양한 방법으로 설치할 수 있으니 아래 사이트를 참조하여 설치하십시오
    http://shirakiya.hatenablog.com/entry/2015/08/11/195558
  • 이번에pera로 설치
  • 드디어 이루어졌습니다.


    샘플 코드

  • 다음 정보를 다시 읽으십시오.
  • YOROZU_AWS_ACCESS_KEY
  • YOROZU_AWS_SECRET_KEY
  • 주제
  • 본문
  • [email protected]
  • [email protected]
  • [email protected]
  • [email protected]
  • <?php
    
    //AWSSDK読み込み
    require_once 'AWSSDKforPHP/aws.phar';
    
    use Aws\Ses\SesClient;
    use Aws\Ses\Exception\SesException;
    use Aws\Common\Enum\Region;
    
    class sendMail {
    
        function send() {
            $aws_access_key = YOROZU_AWS_ACCESS_KEY;    // アクセスキー
            $aws_secret_key = YOROZU_AWS_SECRET_KEY;    // シークレットキー
    
            $source     = mb_encode_mimeheader('送信元のメーラーでの表示名') .'[email protected]';    //送信元アドレス
            $to         = '[email protected]';    //送信元アドレス
            $charset    = 'ISO-2022-JP';   //変換先の文字コード
            $subject    = "件名";
    
            //本文
            $body_text = "本文";
    
            try {
                //アクセスキー、シークレットキー、リージョンを指定しクライアントを生成する
                $client = SesClient::factory(
                        array(
                            'key'       => $aws_access_key,
                            'secret'    => $aws_secret_key,
                            'region'    => Region::OREGON
                            )
                        );
    
                //添付ファイル無しのメールを送信
                $result = $client->sendEmail(array(
                            // Source(送信元)は必須
                            'Source' => $source,
                            // Destination(宛先)は必須
                            'Destination' => array(
                                'ToAddresses' => array($to), // To
                                'CcAddresses' => array("[email protected]", "[email protected]"), // CC(あれば)
                                'BccAddresses' => array(), // BCC(あれば)
                                ),
                            // Message(メッセージ部分)は必須
                            'Message' => array(
                                // Subject(件名)は必須
                                'Subject' => array(
                                    // Data(件名部分データ)は必須
                                    'Data'      => $subject,
                                    'Charset'   => $charset,
                                    ),
                                // Body(本文)は必須
                                'Body' => array(
                                    'Text' => array(
                                        // Data(本文データ)は必須
                                        'Data'      => $body_text,
                                        'Charset'   => $charset,
                                        ),
                                    /* HTMLメールを送る場合
                                       'Html' => array(
                            // Data(HTMLデータ)は必須
                            'Data' => 'HTMLです',
                            'Charset' => $charset,
                            ),
                                     */
                                    ),
                                ),
                                )
                                    );
    
            } catch (SesException $exc) {
                echo $exc->getMessage();
            }
    
        }
    }
    
  • 당연한 일이지만 메일q에 대기열에 쌓이지 않습니다
  • 오류 발생 시 사용자 권한 주위의 설정이 정확한지 확인하십시오(정책이 설정되어 있는지)
  • 최후

  • 어려운 설정이 많지만 설정만 하면 코드가 가벼우므로 추천
  • 제가 처음 하는 거니까 잘못이나 지적이 있으면 댓글로 부드럽게 잘 부탁드립니다
  • 사이트 축소판 그림


    -amazonses.com을 통해 SES DKIM 설정 해제http://kiraba.jp/ses-dkim-setting/
    -AWS SES를 잘 사용하기 위해 해야 할 일http://qiita.com/zaru/items/4be9b55ba807670cf224

    좋은 웹페이지 즐겨찾기