4

重複の可能性:
実際のフレームワークなしで Zend Framework コンポーネントを使用しますか?

Zend Framework の Zend_Mail 関数だけが必要ですが、フレームワーク全体のサイズは約 300MB です。ディスクスペースを節約するために、基本と Zend_Mail だけに削減する方法はありますか?

4

2 に答える 2

15

はい、以前に SMTP スタンドアロンで Zend_Mail を使用したことがあります。必要なファイルは次のとおりです。また、sendmail のみを使用したい場合に必要なものまで減らしました。

Sendmail を使用する場合は、それが最も簡単です。依存関係は次のとおりです。

  • Zend/Exception.php
  • Zend/Mail.php
  • Zend/Mime.php
  • Zend/メール/Exception.php
  • Zend/メール/トランスポート/Abstract.php
  • Zend/メール/トランスポート/Exception.php
  • Zend/メール/トランスポート/Sendmail.php
  • Zend/Mime/Exception.php
  • Zend/Mime/Message.php
  • Zend/Mime/Part.php

これらのファイルの使用例を次に示します。

<?php
// optionally
// set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/Zend');

require_once 'Zend/Mail.php';
require_once 'Zend/Mail/Transport/Sendmail.php';

$transport = new Zend_Mail_Transport_Sendmail();

$mail = new Zend_Mail();
$mail->addTo('user@domain')
     ->setSubject('Mail Test')
     ->setBodyText("Hello,\nThis is a Zend Mail message...\n")
     ->setFrom('sender@domain');

try {
    $mail->send($transport);
    echo "Message sent!<br />\n";
} catch (Exception $ex) {
    echo "Failed to send mail! " . $ex->getMessage() . "<br />\n";
}

SMTP が必要な場合は、さらにいくつかの依存関係を含める必要があります。上記に加えて、少なくとも次のものが必要です。

  • Zend/Loader.php
  • Zend/Registry.php
  • Zend/Validate.php
  • Zend/メール/プロトコル/Abstract.php
  • Zend/メール/プロトコル/Smtp.php
  • Zend/メール/トランスポート/Smtp.php
  • Zend/検証/Abstract.php
  • Zend/Validate/Hostname.php
  • Zend/検証/Interface.php
  • Zend/検証/Ip.php
  • Zend/検証/ホスト名/*
  • Zend/メール/プロトコル/SMTP/認証/*

次に、次のようなことができます。

<?php

require_once 'Zend/Mail.php';
require_once 'Zend/Mail/Transport/Smtp.php';

$config    = array(//'ssl' => 'tls',
                   'port' => '25', //465',
                   'auth' => 'login',
                   'username' => 'user',
                   'password' => 'password');

$transport = new Zend_Mail_Transport_Smtp('smtp.example.com', $config);

$mail = new Zend_Mail();
$mail->addTo('user@domain')
     ->setSubject('Mail Test')
     ->setBodyText("Hello,\nThis is a Zend Mail message...\n")
     ->setFrom('sender@domain');

try {
    $mail->send($transport);
    echo "Message sent!<br />\n";
} catch (Exception $ex) {
    echo "Failed to send mail! " . $ex->getMessage() . "<br />\n";
}
于 2012-02-14T19:24:54.557 に答える