2012-06-15 1 views
1

Zend_Mail_Transport_Smtp에 Amazon SES key, secret + smtp 주소를 사용하는 방법은 무엇입니까? 그것은 말합니다 : Must issue a STARTTLS command first 다음을 시도하는 동안.Zend_Mail_Transport_Smtp 어댑터에 Amazon SES key, secret + smtp 주소를 사용하는 방법은 무엇입니까?

/* 
    Reference in C#: http://sesblog.amazon.com/ 

    String username = "SMTP-USERNAME"; // Replace with your SMTP username. 
    String password = "SMTP-PASSWORD"; // Replace with your SMTP password. 
    String host = "email-smtp.us-east-1.amazonaws.com"; 
    int port = 25; 

    */ 
    public static function sendEmail($to, $subject, $body) { 
    $config = array(
     'aws_key' => 'yourkey', 
     'aws_secret' => 'yourkeysecret', 
    )); 

    // 
    //echo 0 > /selinux/enforce 
    //$tr = new Zend_Mail_Transport_Smtp('smtp.belgacom.be');// works - for local 
    //$tr = new Zend_Mail_Transport_Smtp('out.telenet.be'); // works - for office 
    // 
    $tr = new Zend_Mail_Transport_Smtp(
         'email-smtp.us-east-1.amazonaws.com'); // DOES not work 
    Zend_Mail::setDefaultTransport($tr); 

    $mail = new Zend_Mail(); 
    $html = self::setupEmail($body); 
    $mail->setBodyHtml($html); 
    $mail->setFrom('[email protected]', 'memy.com'); 
    $mail->addTo($to, 'EXAMPLE'); 
    $mail->setSubject($subject); 
    $mail->send(); 
    } 

후속 :

// Wild guess 
$config = array(
    'aws_key' => 'yourkey', 
    'aws_secret' => 'yourkeysecret', 
)); 
$tr = new Zend_Mail_Transport_Smtp('email-smtp.us-east-1.amazonaws.com', 
            $config); 

최종 후속 : 1) 아마존 SES SMTP 인터페이스를 사용하여 이메일을 보내려면

단계를, 다음이 필요합니다 :

  • AWS 계정.

  • Amazon SES 프로덕션 액세스, 많은 양의 이메일을 보내려는 경우. 자세한 내용은 프로덕션 액세스 요청을 참조하십시오.

    - 그 일을 한 후, 그들은 send 10000 emails per 24 hour period

    수 있습니다 - 당신이 확인한

  • 이메일 주소 제 5 이메일/-이 빠르게 미만 24시간처럼

    을 활성화 Amazon SES가 있습니다. 자세한 내용은 전자 메일 주소 확인을 참조하십시오.

    는 - 그

    에 의해 유효성을 검사하는 동안이 걸립니다 - 이것은 여전히 ​​후 24 때가 아직

  • 는 SMTP 인터페이스의 호스트 이름과 포트 번호

    를 확인하지 않습니다. 호스트 이름은 email-smtp.us-east-1.amazonaws.com입니다. 포트 번호는 연결 방법에 따라 다릅니다. 자세한 내용은 SMTP 끝점에 연결을 참조하십시오.

    - 다른 매우 중요합니다, 당신은 AWS 관리 콘솔에서 얻을

  • 의 SMTP 사용자 이름과 암호를 실패했다. 자세한 내용은 SMTP 자격 증명을 참조하십시오.

  • TLS (전송 계층 보안)를 사용하여 통신 할 수있는 클라이언트 소프트웨어.

2 단계) 나는 그것을 보여줍니다이 관리 콘솔에서, 그 위에했을 : 의미

Status: 
pending verification (resend) 
Please check your inbox for an email to this address, and click on the link provided to complete verification. If you did not receive this email, please click resend. 

Domain verification in AWS: 

Status: 
pending verification (resend) 
Please check your inbox for an email to this address, and click on the link provided to complete verification. If you did not receive this email, please click resend. 

, 그들은 72 시간

3 단계) 내에서 일을 할 것입니다 외부 어댑터를 사용하지 않고 $ config를 수정하십시오 (ZF로 이동하지 않음)

$config = array(
    'auth' => 'login', 
    'username' => 'SES key', 
    'password' => 'SES secret', 
)); 
$tr = new Zend_Mail_Transport_Smtp('email-smtp.us-east-1.amazonaws.com', 
            $config); 

답변

5

가장 쉬운 방법은이 추가 기능과 함께가는 것입니다 : Amazon-SES-Zend-Mail-Transport.반면에 Zend_Mail_Transport를 통해 자신을 파헤 치면 직접 작성할 수 있습니다.

편집

Response: 530 Must issue a STARTTLS command first 당신이 인증 이전에 보안 연결을 사용하도록 설정해야합니다 것을 의미한다.

SMTP를 통해 연결할 때 SES SMTP credentials을 사용하고 있는지 확인하십시오. 이러한 자격 증명은 AWS 자격 증명과 다릅니다. 게시 한 코드에서 AWS 자격 증명을 사용하고있는 것으로 보입니다.

$config = array('ssl' => 'tls','port' => 25); 

EDIT 3

554 Message rejected: Email address is not verified도 나타납니다 귀하의 설정이 추가 2

시도가

EDIT)

그리고 GitHub의에서 제공하는 추가 정보를 확인 주소가 확인되었습니다. 어떤 이유가 작동하지 않는 이유 :

1. 확인 된 주소는 대소 문자를 구분하므로 확인한 것과 다른 경우에 사용하면 문제가 발생할 수 있습니다. 이것은 rfc의 엄격한 해석에 따른다. -> 확인이 내가 [email protected] 처럼 아마존은 역할 기반의 주소처럼 해달라고 생각

2) -> 확인이

+0

조금 모호) 무엇이입니다 정확한 오류가 발생 했습니까? – dom

+1

@YumYumYum 내 편집을 확인하십시오 ... – dom

+0

1)이 http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/SMTP.html?r=9608에 언급 된 모든 작업을 수행했습니다. 2) 지금부터 사용하고 있습니다. SES SMTP 자격 증명을 시작합니다 (AWS 자격 증명 3이 아님). 여전히 제공합니다. 4) 기술적 인 사람들이 수동으로 내 계정의 내용을 수정 한 다음 정품 인증을 받아야합니까? – YumYumYum

1

다른 후속 조치.

다른 사람들이 같은 문제를 겪는 일을 돕기 위해, 제가 올바르게 사용하기 위해 최근에 사용한 정확한 절차는 다음과 같습니다.

사용이 모든 https://github.com/christophervalles/Amazon-SES-Zend-Mail-Transport

의 첫번째 그리고이 : 자세한 내용과 가능한 오류에 대한

$mail = new Zend_Mail('utf-8'); 
$transport = new App_Mail_Transport_AmazonSES(
    array(
     'accessKey' => 'YOUR_ACCESS_KEY', 
     'privateKey' => 'YOUR_PRIVATE_KEY' 
    ) 
); 
$mail->addTo('[email protected]', 'Recipient') 
    ->setFrom('[email protected]', 'Webmaster') 
    ->setSubject('Email subject line') 
    ->setBodyText('Email body') 
    ->send($transport); 

: "그것이 작동하지" http://shakyshane.com/blog/amazon_ses_zend_framework.html

+0

다음 두 가지 이유로 자신의 웹 사이트/제품에 대한 베어 링크가 권장되지 않습니다. 첫째, 답변은 외부 사이트에 대한 단순한 링크가 아닌 자체 포함 답변으로 게시해야합니다. 둘째, 자기 홍보는 여기에서 눈살을 찌푸리게되는 경향이 있으며, 종종 스팸으로 신고됩니다 (특히 자신의 사이트/제품에 연결한다는 공개가없는 경우). –

+0

ZF2에서 어떻게 똑같습니까? – YumYumYum

관련 문제