Zend_Mail构建邮件送信表单

 
今天写了一段代码,使用Zend_Mail构建邮件送信表单,程序始终运行不成功,我怀疑是我的smtp配置的存在问题,实际运行时
$smtp = new Zend_Mail_Transport_Smtp("smtp.gmail.com",
array(
'port' => '25',
'auth' => 'login',
'username' => 'XXXX@gmail.com',
'password' => 'XXXXX'
));
username,password均使用真实的可用的邮箱,其各位兄弟帮忙看看问题在哪里,3Q
整体代码如下:

<html>
<head>
<title>邮件送信</title>
</head>
<body>
<h1 style="color:white;background-color:#525D76;font-size:22px;">邮件送信Zend_Mail</h1>
<form method="post" action="richmail.php" enctype="multipart/form-data">
<table border="0">
<tr>
<th align="right" valign="top">To: </th>
<td><input type="text" name="to" size="50" /></td>
</tr>
<tr>
<th align="right">邮件名:</th>
<td><input type="text" name="subject" size="50" /></td>
</tr>
<tr>
<th align="right">添加文件:</th>
<td><input type="file" name="fl" size="50" /></td>
</tr>
<tr>
<th align="right">正文:</th>
<td><textarea name="body" cols="50" rows="15"></textarea></td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" name="submit" value="送信" />
<input type="reset" value="中止" />
</td>
</tr>
</table>
</form>
<?php
function encode($str){
return mb_convert_encoding($str, "gb2312","auto");
}
if($_POST['submit'] != null){
require_once 'Zend/Mail.php';
require_once 'Zend/Mail/Transport/Smtp.php';
$smtp = new Zend_Mail_Transport_Smtp("smtp.gmail.com",
array(
'port' => '25',
'auth' => 'login',
'username' => 'XXXX@gmail.com',
'password' => 'XXXXX'
));
Zend_Mail::setDefaultTransport($smtp);

$mail = new Zend_Mail();
$mail->addTo($_POST['to']);
$mail->setForm("Circleinthehouse@gmail.com",encode("田家"));
$mail->setSubject(encode($_POST['subject']));
$mail->setBodyHtml(encode($_POST['body']));
$attach = $mail->createAttachment(file_get_contents($_FILES['fl']['tmp_name']));
$attach->type = $_FILES['fl']['type'];
$attach->filename = $_FILES['fl']['name'];
$mail->send();
print("邮件发送成功!");
}
?>
</body>
</html>
 
 
回复次数: 10<!-- | 浏览次数: 36-->
#1楼 得分:0回复于:2011-01-22 11:08:29
补充:我使用的是zendserver服务器,同时我也把Zend\ZendServer\GUI\library\Zend目录导到项目下了
 
#2楼 得分:0回复于:2011-01-22 11:15:15
试试新头像~
 
  • skyaspnet用户头像
  • skyaspnet
  • (小兴(基础ing.....))
  • 等 级:
  • 2

#3楼 得分:10回复于:2011-01-22 19:50:27
SMTP端口错误,GMAIL的端口并不是25,参考GMAIL官方说明:

配置其他邮件客户端说明

标准说明:

在 Gmail 中启用 POP。操作完成后不要忘记点击保存更改。
将您的客户端配置为与以下设置匹配:
接收邮件 (POP3) 服务器 - 需要 SSL: pop.gmail.com
使用 SSL:是
端口:995
发送邮件 (SMTP) 服务器 - 需要 TLS 或 SSL: smtp.gmail.com(使用身份验证)
使用身份验证:是
TLS/STARTTLS 的端口:587
SSL 的端口:465
帐户名: 您的完整电子邮件地址(包括 @gmail.com 或 @your_domain.com)
电子邮件地址: 您的电子邮件地址(username@gmail.com 或 username@your_domain.com)
密码: 您的 Gmail 密码
 
  • skyaspnet用户头像
  • skyaspnet
  • (小兴(基础ing.....))
  • 等 级:
  • 2

#4楼 得分:0回复于:2011-01-22 19:51:21
发送邮件 (SMTP) 服务器 - 需要 TLS 或 SSL: smtp.gmail.com(使用身份验证)
使用身份验证:是
TLS/STARTTLS 的端口:587


注意SMTP端口为587,而你的代码中使用的是25,应该修改为587
 
  • skyaspnet用户头像
  • skyaspnet
  • (小兴(基础ing.....))
  • 等 级:
  • 2

#5楼 得分:5回复于:2011-01-22 19:51:47
array(
'port' => '25',
'auth' => 'login',
'username' => 'XXXX@gmail.com',
'password' => 'XXXXX'
));


修改为:

PHP code
            
            
array ( ' port ' => ' 587 ' , ' auth ' => ' login ' , ' username ' => ' XXXX@gmail.com ' , ' password ' => ' XXXXX ' ));
 
#6楼 得分:0回复于:2011-01-23 10:28:48
引用 5 楼 skyaspnet 的回复:

array(
'port' => '25',
'auth' => 'login',
'username' => 'XXXX@gmail.com',
'password' => 'XXXXX'
));


修改为:

PHP code

array(
'port' => '587',
'auth' => 'login',
'username' => 'XXXX@gmail.c……

试了一下,依然不好用
 
#7楼 得分:0回复于:2011-01-23 10:39:00
经过测试,发现程序现在卡在此处:

PHP code
            
            
$mail -> setForm( " circleinthehouse@gmail.com " , encode( " 田家 " ));

 
#8楼 得分:0回复于:2011-01-23 10:41:11
引用 3 楼 skyaspnet 的回复:

SMTP端口错误,GMAIL的端口并不是25,参考GMAIL官方说明:

配置其他邮件客户端说明

标准说明:

在 Gmail 中启用 POP。操作完成后不要忘记点击保存更改。
将您的客户端配置为与以下设置匹配:
接收邮件 (POP3) 服务器 - 需要 SSL: pop.gmail.com
使用 SSL:是
端口:995
发送邮件 (SMTP) 服务器 - 需要 TLS……
8
受教了
 
  • ms_X0828用户头像
  • ms_X0828
  • (努力实现自我价值)
  • 等 级:
#9楼 得分:5回复于:2011-01-25 20:44:07
我用的是wamp,我也只是简单的配置了一下ZF.我的php 的smtp扩展也没有开.这个是我发送的代码:
PHP code
            
            
$tr = new Zend_Mail_Transport_Smtp( " smtp.163.com " , array ( ' auth ' => ' login ' , ' username ' => ' aaaa@163.com ' , ' password ' => ' Xaaaaa ' )); // "=?UTF-8?B?".base64_encode('电子邮件标题')."?=") $mail = new Zend_Mail( ' UTF-8 ' ); // $mail->setSubject("=?UTF-8?B?".base64_encode('中国你好中国你好中国你好')."?="); $mail -> setSubject( ' 中国你好中国你好中国你好 ' ); $mail -> setFrom( " 'aaaa@163.com " , ' aaa ' ); $mail -> addTo( " 'aaaa@163.com " , ' aaa ' ); // $mail->addTo("'aaaa@126.com",'aaa'); $mail -> setBodyText( ' Hello World!武汉 ' ); $mail -> setBodyHtml( " 发送带html的邮件<b>我的中国</b><div style='color:red'>红色的字体</div> " ); // 读取图片的内容 $content = file_get_contents ( ' images/upload/bbbbb.gif ' ); // $content = file_get_contents('images/upload/test.txt'); $mail -> createAttachment( $content , ' image/gif ' , Zend_Mime :: DISPOSITION_ATTACHMENT , Zend_Mime :: ENCODING_BASE64 , ' bbbb.gif ' ); // $mail->createAttachment($content,'text/plain',Zend_Mime::DISPOSITION_ATTACHMENT,Zend_Mime::ENCODING_BASE64,'text.txt'); $mail -> send( $tr ); $tr -> __destruct();
 
#10楼 得分:0回复于:2011-08-08 10:55:40
忘记了结贴~ sorry
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值