当前位置:编程学习 > > 正文

php如何发邮件(PHP示例演示发送邮件给某个邮箱)

时间:2022-03-31 20:27:16类别:编程学习

php如何发邮件

PHP示例演示发送邮件给某个邮箱

首先,建立一个index.html文件,代码如下:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • <html>
  • <head>
  • <title>simple send mail </title>
  • </head>
  • <body>
  • <h1>mail form</h1>
  • <form name="form1" method="post" action="mail.php">
  • <table>
  • <tr><td><b>to</b></td><td>
  • <input type="text" name="mailto" size="35">
  • </td></tr>
  • <tr><td><b>subject</b></td>
  • <td><input type="text" name="mailsubject" size="35"></td>
  • </tr>
  • <tr><td><b>message</b></td>
  • <td>
  • <textarea name="mailbody" cols="50" rows="7"></textarea>
  • </td>
  • </tr>
  • <tr><td colspan="2">
  • <input type="submit" name="submit" value="send">
  • </td>
  • </tr>
  • </table>
  • </form>
  • </body>
  • </html>
  • 然后新建一个“mail.php”文档把传输的文档进行发送

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • <?php
  • $stm="邮件内容";
  • require("smtp.php");
  • ##########################################
  • $smtpserver = "smtp.qq.com";//smtp服务器
  • $smtpserverport = "465";//smtp服务器端口
  • $smtpusermail = "xxx@qq.com";//smtp服务器的用户邮箱
  • $smtpemailto = "aaa@qq.com";//发送给谁
  • $smtpuser = "xxx@qq.com";//smtp服务器的用户帐号
  • $smtppass = "666";//smtp服务器的用户密码
  • $mailsubject = "666 ";//邮件主题
  • $mailbody = $stm;//邮件内容
  • $mailtype = "html";//邮件格式(html/txt),txt为文本邮件
  • ##########################################
  • $smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
  • $smtp->debug = true;//是否显示发送的调试信息
  • $smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);
  • echo "<script>alert('邮件发送成功');parent.document.adduser.cheheh.click();</script>";
  • exit;
  • }
  • ?>
  • 最后编写一个邮件类“smtp.php”

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • <?php
  • class smtp
  • {
  • /* public variables */
  • var $smtp_port;
  • var $time_out;
  • var $host_name;
  • var $log_file;
  • var $relay_host;
  • var $debug;
  • var $auth;
  • var $user;
  • var $pass;
  • /* private variables */
  • var $sock;
  • /* constractor */
  • 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 = 30; //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, $cc = "", $bcc = "", $additional_headers = "")
  • {
  • $mail_from = $this->get_address($this->strip_comment($from));
  • $body = ereg_replace("(^|(\r\n))(\.)", "\1.\3", $body);
  • $header .= "mime-version:1.0\r\n";
  • if($mailtype=="html")
  • {
  • $header .= "content-type:text/html\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;
  • }
  • }
  • }
  • ?>
  • 总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。

    原文链接:https://jingyan.baidu.com/article/636f38bb482efcd6b8461019.html

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐