将 Zend 框架最小化为 Zend_Mail? [复制]

Posted

技术标签:

【中文标题】将 Zend 框架最小化为 Zend_Mail? [复制]【英文标题】:Minimizing Zend Framework to Zend_Mail? [duplicate] 【发布时间】:2012-03-06 01:12:10 【问题描述】:

可能重复:Use Zend Framework components without the actual framework?

我只需要 Zend Framework 的 Zend_Mail 函数,但整个框架大约有 300MB 大小。有没有办法将其缩减为仅包含基本内容和 Zend_Mail 以节省一些磁盘空间?

【问题讨论】:

没那么大。 Zend 框架有 20-25 MB。 好吧,那我的确实有些问题。我的意思是,我没有选择最小包,因为我不知道 Zend_Mail 是否包含在内,但它仍然显示“295 MB(309,803,141 字节)”。 你为什么不简单地使用 Swift 邮件程序? 据我所知Swift Mailer只能发送邮件,我也需要接收邮件。 ***.com/questions/1402989/… 【参考方案1】:

从这里下载 Zend 最小包。

http://framework.zend.com/releases/ZendFramework-1.11.11/ZendFramework-1.11.11-minimal.zip

它没有那么大。未压缩版本为 23 MB。它有你需要的 Zend_Mail 类。

【讨论】:

谢谢。在页面上找不到有关最小内容的任何信息。虽然 23MB 对于发送和接收邮件的能力来说仍然不算小。 :P 如果您确实需要减少这种情况,请尝试删除一些不需要的类。假设 Zend_Pdf 等。我认为它不会对您的代码造成问题。或者,您可以使用其他一些编写为相互依赖的电子邮件类。【参考方案2】:

是的,我以前使用 Zend_Mail 和 SMTP 独立,这里是我需要的文件。如果您也只想使用 sendmail,我还将其缩减为您需要的。

如果你想使用 Sendmail,那是最简单的。您的依赖项是:

Zend/Exception.php Zend/Mail.php Zend/Mime.php Zend/Mail/Exception.php Zend/Mail/Transport/Abstract.php Zend/Mail/Transport/Exception.php Zend/Mail/Transport/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/Mail/Protocol/Abstract.php Zend/Mail/Protocol/Smtp.php Zend/Mail/Transport/Smtp.php Zend/Validate/Abstract.php Zend/Validate/Hostname.php Zend/Validate/Interface.php Zend/Validate/Ip.php Zend/Validate/主机名/* Zend/邮件/协议/Smtp/Auth/*

然后你可以这样做:

<?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";

【讨论】:

这正是我正在寻找的答案,谢谢!我会投票赞成,但由于我是新手,我不能,因为 @Big-Blue 不用担心,我认为您仍然可以接受它,或者当您的代表更高时再回来查看。如果您还有其他问题,请随时发表评论。我有工作示例,您也可以下载。 ~画了

以上是关于将 Zend 框架最小化为 Zend_Mail? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

application.ini 中的多个 Zend_Mail 配置

在 Zend Framework 2 中使用 Zend_Mail + Zend_Mime 创建 HTML 电子邮件

使用 Zend_Mail 时如何验证邮件是不是已发送?

如何使用 zend_mail 和 zend_mail_storage_imap 将电子邮件移动到不同的文件夹?

Zend_Mail 在邮件正文中带有法语字符

使用 Zend_Mail 获取邮件源