标签: zend-mail

如何在Zend Framework中制作电子邮件模板?

我想在Zend Framework中制作电子邮件模板.

例如,

<html>
<body>
Dear {$username$},<br>
This is a invitation email sent by your {$friend$}.<br>
Regards,<br>
Admin
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想制作这个文件,在Zend框架中获取它,设置这些参数(用户名,朋友),然后发送电子邮件.

我怎样才能做到这一点?Zend支持这个吗?

templates zend-framework zend-mail

64
推荐指数
2
解决办法
2万
查看次数

使用Zend Mail发送邮件时出现问题?

我正在尝试用ZendMail发送一封电子邮件(这个简单的脚本总结了它)

<?php
require_once 'Zend/Mail.php';

$mail = new Zend_Mail();
$mail->setBodyText('My Nice Test Text');
$mail->setBodyHtml('My Nice Test Text');
$mail->setFrom('test@example.com', 'Mr Example');
$mail->addTo('contact@mypage.com', 'Mr Test');
$mail->setSubject('TestSubject');
$mail->send();
?>
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个堆栈跟踪:

Fatal error:
Uncaught exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Sendmail.php:137

Stack trace:
#0 /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Sendmail->_sendMail()
#1 /usr/share/php/libzend-framework-php/Zend/Mail.php(1178): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#2 /var/www/hexreaction/mail/index2.php(11): Zend_Mail->send()
#3 {main} thrown in /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Sendmail.php on line 137
Run Code Online (Sandbox Code Playgroud)

编辑:

我不是试图使用SMTP发送我的电子邮件而且我的问题不那么可怕,但仍然存在问题.

<?php
require_once 'Zend/Mail.php';
$config = array('auth' => 'login',
                'username' => 'contact@mypage.com',
                'password' => 'secretpass');

$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); …
Run Code Online (Sandbox Code Playgroud)

php zend-framework zend-mail

16
推荐指数
1
解决办法
4万
查看次数

php发送的电子邮件中的Message-Id有什么问题

我有一个由php发送到gmail帐户的电子邮件的可疑消息ID标题:

Message-Id: <5100054f.a489440a.5d93.6a70SMTPIN_ADDED_MISSING@mx.google.com>
Run Code Online (Sandbox Code Playgroud)

你能否告诉它是否有这种奇怪的格式以及SMTPIN_ADDED_MISSING在这里的含义?我在互联网上看到的示例包含这样的格式包含发送域,但我的消息ID由于某种原因不包含它:

38D1C1FD-3C35-4568-925C-FC46CAC0DE8A@sendinghost.com
Run Code Online (Sandbox Code Playgroud)

我不认为我在Zend_Mail中设置此标头.什么生成此标题?你看到这个标题有什么问题吗?

php email smtp zend-mail

14
推荐指数
2
解决办法
2万
查看次数

magento没有发出任何邮件,如何调试?

Magento 不发送任何电子邮件,跨国,联系表格给出错误

 cannot send your mail at this moment
Run Code Online (Sandbox Code Playgroud)

我检查了

  • magento中的邮件设置,所有电子邮件帐户都在设置中设置
  • php邮件工作正常test.php与php邮件发送消息
  • 检查了我的邮件服务器日志,但没有看到任何错误
  • /var/log/system.log和exception.log仅显示错误,而不是错误原因

    exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /var/webshop/httpdocs/lib/Zend/Mail/Transport/Sendmail.php:137

php debugging zend-framework magento zend-mail

12
推荐指数
2
解决办法
5万
查看次数

如何在不安装Zend Framework的情况下使用Zend Library

如何在不使用zend框架安装的情况下使用zend库?

我试图使用zend库(Mail和Mime)没有zend框架安装,它没有返回任何错误消息...但对于我的项目我只使用Mail和Mime库,如何使用Zend库而不安装zend框架. .

谢谢,Vinoth S.

php zend-framework zend-mail

11
推荐指数
2
解决办法
1万
查看次数

Zend_Mail与邮件正文中的法语字符

我正在尝试Zend_Mail使用以下代码发送邮件:

 function sendMail() {

     $config = array('auth' => 'login',
                'username' => 'UserName',
                'password' => 'Password',
                'port'=>'27');    

    $mail = new Zend_Mail(); 

    $mail->setBodyText($mailBody);

    $mail->setFrom('example@host.com', 'The Company Name');
    $mail->addTo('example@host.com', 'Recipient Name');
    $mail->setSubject('Mail subject');    
    $mail->send(new Zend_Mail_Transport_Smtp('example@server.com', $config));
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是$mailBody有法语字符.例如:

Merci d'avoir passé commande avec Lovre. Voici le récapitulatif de votre commande
Run Code Online (Sandbox Code Playgroud)

当然后查看发送的邮件时,同样的行显示如下:

Merci d'avoir pass? commande avec Lovre. Voici le r?capitulatif de votre commande
Run Code Online (Sandbox Code Playgroud)

口音被问号所取代!我尝试使用编码邮件正文utf8_encode,但问题仍然存在.

注意:使用的文本文件读取正文内容file_get_contents.

php encoding zend-framework zend-mail

10
推荐指数
1
解决办法
5618
查看次数

如何使用Zend_Mail,sendmail和localhost发送电子邮件?

我正在开发一个包含简单电子邮件功能的zend框架应用程序.开发版本正在我的计算机上运行,​​该计算机正在运行Ubuntu.生产版本将在生产服务器上运行.

当我尝试向自己发送测试邮件时,我收到一条例外消息:"无法发送邮件".我不知道这是一个环境问题,还是代码问题.我没有使用交通工具,所以我认为它是默认的Zend_Mail_Transport_Sendmail.这是我的代码:

public function sendtestAction()
{
    $mail = new Zend_Mail();
    $mail->setFrom('test@aol.com', 'Test Email');
    $mail->addTo('my@email.com', 'My Name');
    $mail->setSubject('This is just a test.');
    $mail->setBodyText('This is only a test.');
    $mail->send();
}
Run Code Online (Sandbox Code Playgroud)

更新:我尝试了一种不同的方法,将SMTP传输设置为使用localhost:

transport = new Zend_Mail_Transport_Smtp('localhost');
Zend_Mail::setDefaultTransport($transport); 
Run Code Online (Sandbox Code Playgroud)

这次我得到了一个不同的错误:"拒绝连接"不确定这意味着什么.也许我还没有提出一些建议呢?

更新:我想我没有安装/设置SMTP服务器.本教程让我很容易让SMTP服务器运行起来.现在上面的两个代码示例都有效.

php ubuntu zend-framework sendmail zend-mail

8
推荐指数
1
解决办法
8431
查看次数

发送电子邮件时是否需要换行?

我正在使用Zend_Mail发送电子邮件.很少有文章(如本页第一个例子)建议在邮件正文中包含长行.

问题:

  1. 是否有必要使用wordwrap(),以防任何行超过70个字符?

  2. 这个"70"人物来自哪里?

php email zend-framework word-wrap zend-mail

8
推荐指数
1
解决办法
2372
查看次数

使用Zend_Mail获取邮件源

如何使用Zend_Mail(POP3)获取邮件源(标题,正文,边界 - 所有这些作为纯文本).

它默认返回已解析的部分,我需要原始消息源.

php email pop3 zend-framework zend-mail

8
推荐指数
1
解决办法
1854
查看次数

无法理解为什么Zend_Mail :: addHeader()会删除换行符

(因为这是我的第一个问题,我只想说,我希望它不是特定于Zend的.据我所知,这应该不是问题.虽然我本可以在特定于Zend的论坛上发布它,但我我觉得我至少有可能在这里得到一个好的答案,特别是因为答案可能涉及超越Zend Framework的MIME相关问题.我基本上试图了解我面临的问题是否应被视为ZF错误,或者如果我误解了某些东西或误用了它.)

我一直在使用Zend_Mail来构建一个通过电子邮件分发服务SendGrid发送的MIME消息.他们的平台允许您通过他们的SMTP服务器发送电子邮件,但是当您使用特殊标头(X-SMTPAPI)时,它会提供附加功能,该标头的值是JSON编码的专有参数字符串,这可能会很长.

最终,我传递的标题太长了(我想> 1000个字符),我得到了错误.我很困惑,因为我知道它是通过PHP的本机wordwrap()函数传递之前我将值传递给Zend_Mail :: addHeader(),所以我认为行长度永远不会是一个问题.

事实证明,addHeader()非常刻意地删除换行符,并且没有通过注释进行特别说明.

// In Zend_Mail::addHeader()
$value = $this->_filterOther($value);


// In Zend_Mail::_filterOther()
$rule = array("\r" => '',
              "\n" => '',
              "\t" => '',
);
return strtr($data, $rule);
Run Code Online (Sandbox Code Playgroud)

好吧,这一开始似乎很合理 - 也许ZF希望完全控制格式和换行.Zend_Mail :: addHeader()中调用的下一个方法是

$value = $this->_encodeHeader($value);
Run Code Online (Sandbox Code Playgroud)

此方法对值进行编码(根据需要使用quoted-printable或base64)并将其块化为适当长度的行,但当它包含"不可打印的字符"时,由Zend_Mime :: isPrintable($ value)确定.

考虑到该方法,换行符(\n)确实被认为是不可打印的字符!因此,如果只是在前一个方法调用中没有将它们从字符串中剥离出来,那么长标题将被编码为QP并被分成72个字符行,并且一切都会正常工作.事实上,我做了一个测试,在那里我注释掉了对_filterOther()的调用,并且长标头被编码并且没有任何问题.但是现在我刚刚对ZF进行了粗心的破解而没有真正理解我删除的那条线背后的目的,所以这不是一个长期的解决方案.

我的中期解决方案是扩展Zend_Mail并创建一个新方法addHeaderForceEncode(),它始终对头的值进行编码,因此总是将其分成短线.但我仍然不满意,因为我不明白为什么首先需要_filterOther()调用 - 也许我根本不应该解决它.

任何人都可以向我解释为什么这种行为存在剥离换行符的问题?如果标题不包含除换行符之外的任何"不可打印的字符",它似乎不可避免地导致标题可能变得太长的情况.

我在这个主题上做了很多不同的搜索,并查看了一些ZF错误报告,但没有看到有人在谈论这个.令人惊讶的是,这似乎是一个非常模糊的问题.仅供参考我正在使用ZF 1.11.11.


更新:如果有人想跟随ZF问题,我打开了这个,这里是:Zend_Mail :: addHeader()解开长标题,然后抛出异常

php mime zend-framework smtp zend-mail

8
推荐指数
1
解决办法
877
查看次数