首页 > 后端开发 > 正文

如何使用php的mail函数

2024-12-24 04:27:08 | 我爱编程网

小编今天整理了一些如何使用php的mail函数相关内容,希望能够帮到大家。

本文目录一览:

如何使用php的mail函数

如何使用php的mail函数

可以,但是这要需要smtp.163.com的用户名与密码
我给你一个邮件发送类,你可以直接用
/*
名称:smtpsend.class.php
功能:邮件发送类,实现邮件发送功能 ,可以发送html邮件;可验证用户是否具有发送权限;可实现从任意服务器邮箱发送邮件,并非局限于本机。
时间:2008-03
author:三生石

$smtpserver; SMTP服务器
$smtpserverport; SMTP服务器端口
$smtpuser; SMTP服务器的用户帐号
$smtppass; SMTP服务器的用户密码
$fromMail; SMTP服务器的用户邮箱
$toMail; 发送给谁
$subject; 邮件主题
$content; 邮件内容
$mailtype; 邮件格式(HTML/TXT),TXT为文本邮件
*/
class smtpclass
{

function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)

{

$this->debug = FALSE;

$this->smtp_port = $smtp_port;

$this->relay_host = $relay_host;

$this->time_out = 60; //is used in fsockopen()

$this->auth = $auth;//auth

$this->user = $user;

$this->pass = $pass;

$this->host_name = "localhost"; //is used in HELO command
$this->log_file = "";

$this->sock = FALSE;

}

/* Main Function */

function sendmail($to, $from, $subject = "", $body = "", $mailtype, $returnpath = "", $cc = "", $bcc = "", $additional_headers = "")

{

$mail_from = $this->get_address($this->strip_comment($from));

$body = ereg_replace("(^|(\r\n))(\.)", "\1.\3", $body);

$header = "";
if(isset($returnpath) && $returnpath != "")
{
$header .= "Reply-To:".$returnpath."\r\n";
}

$header .= "MIME-Version:1.0\r\n";

if($mailtype=="HTML"){

$header .= 'Content-Type:text/html; charset=gb2312' . "\r\n";

}

$header .= "To: ".$to."\r\n";

if ($cc != "") {

$header .= "Cc: ".$cc."\r\n";

}

$header .= "From: $from<".$from.">\r\n";

$header .= "Subject: ".$subject."\r\n";

$header .= $additional_headers;

$header .= "Date: ".date("r")."\r\n";

$header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n";

list($msec, $sec) = explode(" ", microtime());

$header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">\r\n";

$TO = explode(",", $this->strip_comment($to));

if ($cc != "") {

$TO = array_merge($TO, explode(",", $this->strip_comment($cc)));

}

if ($bcc != "") {

$TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));

}

$sent = TRUE;

foreach ($TO as $rcpt_to) {

$rcpt_to = $this->get_address($rcpt_to);

if (!$this->smtp_sockopen($rcpt_to)) {

$this->log_write("Error: Cannot send email to ".$rcpt_to."\n");

$sent = FALSE;

continue;

}

if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {

$this->log_write("E-mail has been sent to <".$rcpt_to.">\n");

} else {

$this->log_write("Error: Cannot send email to <".$rcpt_to.">\n");

$sent = FALSE;

}

fclose($this->sock);

$this->log_write("Disconnected from remote host\n");

}

return $sent;

}

/* Private Functions */

function smtp_send($helo, $from, $to, $header, $body = "")

{

if (!$this->smtp_putcmd("HELO", $helo)) {

return $this->smtp_error("sending HELO command");

}

#auth

if($this->auth){

if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) {

return $this->smtp_error("sending HELO command");

}

if (!$this->smtp_putcmd("", base64_encode($this->pass))) {

return $this->smtp_error("sending HELO command");

}

}

#

if (!$this->smtp_putcmd("MAIL", "FROM:<".$from.">")) {

return $this->smtp_error("sending MAIL FROM command");

}

if (!$this->smtp_putcmd("RCPT", "TO:<".$to.">")) {

return $this->smtp_error("sending RCPT TO command");

}

if (!$this->smtp_putcmd("DATA")) {

return $this->smtp_error("sending DATA command");

}

if (!$this->smtp_message($header, $body)) {

return $this->smtp_error("sending message");

}

if (!$this->smtp_eom()) {

return $this->smtp_error("sending <CR><LF>.<CR><LF> [EOM]");

}

if (!$this->smtp_putcmd("QUIT")) {

return $this->smtp_error("sending QUIT command");

}

return TRUE;

}

function smtp_sockopen($address)

{

if ($this->relay_host == "") {

return $this->smtp_sockopen_mx($address);

} else {

return $this->smtp_sockopen_relay();

}

}

function smtp_sockopen_relay()

{

$this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n");

$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);

if (!($this->sock && $this->smtp_ok())) {

$this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n");

$this->log_write("Error: ".$errstr." (".$errno.")\n");

return FALSE;

}

$this->log_write("Connected to relay host ".$this->relay_host."\n");

return TRUE;

}

function smtp_sockopen_mx($address)

{

$domain = ereg_replace("^.+@([^@]+)$", "\1", $address);

if (!@getmxrr($domain, $MXHOSTS)) {

$this->log_write("Error: Cannot resolve MX \"".$domain."\"\n");

return FALSE;

}

foreach ($MXHOSTS as $host) {

$this->log_write("Trying to ".$host.":".$this->smtp_port."\n");

$this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);

if (!($this->sock && $this->smtp_ok())) {

$this->log_write("Warning: Cannot connect to mx host ".$host."\n");

$this->log_write("Error: ".$errstr." (".$errno.")\n");

continue;

}

$this->log_write("Connected to mx host ".$host."\n");

return TRUE;

}

$this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")\n");

return FALSE;

}

function smtp_message($header, $body)

{

fputs($this->sock, $header."\r\n".$body);

$this->smtp_debug("> ".str_replace("\r\n", "\n"."> ", $header."\n> ".$body."\n> "));

return TRUE;

}

function smtp_eom()

{

fputs($this->sock, "\r\n.\r\n");

$this->smtp_debug(". [EOM]\n");

return $this->smtp_ok();

}

function smtp_ok()

{

$response = str_replace("\r\n", "", fgets($this->sock, 512));

$this->smtp_debug($response."\n");

if (!ereg("^[23]", $response)) {

fputs($this->sock, "QUIT\r\n");

fgets($this->sock, 512);

$this->log_write("Error: Remote host returned \"".$response."\"\n");

return FALSE;

}

return TRUE;

}

function smtp_putcmd($cmd, $arg = "")

{

if ($arg != "") {

if($cmd=="") $cmd = $arg;

else $cmd = $cmd." ".$arg;

}

fputs($this->sock, $cmd."\r\n");

$this->smtp_debug("> ".$cmd."\n");

return $this->smtp_ok();

}

function smtp_error($string)

{

$this->log_write("Error: Error occurred while ".$string.".\n");

return FALSE;

}

function log_write($message)

{

$this->smtp_debug($message);

if ($this->log_file == "") {

return TRUE;

}

$message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message;

if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) {

$this->smtp_debug("Warning: Cannot open log file \"".$this->log_file."\"\n");

return FALSE;;

}

flock($fp, LOCK_EX);

fputs($fp, $message);

fclose($fp);

return TRUE;

}

function strip_comment($address)

{

$comment = "\([^()]*\)";

while (ereg($comment, $address)) {

$address = ereg_replace($comment, "", $address);

}

return $address;

}

function get_address($address)

{

$address = ereg_replace("([ \t\r\n])+", "", $address);

$address = ereg_replace("^.*<(.+)>.*$", "\1", $address);

return $address;

}

function smtp_debug($message)

{

if ($this->debug) {

echo $message;

}

}
function senduserMail($smtpserver,$smtpserverport=25,$smtpuser,$smtppass,$fromMail,$toMail,$subject,$content,$mailtype='HTML')
{
if ($fromMail == "") {
die("发件人不能为空!");
}
if ($smtpuser == "") {
die("用户名不能为空!");
}
if ($smtppass == "") {
die("用户密码不能为空!");
}
if ($subject == "") {
die("标题不能为空!");
}
if ($toMail == "") {
die("收件人不能为空!");
}
if ($content == "") {
die("内容不能为空!");
}

$smtpserver = $smtpserver;//SMTP服务器
$smtpserverport = $smtpserverport;//SMTP服务器端口
$smtpuser = $smtpuser;//SMTP服务器的用户帐号
$smtppass = $smtppass;//SMTP服务器的用户密码
$smtpusermail = $fromMail;//SMTP服务器的用户邮箱
$smtpemailto = $toMail;//发送给谁
$mailsubject = $subject;//邮件主题
$mailbody = $content;//邮件内容
$mailtype = $mailtype;//邮件格式(HTML/TXT),TXT为文本邮件

$this->smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
//$smtp->debug = TRUE;//是否显示发送的调试信息
$this->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);
}

}
//$gao = new smtpclass();
//$gao->senduserMail("mail.163.com",25,"用户名","密码","blog.admin@bnet.com.cn","sss@zdnet.com.cn","测试","测试一下","TXT");

如何使用php的mail函数

如何在Windows系统配置sendmail使用PHP的mail函数

php mail()函数在windows不能用,需要安装sendmail。
1.下载sendmail.zip
2.解压到C:下,例如C:\PHP\sendmail,最好短路径,长路径名有可能产生问题。
3.修改php.ini如下
sendmail_path = "C:\PHP\sendmail\sendmail.exe -t"
4.根据你自己的配置环境修改sendmail.ini。
第一次最好启用debug.log_file,error_logfile,以查看sendmail是否生效。
5.重启apache
用sendmail结合其它的smtp服务器,如smtp.gmail.com来实现发邮件。现在大部分邮箱都要求smtp验证,所以要在sendmail.ini中加入用户名和密码。

php.ini配置 (以用gmail邮箱为例)
[mail function]
; For Win32 only.
SMTP = smtp.gmail.com
smtp_port = 25
; For Win32 only.
sendmail_from = zmacro@gmail.com
; For Unix only. You may supply arguments as well (default: “sendmail -t -i”).
sendmail_path = “C:\PHP\sendmail\sendmail.exe -t”
就配置三项,smtp、smtp_port和sendmail_path

sendmail.ini配置
[sendmail]
; you must change mail.mydomain.com to your smtp server
smtp_server=smtp.gmail.com
smtp_port=25
auth_username=yourusername
auth_password=yourpassword
force_sender=zmacro@gmail.com
; default_domain=mydomain.com
sendmail网上有下的,如果你是用xampp,那里面直接就带了。
同时在虚拟主机的httpd.conf里加上这样一句
<directory d:/www/users/username> php_admin_value sendmail_path ‘C:\PHP\sendmail\sendmail.exe -t zmacro@gmail.com’</directory>
此邮件地址为用户的邮件地址,随便添。

------------------------

测试文件mail_test.php
<?
if(mail("yourname@sina.com","测试","测试邮件"))
{
echo "发送成功!!";
}
else{
echo "发送失败!!";
}
?>

thinkphp6 验证规则

我爱编程网(https://www.52biancheng.com)小编还为大家带来thinkphp6 验证规则的相关内容。

在ThinkPHP6框架中,验证规则为开发者提供了强大的功能,用于确保输入数据的有效性和合法性。本文将详细介绍ThinkPHP6中各类验证规则的使用方法,帮助开发者更好地控制和验证输入数据。



### 格式验证类


格式验证类主要针对数据的类型、格式和结构进行验证,确保数据符合预期的规则。



  • 验证某个字段是否为纯数字:`'num' => 'number'`

  • 验证某个字段是否为整数:`'num' => 'integer'`

  • 验证某个字段是否为浮点数:`'num' => 'float'`

  • 验证某个字段是否为布尔值:`'num' => 'boolean'`

  • 验证某个字段是否为email地址:`'email' => 'email'`

  • 验证某个字段是否为数组:`'info' => 'array'`

  • 验证某个字段是否为有效日期:`'date' => 'date'`

  • 验证某个字段是否为纯字母:`'name' => 'alpha'`

  • 验证某个字段是否为字母和数字:`'name' => 'alphaNum'`

  • 验证某个字段是否为字母、数字、下划线及破折号:`'name' => 'chsDash'`



### 长度和区间验证类


该类用于验证数据的长度或在特定范围内。此类验证对于确保数据的完整性至关重要。



  • 验证某个字段值是否在指定范围内:`'num' => 'in:1,2,3'`

  • 验证某个字段值不在指定范围内:`'num' => 'notIn:1,2,3'`

  • 验证某个字段值是否在指定区间内:`'num' => 'between:1,10'`

  • 验证某个字段值不在指定区间内:`'num' => 'notBetween:1,10'`

  • 验证某个字段长度在指定范围内:`'name' => 'length:4,25'`



### 字段比较类


用于比较两个字段之间的关系,确保数据的一致性和逻辑正确性。 我爱编程网



  • 验证某个字段是否与另一个字段值一致:`'repassword' => 'require|confirm:password'`

  • 验证某个字段是否与另一个字段值不一致:`'name' => 'require|different:account'`

  • 验证字段值是否等于某个值:`'score' => 'eq:100'`

  • 验证字段值是否大于等于某个值:`'score' => 'egt:60'`

  • 验证字段值是否大于某个值:`'score' => 'gt:60'`

  • 验证字段值是否小于等于某个值:`'score' => 'elt:100'`

  • 验证字段值是否小于某个值:`'score' => 'lt:100'`

  • 验证字段值与其它字段的大小关系:`'price' => 'lt:market_price'`



### filter验证


利用filter_var进行更灵活的验证,适用于复杂的验证场景。



  • `'ip' => 'filter:validate_ip'`



### 正则验证


直接使用正则表达式进行验证,支持高级的验证逻辑。



  • `'zip' => '\d{6}'`

  • `'zip' => 'regex:\d{6}'`

  • 正则表达式中使用|符号时,使用数组定义:`'accepted' => ['regex' => ['/^(yes|on|1)$/i']]`



### 其它验证


其他验证功能包括文件验证、唯一性验证等,确保数据的安全性和一致性。



  • `'name' => 'unique:user'` 验证字段值在指定数据表中唯一

  • `'password' => 'requireIf:account,1'` 当`account`值为1时,`password`字段必须存在

  • `'password' => 'requireWith:account'` 当`account`有值时,`password`字段必须存在

  • `'mobile' => 'requireWithout:phone'` 和 `'phone' => 'requireWithout:mobile'` 确保输入一个手机号或另一个

  • `'age' => 'requireCallback:check_require|number'` 根据指定的回调函数验证字段是否需要验证



通过这些验证规则,开发者可以构建健壮、安全且易于维护的应用程序,确保用户输入的数据符合预设的规范和逻辑。

以上就是我爱编程网小编为大家带来的内容了,想要了解更多相关信息,请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“如何使用php的mail函数”相关推荐
如何在Windows系统配置sendmail使用PHP的mail函数
如何在Windows系统配置sendmail使用PHP的mail函数

如何在Windows系统配置sendmail使用PHP的mail函数phpmail()函数在windows不能用,需要安装sendmail。1.下载sendmail.zip2.解压到C:下,例如C:\PHP\sendmail,最好短路径,长路径名有可能产生问题。3.修改php.ini如下sendmail_path="C:\PHP\sendmail\sendmail.exe-t

2024-08-04 17:13:09
php如何使用strval函数?
php如何使用strval函数?

PHP函数分享—100个最常用的PHP函数以下是最常用的前100个PHP函数列表:1.count()2.echo()3.array()4.is_numeric()5.is_array()6.strlen()7.print()8.substr()9.explode()10.implode()...96.file_put_contents()

2024-12-02 22:16:10
php函数如何使用 使用PHP中pathinfo函数讲解
php函数如何使用 使用PHP中pathinfo函数讲解

PHP中使用按位取反(~)函数创建后门PHP中使用按位取反(~)函数创建后门本文将介绍在PHP中如何利用按位取反(~)函数创建后门的原理及方法。首先,我们需要了解PHP的位运算符。在PHP中,按位取反(~)运算符能够将一个整数的二进制位进行反转。如果原数的某位是0,则该位变为1,反之亦然。这个特性在某些场景下可以用来绕过安全机制,创建后门。例如,通过将按位取反运算应用于错误

2024-11-30 09:22:06
如何使用PHP实现javascript的escape和unescape函数
如何使用PHP实现javascript的escape和unescape函数

如何使用PHP实现javascript的escape和unescape函数前端开发工程师都知道javascript有编码函数escape()和对应的解码函数unescape(),而php中只有个urlencode和urldecode,这个编码和解码函数对encodeURI和encodeURIComponent有效,但是对escape的是无效的。javascript中的escape()函数

2025-01-08 17:44:42
如何让PHP中function函数内能够使用引用的conn的$db
如何让PHP中function函数内能够使用引用的conn的$db

如何让PHP中function函数内能够使用引用的conn的$db把$db设置成全局就行了functiongetDatas($sql){global$db;//添加这一行代码就行了$rows=array();$rs_infolist=$db-&gt;query($sql);//......}PHP中,参数调用相应函数是如何实现的?symfony里面的Act

2024-10-09 11:01:05
php类里面一个函数如何使用另一个函数的变量
php类里面一个函数如何使用另一个函数的变量

php类里面一个函数如何使用另一个函数的变量$this-&gt;a();一样的,只是在前面加上个$this-&gt;不过上面好像有点答非所问...你需要在functiona里面对$a的值进行输出..也就是functiona(){$a='a';return$a;}然后需要在函数b里面进行导入functionb(){$a=$this-&gt;a();

2024-07-24 23:35:21
php如何支持mb_strlen如何使用php
php如何支持mb_strlen如何使用php

php如何支持mb_strlen如何使用phpPHP字符串长度计算strlen()函数使用介绍strlen()函数和mb_strlen()函数在PHP中,函数strlen()返回字符串的长度。功能原型如下:复制代码代码如下:(同Internationalorganizations)国际组织strlen(字符串string_input);参数str

2024-08-09 02:27:18
adb如何使用?
adb如何使用?

利用adb命令打开usb调试打开Android手机的USB调试对于使用豌豆夹、调试程序等来说很重要。下面说说如何用代码自动打开USB调试。先分析USB调试的相关源代码。在packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java找到关于USBDebugEnable的代码:[java] vi

2024-04-24 14:47:33