7.用邮件发送错误日志

参考网址:

http://php.net/manual/zh/function.error-log.php【可以解决“怎么发送错误日志到邮件”问题】

http://bbs.csdn.net/topics/330204372

【可以解决问题

“Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\AppServ\www\mail.php on line 15”】

http://www.cnblogs.com/58top/archive/2013/01/14/2860092.html

【可以解决  “php发送email (邮件)若干问题总结(成功smtp案例见附件)”问题】



error_log

(PHP 4, PHP 5, PHP 7)

error_log — 发送错误信息到某个地方

说明?

bool error_log
( string $message
[, int $message_type = 0
[, string $destination
[, string $extra_headers
]]] )

把错误信息发送到 web 服务器的错误日志,或者到一个文件里。

参数?

message

应该被记录的错误信息。

message_type

设置错误应该发送到何处。可能的信息类型有以下几个:

error_log() 日志类型
0 message 发送到 PHP 的系统日志,使用
操作系统的日志机制或者一个文件,取决于
error_log 指令设置了什么。
这是个默认的选项。
1 message 发送到参数 destination
设置的邮件地址。
第四个参数 extra_headers 只有在这个类型里才会被用到。
2 不再是一个选项。
3 message 被发送到位置为 destination 的文件里。
字符 message 不会默认被当做新的一行。
4 message 直接发送到 SAPI 的日志处理程序中。
destination

目标。它的含义描述于以上,由
message_type 参数所决定。

extra_headers

额外的头。当 message_type
设置为 1 的时候使用。
该信息类型使用了 mail() 的同一个内置函数。

返回值?

成功时返回 TRUE, 或者在失败时返回 FALSE

注释?

Warning

error_log() 并非二进制安全的。null 字符可能截断 message

Tip

message 不能包含 null 字符。
注意,message 可能会发送到文件、邮件、syslog 等。
所以在调用 error_log() 前需要使用适合的转换/转义函数: base64_encode()rawurlencode()addslashes()

范例?

Example #1 error_log() 范例

<?php
// 如果无法连接到数据库,发送通知到服务器日志
if (!Ora_Logon($username, $password)) {
    error_log("Oracle database not available!", 0);
}

// 如果用尽了 FOO,通过邮件通知管理员
if (!($foo = allocate_new_foo())) {
    error_log("Big trouble, we‘re all out of FOOs!", 1,
               "[email protected]");
}

// 调用 error_log() 的另一种方式:
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
?>





 

 



Warning: mail() [function.mail]: Failed to connect to mailserver at
"localhost" port 25, verify your "SMTP" and "smtp_port" setting in
php.ini or use ini_set() in

问题一

Warning: mail() [function.mail]: Failed to connect to mailserver at
"localhost" port 25, verify your "SMTP" and "smtp_port" setting in
php.ini or use ini_set() in

解决方法:

PHP的Mail函数使用的是SMTP服务发出E-Mail的。也就是说你需要在php.ini里配置好适当的SMTP服务器地址和端口信息。如果你需要在本机上发出E-Mail,即
SMTP = localhost
smtp_port = 25
这样的话,你需要在你自己的本机上配置上SMTP服务才可以。你可以尝试打开IIS的SMTP服务。
问题二

mail(): SMTP server response: 550 5.7.1 Unable to

解决方法:
关键一步:我的电脑->管理->服务和应用程序 ->SMTP虚拟服务器上点击右键,在弹出的属性窗口里进行如下设置:
点击访问选项卡,再点击中继,在弹出的窗口出点击添加,然后选单台计算机,添加IP地址为 127.0.0.1。

这时就可以测试一下了..如果不可以继续往下操作...

还有的网友说要修改php.ini文件,做成如下配 置,但我觉得是没有必要的,我用的默认设置就可以,如果您经过以上设置还不可以发送的话,就再修改一下吧,注意修改后要重启web服务器:
php.ini的设置: 可使用默认选项,不用修改
SMTP = localhost      //默认,不用修改
smtp_port = 25        //默认,不用修改
sendmail_from=你的设定值  //如果不指定,就必须在程序中指定

这样就可以使用mail函数了
<?php
$to = "***@163.com";  //改成自己的邮箱进行测试
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "[email protected]";  //随意设置
$headers = "From: $from";
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>

注意:收不到邮件还有另一个原因就 是目标邮件系统服务商的设置,有的当成正常邮件,有的当成垃圾邮件,还有的直接不接收,如果一个邮箱不成功的话,建议换个邮件服务提供商试试。据我测试 gmail 163可以收到,qq有时收不到。

小结:
这种“Unable to relay
[email protected]”的错误通常属于设计意图。也就是说,为了防止Internet上的Unsolicited
Commercial E-Mail (UCE),Microsoft的SMTP服务,默认,是不允许一封邮件通过它中继到外面的邮件地址的!

时间: 2024-10-20 21:45:11

7.用邮件发送错误日志的相关文章

phpmailer邮件发送 错误 :SMTP Error: Could not authenticate.

phpmailer邮件发送  错误 :SMTP Error: Could not authenticate. 需要开启SMTP 解决方法:

2.PHP如何记录错误和发送错误

1. 将错误记录到指定的文件中,配置过程如下 * 1). log_errors=on * 2). error_log=/tmp/php_error.log 1.使用error_log()函数记录错误日志 error_log('要记录的错误信息!'); header('content-type:text/html; charset=utf-8'); //开启所有的错误报告 error_reporting(-1); //设置时区 ini_set('date.timezone', 'PRC'); //

邮件发送失败问题:Sending the email to the following server failed : smtp.qiye.163.com:25

[邮件发送错误] : Sending the email to the following server failed : smtp.qiye.163.com:25, {}org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.qiye.163.com:25 at org.apache.commons.mail.Email.sendMimeMessage(Ema

PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送

当系统发生了很严重的问题,需要立刻发送给管理员.可以通过 error_log() 将错误以邮件形式发送到邮箱. 在 php.ini 中设置: sendmail_from = [email protected] 然后设置: sendmail_path = "G:\sendmail\sendmail.exe -t" 其中:G:\sendmail\sendmail.exe 是邮件客户端的地址. 代码: <?php //关闭错误显示 ini_set('display_errors', 0

logback配置错误邮件发送

配置logback发送error级别日志到指定邮箱 需要导入jar包:janino.jar 1 <property name="smtpHost" value="smtp.163.com" /> 2 <property name="smtpPort" value="25" /> 3 <property name="username" value="[email pro

Windows下Kettle定时任务执行并发送错误信息邮件

Windows下Kettle定时任务执行并发送错误信息邮件 1.首先安装JDK 2.配置JDK环境 3.下载并解压PDI(kettle) 目前我用的是版本V7的,可以直接百度搜索下载社区版,企业版收费,社区版免费 下载地址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/ 4.打开解压文件夹kettle找到spoon.bat,双击打开 5.新建作业 点击左上角文件=>新建=>作业 如下图: 6.然后开始建立作业

发送JS错误日志到服务器

JS记录错误日志/捕捉错误 //onerror提供异常信息,文件路径和发生错误代码的行数的三个参数. window.onerror = function(e,url,index){ var msg = e.message || e|| "未知错误"; alert("错误信息:"+msg+",错误路径:"+ul+",行数:"+index); } ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1

检查mysql错误日志并发邮件通知

对mysql的错误日志进行检查,如果发现有ERROR,则发送邮件通知.脚本没对错误日志进行处理,因此重复检查还会发送,请大家自行对错误日志进行处理. 代码如下: #!/usr/bin/python import sys import os import send_mail_lib f=open('/data/mysql3306/BJ-CSK-0-135.err') of=open('135-mysql-error.txt','w') for i in f.readlines():   if "E

监测mysql错误日志,有错误自动邮件报警

监测mysql错误日志,有错误自动邮件报警 http://blog.csdn.net/yabingshi_tech/article/details/51443401 MySQL:监控慢日志.错误日志.备份数据库的脚本 http://blog.csdn.net/u013820054/article/details/51887256