PHP 使用PHP发送电子邮件

PHP 使用PHP发送电子邮件

PHP必须正确配置在 php.ini 文件,该文件包含您的系统发送电子邮件的细节。打开位于 /etc/ 目录中的php.ini文件,并找到名为 [mail function] 的部分。

Windows用户应确保提供两个指令。第一个被称为SMTP,用于定义你的电子邮件服务器地址。第二个被称为sendmail_from,用于定义你自己的电子邮件地址。

Windows的配置应该类似于这样−

[mail function]
; For Win32 only.
SMTP = smtp.secureserver.net

; For win32 only
sendmail_from = webmaster@tutorialspoint.com

Linux用户只需要告诉PHP他们的sendmail应用程序的位置。路径和任何所需的开关应该在sendmail_path指令中指定。

Linux的配置应该看起来像这样-

[mail function]
; For Win32 only.
SMTP = 

; For win32 only
sendmail_from = 

; For Unix only
sendmail_path = /usr/sbin/sendmail -t -i

现在你已经准备好了−

发送纯文本邮件

PHP使用 mail() 函数发送电子邮件。此函数需要三个必需参数,分别是指定收件人的电子邮件地址、消息的主题和实际消息,此外还有其他两个可选参数。

mail( to, subject, message, headers, parameters );

这是每个参数的描述。

序号 参数及描述
1 to 必需。指定邮件的接收者/接收者
2 subject 必需。指定邮件的主题。此参数不能包含换行符
3 message 必需。定义要发送的消息。每行应用 LF (\n) 分割。行不应超过70个字符
4 headers 可选。指定附加头信息,如 From、Cc 和 Bcc。附加头信息应使用 CRLF (\r\n) 分隔
5 parameters 可选。指定发送邮件程序的其他参数

只要调用mail函数,PHP就会尝试发送电子邮件,如果成功则返回true,如果失败则返回false。

可以将多个收件人作为mail()函数的第一个参数指定为逗号分隔的列表。

发送HTML电子邮件

当你使用PHP发送文本消息时,所有的内容都将被视为普通文本。即使你在文本消息中包含HTML标签,它们也将显示为普通文本,而不会按照HTML语法进行格式化。但是PHP提供了发送实际HTML消息的选项。

在发送电子邮件消息时,你可以指定Mime版本、内容类型和字符集来发送HTML电子邮件。

示例

下面的示例将发送一个HTML电子邮件消息到xyz@somedomain.com,并将其抄送到afgh@somedomain.com。你可以编写这个程序,使它从用户那里接收所有内容,然后发送电子邮件。

<html>

   <head>
      <title>Sending HTML email using PHP</title>
   </head>

   <body>

      <?php
         to = "xyz@somedomain.com";subject = "This is subject";

         message = "<b>This is HTML message.</b>";message .= "<h1>This is headline.</h1>";

         header = "From:abc@somedomain.com \r\n";header .= "Cc:afgh@somedomain.com \r\n";
         header .= "MIME-Version: 1.0\r\n";header .= "Content-type: text/html\r\n";

         retval = mail (to,subject,message,header);

         if(retval == true ) {
            echo "Message sent successfully...";
         }else {
            echo "Message could not be sent...";
         }
      ?>

   </body>
</html>

发送带附件的邮件

要发送一个混合内容的电子邮件,需要设置 内容类型 头部为 multipart/mixed 。然后可以在 边界 内指定文本和附件部分。

一个边界以两个连字符开头,后面跟着一个不能出现在电子邮件的正文部分的唯一数字。PHP函数 md5() 用于创建一个32位的十六进制唯一数字。表示电子邮件最后部分的最终边界也必须以两个连字符结尾。

<?php
   // request variables // important
   from =_REQUEST["from"];
   emaila =_REQUEST["emaila"];
   filea =_REQUEST["filea"];

   if (filea) {
      function mail_attachment (from , to,subject, message,attachment){
         fileatt =attachment; // Path to the file
         fileatt_type = "application/octet-stream"; // File Typestart = strrpos(attachment, '/') == -1 ?            strrpos(attachment, '//') : strrpos(attachment, '/')+1;fileatt_name = substr(attachment,start, 
            strlen(attachment)); // Filename that will be used for the            file as the attachmentemail_from = from; // Who the email is fromsubject = "New Attachment Message";

         email_subject =subject; // The Subject of the email 
         email_txt =message; // Message that the email has in it 
         email_to =to; // Who the email is to

         headers = "From: ".email_from;
         file = fopen(fileatt,'rb'); 
         data = fread(file,filesize(fileatt));         fclose(file); 

         msg_txt="\n\n You have recieved a new attachment message fromfrom";
         semi_rand = md5(time());mime_boundary = "==Multipart_Boundary_x{semi_rand}x";headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . "
            boundary=\"{mime_boundary}\"";email_txt .= msg_txt;email_message .= "This is a multi-part message in MIME format.\n\n" . 
            "--{mime_boundary}\n" . "Content-Type:text/html;            charset = \"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" .email_txt . "\n\n";

         data = chunk_split(base64_encode(data));

         email_message .= "--{mime_boundary}\n" . "Content-Type: {fileatt_type};\n" .
            " name = \"{fileatt_name}\"\n" . //"Content-Disposition: attachment;\n" . 
            //" filename = \"{fileatt_name}\"\n" . "Content-Transfer-Encoding:            base64\n\n" .data . "\n\n" . "--{mime_boundary}--\n";ok = mail(email_to,email_subject, email_message,headers);

         if(ok) {
            echo "File Sent Successfully.";
            unlink(attachment); // delete a file after attachment sent.
         }else {
            die("Sorry but the email could not be sent. Please go back and try again!");
         }
      }
      move_uploaded_file(_FILES["filea"]["tmp_name"],
         'temp/'.basename(_FILES['filea']['name']));

      mail_attachment("from", "youremailaddress@gmail.com",         "subject", "message", ("temp/"._FILES["filea"]["name"]));
   }
?>

<html>
   <head>

      <script language = "javascript" type = "text/javascript">
         function CheckData45() {
            with(document.filepost) {
               if(filea.value ! = "") {
                  document.getElementById('one').innerText = 
                     "Attaching File ... Please Wait";
               }
            }
         }
      </script>

   </head>
   <body>

      <table width = "100%" height = "100%" border = "0" 
         cellpadding = "0" cellspacing = "0">
         <tr>
            <td align = "center">
               <form name = "filepost" method = "post" 
                  action = "file.php" enctype = "multipart/form-data" id = "file">

                  <table width = "300" border = "0" cellspacing = "0" 
                     cellpadding = "0">

                     <tr valign = "bottom">
                        <td height = "20">Your Name:</td>
                     </tr>

                     <tr>
                        <td><input name = "from" type = "text" 
                           id = "from" size = "30"></td>
                     </tr>

                     <tr valign = "bottom">
                        <td height = "20">Your Email Address:</td>
                     </tr>

                     <tr>
                        <td class = "frmtxt2"><input name = "emaila"
                           type = "text" id = "emaila" size = "30"></td>
                     </tr>

                     <tr>
                        <td height = "20" valign = "bottom">Attach File:</td>
                     </tr>

                     <tr valign = "bottom">
                        <td valign = "bottom"><input name = "filea" 
                           type = "file" id = "filea" size = "16"></td>
                     </tr>

                     <tr>
                        <td height = "40" valign = "middle"><input 
                           name = "Reset2" type = "reset" id = "Reset2" value = "Reset">
                        <input name = "Submit2" type = "submit" 
                           value = "Submit" onClick = "return CheckData45()"></td>
                     </tr>
                  </table>

               </form>

               <center>
                  <table width = "400">

                     <tr>
                        <td id = "one">
                        </td>
                     </tr>

                  </table>
               </center>

            </td>
         </tr>
      </table>

   </body>
</html>

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程