为什么phpmailer装了smtp后,仍然不能发送邮件? php配置了mail插件之后不就可以用了么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 回复人: zairwolfi(君子兰) ( ) 信誉:90 是smtp的配置吗?我配了啊...SMTP = 127.0.0.1sendmail_from = [email protected] 不必非得装smtp吧?php配置了mail库就可以了吧。 发邮件有三种方式:一种是使用mail()函数,就是说服务器必须是Linux/Unix,并且装了Sendmail一类的软件,那么直接执行mail()就能发送邮件另一种就是使用SMTP协议来发送邮件,使用PHP的socket来连接远程的smtp服务器来发送邮件.最后一种是发送win32下的邮件.我找段DISCUZ!论坛上的发送邮件代码来举例:它发送邮件有两个文件,一个是mail_config.php,是发送邮件配置文件,另一个是sendmail.php,是具体的发送邮件程序.mail_config.php代码如下://mail_config.php<?php$sendmail_silent = 1; // 屏蔽邮件发送中的全部错误提示(推荐), 1=是, 0=否$mailsend = 1; // 邮件发送方式 0=不发送任何邮件 // 1=通过 PHP 函数及 UNIX sendmail 发送(推荐此方式) // 2=通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证) // 3=通过 PHP 函数 SMTP 发送 Email(仅 win32 下有效, 不支持 ESMTP) // // 可通过 utilities/testmail.php 测试您的系统支持哪种邮件发送方式if($mailsend == 1) { // 通过 PHP 函数及 UNIX sendmail 发信(无需配置)} elseif($mailsend == 2) { // 通过 Discuz! SMTP 模块发信 $mailcfg['server'] = 'smtp.21cn.com'; // SMTP 服务器 $mailcfg['port'] = '25'; // SMTP 端口, 默认不需修改 $mailcfg['auth'] = 1; // 是否需要 AUTH LOGIN 验证, 1=是, 0=否 $mailcfg['from'] = 'Discuz <[email protected]>'; // 发信人地址 (如果需要验证,必须为本服务器地址) $mailcfg['auth_username'] = 'myaccount'; // 验证用户名 $mailcfg['auth_password'] = 'password'; // 验证密码} elseif($mailsend == 3) { // 通过 PHP 函数及 SMTP 服务器发信 $mailcfg['server'] = 'smtp.your.com'; // SMTP 服务器, 以下设置仅对 WIN32 系统有效 $mailcfg['port'] = '25'; // SMTP 端口, 默认不需修改}?>//sendmail.php 文件<?require $discuz_root.'./mail_config.php';@include language('emails');error_reporting($sendmail_silent ? E_CORE_ERROR : E_ERROR | E_WARNING | E_PARSE);if(isset($language[$subject])) { eval("\$subject = \"".$language[$subject]."\";");}if(isset($language[$message])) { eval("\$message = \"".$language[$message]."\";");}$subject = str_replace("\r", '', str_replace("\n", '', $subject));$message = str_replace("\r\n.", " \r\n..", str_replace("\n", "\r\n", str_replace("\r", "\n", str_replace("\r\n", "\n", str_replace("\n\r", "\r", $message)))));if(!$from) { $from = "$bbname <$adminemail>";}if($mailsend == 1) { if(strpos($to, ',')) { mail('Discuz! User <me@localhost>', $subject, $message, "From: $from\r\nBcc: $to"); } else { mail($to, $subject, $message, "From: $from"); }} elseif($mailsend == 2) { $fp = fsockopen($mailcfg['server'], $mailcfg['port'], &$errno, &$errstr, 30); if($mailcfg['auth']) { $from = $mailcfg['from']; fputs($fp, "EHLO discuz \r\n"); fputs($fp, "AUTH LOGIN \r\n"); fputs($fp, base64_encode($mailcfg['auth_username'])." \r\n"); fputs($fp, base64_encode($mailcfg['auth_password'])." \r\n"); } else { fputs($fp, "HELO discuz \r\n"); } fputs($fp, "MAIL FROM: $from\r\n"); foreach(explode(',', $to) as $touser) { $touser = trim($touser); if($touser) { fputs($fp, "RCPT TO: $touser\r\n"); } } fputs($fp, "DATA\r\n"); $tosend = "From: $mailcfg[from]\r\n"; $tosend .= "To: Discuz Users <[email protected]>\r\n"; $tosend .= 'Subject: '.str_replace("\n", ' ', $subject)."\r\n\r\n$message\r\n.\r\n"; fputs($fp, $tosend); fputs($fp, "QUIT\r\n"); echo nl2br(fread($fp, 10000)); //debug fclose($fp);} elseif($mailsend == 3) { ini_set('SMTP', $mailcfg['server']); ini_set('smtp_port', $mailcfg['port']); ini_set('sendmail_from', $from); foreach(explode(',', $to) as $touser) { $touser = trim($touser); if($touser) { mail($touser, $subject, $message, "From: $from"); } }}error_reporting(E_ERROR | E_WARNING | E_PARSE);?>你仔细阅读上面的代码,就会明白了.... php的变量范围 php插入数据的问题 弱弱 的问个php+mysql的问题 AJAX文檔 冰天雪地滚三圈,打个筋斗跪地求一程序php分页 xajax问题 在注册函数里面由ID得到文本框的值 在网页中插入图片的问题。高手帮忙!急!谢! 在php中如何用exec()函数运行tar -xvcf命令 请问谁有实现邮箱左侧树状结构显示的源码或者设计思想?(像eyou,163那样的)急用!在线等待 返回空白页 请问一下,阿信的xtree能否使用在php+mysql开发的环境中 请帮忙给个思路,关于分级目录
一种是使用mail()函数,就是说服务器必须是Linux/Unix,并且装了Sendmail一类的软件,那么直接执行mail()就能发送邮件
另一种就是使用SMTP协议来发送邮件,使用PHP的socket来连接远程的smtp服务器来发送邮件.
最后一种是发送win32下的邮件.
我找段DISCUZ!论坛上的发送邮件代码来举例:
它发送邮件有两个文件,一个是mail_config.php,是发送邮件配置文件,另一个是sendmail.php,是具体的发送邮件程序.
mail_config.php代码如下:
//mail_config.php<?php$sendmail_silent = 1; // 屏蔽邮件发送中的全部错误提示(推荐), 1=是, 0=否
$mailsend = 1; // 邮件发送方式 0=不发送任何邮件
// 1=通过 PHP 函数及 UNIX sendmail 发送(推荐此方式)
// 2=通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)
// 3=通过 PHP 函数 SMTP 发送 Email(仅 win32 下有效, 不支持 ESMTP)
//
// 可通过 utilities/testmail.php 测试您的系统支持哪种邮件发送方式if($mailsend == 1) { // 通过 PHP 函数及 UNIX sendmail 发信(无需配置)} elseif($mailsend == 2) { // 通过 Discuz! SMTP 模块发信 $mailcfg['server'] = 'smtp.21cn.com'; // SMTP 服务器
$mailcfg['port'] = '25'; // SMTP 端口, 默认不需修改
$mailcfg['auth'] = 1; // 是否需要 AUTH LOGIN 验证, 1=是, 0=否
$mailcfg['from'] = 'Discuz <[email protected]>'; // 发信人地址 (如果需要验证,必须为本服务器地址)
$mailcfg['auth_username'] = 'myaccount'; // 验证用户名
$mailcfg['auth_password'] = 'password'; // 验证密码} elseif($mailsend == 3) { // 通过 PHP 函数及 SMTP 服务器发信 $mailcfg['server'] = 'smtp.your.com'; // SMTP 服务器, 以下设置仅对 WIN32 系统有效
$mailcfg['port'] = '25'; // SMTP 端口, 默认不需修改}?>
//sendmail.php 文件<?
require $discuz_root.'./mail_config.php';
@include language('emails');error_reporting($sendmail_silent ? E_CORE_ERROR : E_ERROR | E_WARNING | E_PARSE);if(isset($language[$subject])) {
eval("\$subject = \"".$language[$subject]."\";");
}
if(isset($language[$message])) {
eval("\$message = \"".$language[$message]."\";");
}$subject = str_replace("\r", '', str_replace("\n", '', $subject));
$message = str_replace("\r\n.", " \r\n..", str_replace("\n", "\r\n", str_replace("\r", "\n", str_replace("\r\n", "\n", str_replace("\n\r", "\r", $message)))));if(!$from) {
$from = "$bbname <$adminemail>";
}if($mailsend == 1) { if(strpos($to, ',')) {
mail('Discuz! User <me@localhost>', $subject, $message, "From: $from\r\nBcc: $to");
} else {
mail($to, $subject, $message, "From: $from");
}} elseif($mailsend == 2) { $fp = fsockopen($mailcfg['server'], $mailcfg['port'], &$errno, &$errstr, 30);
if($mailcfg['auth']) {
$from = $mailcfg['from'];
fputs($fp, "EHLO discuz \r\n");
fputs($fp, "AUTH LOGIN \r\n");
fputs($fp, base64_encode($mailcfg['auth_username'])." \r\n");
fputs($fp, base64_encode($mailcfg['auth_password'])." \r\n");
} else {
fputs($fp, "HELO discuz \r\n");
} fputs($fp, "MAIL FROM: $from\r\n"); foreach(explode(',', $to) as $touser) {
$touser = trim($touser);
if($touser) {
fputs($fp, "RCPT TO: $touser\r\n");
}
} fputs($fp, "DATA\r\n");
$tosend = "From: $mailcfg[from]\r\n";
$tosend .= "To: Discuz Users <[email protected]>\r\n";
$tosend .= 'Subject: '.str_replace("\n", ' ', $subject)."\r\n\r\n$message\r\n.\r\n";
fputs($fp, $tosend); fputs($fp, "QUIT\r\n");
echo nl2br(fread($fp, 10000)); //debug
fclose($fp);} elseif($mailsend == 3) { ini_set('SMTP', $mailcfg['server']);
ini_set('smtp_port', $mailcfg['port']);
ini_set('sendmail_from', $from); foreach(explode(',', $to) as $touser) {
$touser = trim($touser);
if($touser) {
mail($touser, $subject, $message, "From: $from");
}
}}error_reporting(E_ERROR | E_WARNING | E_PARSE);?>
你仔细阅读上面的代码,就会明白了....