1

私のAmazonSESキー、シークレット+ SMTPアドレスを使用する方法はZend_Mail_Transport_Smtp?それは言う:Must issue a STARTTLS command firstフォローしようとしている間。

  /*
    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('support@memy.com', '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) Amazon SES SMTPインターフェースを使用してEメールを送信するには、以下が必要です。

  • AWSアカウント。

  • 大量のメールを送信する場合は、AmazonSES本番アクセス。詳細については、本番アクセスの要求を参照してください。

    -それをした後、彼らは許可しますsend 10000 emails per 24 hour period

    --これは24時間未満のようにすばやくアクティブになります

    -5メール/秒

  • AmazonSESで確認したメールアドレス。詳細については、「電子メールアドレスの確認」を参照してください。

    -これは彼らによる検証に時間がかかります

    -これはまだ確認されていない24時間後です

  • SMTPインターフェイスのホスト名とポート番号。ホスト名はemail-smtp.us-east-1.amazonaws.comです。ポート番号は接続方法によって異なります。詳細については、SMTPエンドポイントへの接続を参照してください。

    -他に非常に重要です、それは失敗していました

  • AWSマネジメントコンソールから取得したSMTPユーザー名とパスワード。詳細については、SMTPクレデンシャルを参照してください。

  • TLS(Transport Layer Security)を使用して通信できるクライアントソフトウェア。

ステップ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);
4

3 に答える 3

4

最も簡単な方法は、このアドインを使用することだと思います:Amazon-SES-Zend-Mail-Transport。一方、Zend_Mail_Transportを掘り下げれば、自分で書くことができます。

編集

Response: 530 Must issue a STARTTLS command firstこれは、認証する前に安全な接続を有効にする必要があることを意味します。

また、SMTP経由で接続する場合は、 SESSMTPクレデンシャルを使用していることを確認してください。これらのクレデンシャルは、AWSクレデンシャルとは異なります。投稿したコードから、AWSクレデンシャルを使用している可能性があります。

そして、githubで提供されているReadmeを確認してください;)

編集2

これを設定に追加してみてください:

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

編集3

554 Message rejected: Email address is not verifiedアドレスが確認されても表示されます。それが機能しない理由のいくつかのアイデア:

1.)検証されたアドレスでは大文字と小文字が区別されるため、検証したものとは異なる大文字と小文字で使用すると、問題が発生します。これは、RFCの厳密な解釈に帰着します。->これを確認してください

2.)Amazonはadmin@yourdomain.comのような役割ベースのアドレスが好きではないと思います->これをチェックしてください

于 2012-06-15T10:20:56.867 に答える
0

別のフォローアップ。

同じ問題で他の人を助けるために、これを正しく機能させるために私が最近使用した正確な手順を次に示します。

まずこれを使用してください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('destination@example.com', 'Recipient')
    ->setFrom('your.verified.email@gmail.com', 'Webmaster')
    ->setSubject('Email subject line')
    ->setBodyText('Email body')
    ->send($transport);

詳細と考えられるエラーについては、 http ://shakyshane.com/blog/amazon_ses_zend_framework.htmlをご覧ください。

于 2013-03-07T14:16:56.150 に答える
0

「554メッセージが拒否されました:メールアドレスが確認されていません」というメッセージが表示されましたが、/ etc/php.iniを編集すると修正されました。

sendmail_path = / usr / sbin / sendmail -t -i -f some@yourdomain.com

クレジット: http: //www.petermac.com/php-mail-function-with-postfix/

于 2012-12-23T20:04:38.107 に答える