我正在尝试使用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();
?>
但是我得到了这个堆栈跟踪:
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
编辑:
我不是试图使用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);
$mail = new Zend_Mail();
$mail->setBodyText('This is the text of the mail.');
$mail->setFrom('contact@mypage.com', 'Some Sender');
$mail->addTo('contact@mypage.com', 'Some Recipient');
$mail->setSubject('TestSubject');
$mail->send($transport);
?>
这个抛出这个错误,我真的不明白为什么:
Fatal error:
Class 'Zend_Mail_Transport_Smtp' not found in /var/www/hexreaction/mail/index3.php on line 7
编辑2:
这是我最后的工作代码
require_once('Zend/Mail/Transport/Smtp.php');
require_once 'Zend/Mail.php';
$config = array('auth' => 'login',
'username' => 'somemail@mysite.com',
'password' => 'somepass',
'ssl' => 'tls');
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
$mail = new Zend_Mail();
$mail->setBodyText('This is the text of the mail.');
$mail->setFrom('somemail@mysite.com', 'Some Sender');
$mail->addTo('somemail@mysite.com', 'Some Recipient');
$mail->setSubject('TestSubject');
$mail->send($transport);
答案 0 :(得分:16)
正如您在堆栈跟踪中看到的那样Zend_Mail
使用Zend_Mail_Transport_Sendmail
作为传输适配器
因此,请确保系统上正在运行与sendmail兼容的MTA(例如Postfix)。
作为替代方案,您可以使用Zend_Mail_Transport_Smtp传输适配器并使用外部SMTP服务器,如此
$tr = new Zend_Mail_Transport_Smtp('mail.example.com', array(
'auth' => 'login',
'username' => $username,
'password' => $password,
'port' => $port,
));
Zend_Mail::setDefaultTransport($tr);
编辑: 对于你的第二个问题:a
require_once('Zend/Mail/Transport/Smtp.php');
应该有帮助。
答案 1 :(得分:2)
Zend_Mail的另一个好处是可链接,所以你可以这样做:
$mail = new Zend_Mail();
$mail->setBodyText('My Nice Test Text')
->setBodyHtml('My Nice Test Text')
->setFrom('test@example.com', 'Mr Example')
->addTo('contact@mypage.com', 'Mr Test')
->setSubject('TestSubject')
->send();
不确定'可链接'是否是正确的词,但我希望你明白这一点。这只是一个免费提示。本杰明给出了答案(右)
答案 2 :(得分:1)
此外,如果您想使用附件在magento中发送邮件,请查看以下代码段
$config = array(
'ssl' => 'tls',
'auth' => 'login',
'username' => 'hassanalishahzad@gmail.com',
'password' => 'yourPassword'
);
$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
$bodytext = "Please see attachment for customers detail.";
$mail = new Zend_Mail();
$mail->setFrom('noreply@yourdomain.com','Hassan');
$mail->addTo('xyz@yourdomain.com' );
$mail->setSubject('Customers info');
$mail->setBodyText($bodytext);
$file = $mail->createAttachment(file_get_contents($path.$fileName));
$file ->type = 'text/csv';
$file ->disposition = Zend_Mime::DISPOSITION_INLINE;
$file ->encoding = Zend_Mime::ENCODING_BASE64;
$file ->filename = $fileName;
if(!$mail->send($transport)) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
echo "File Completed";exit;
}
答案 3 :(得分:0)
更新的Goles答案需要添加&#39; ssl&#39; =&GT; &#39; tls&#39; 在顶部以避免错误
.slick-slider {
-webkit-user-select: text;
-khtml-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
}
.slick-list.draggable {
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}