복붙노트

PHP를 사용하여 이메일을 보내는 방법은 무엇입니까?

PHP

PHP를 사용하여 이메일을 보내는 방법은 무엇입니까?

웹 사이트에서 PHP를 사용하고 있으며 전자 메일 기능을 추가하고 싶습니다.

WAMPSERVER를 설치했습니다.

PHP를 사용하여 전자 메일을 보내려면 어떻게합니까?

해결법

  1. ==============================

    1.

    PHP의 mail () 함수를 사용하면 가능합니다. 메일 기능은 로컬 서버에서 작동하지 않습니다.

    <?php
    $to      = 'nobody@example.com';
    $subject = 'the subject';
    $message = 'hello';
    $headers = 'From: webmaster@example.com' . "\r\n" .
        'Reply-To: webmaster@example.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
    
    mail($to, $subject, $message, $headers);
    ?> 
    

    참고:

  2. ==============================

    2.

    https://github.com/PHPMailer/PHPMailer에서 PHPMailer 클래스를 사용할 수도 있습니다.

    메일 기능을 사용하거나 SMTP 서버를 투명하게 사용할 수 있습니다. 또한 HTML 기반 전자 메일 및 첨부 파일을 처리하므로 사용자 고유의 구현을 작성할 필요가 없습니다.

    수업은 안정적이며 Drupal, SugarCRM, Yii, Joomla와 같은 다른 많은 프로젝트에서 사용됩니다!

    다음은 위 페이지의 예제입니다.

    <?php
    require 'PHPMailerAutoload.php';
    
    $mail = new PHPMailer;
    
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'user@example.com';                 // SMTP username
    $mail->Password = 'secret';                           // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable encryption, 'ssl' also accepted
    
    $mail->From = 'from@example.com';
    $mail->FromName = 'Mailer';
    $mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
    $mail->addAddress('ellen@example.com');               // Name is optional
    $mail->addReplyTo('info@example.com', 'Information');
    $mail->addCC('cc@example.com');
    $mail->addBCC('bcc@example.com');
    
    $mail->WordWrap = 50;                                 // Set word wrap to 50 characters
    $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
    $mail->isHTML(true);                                  // Set email format to HTML
    
    $mail->Subject = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
    
    if(!$mail->send()) {
        echo 'Message could not be sent.';
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
        echo 'Message has been sent';
    }
    
  3. ==============================

    3.

    html 형식의 전자 메일에 관심이 있다면 Content-type : text / html; 헤더에. 예:

    // multiple recipients
    $to  = 'aidan@example.com' . ', '; // note the comma
    $to .= 'wez@example.com';
    
    // subject
    $subject = 'Birthday Reminders for August';
    
    // message
    $message = '
    <html>
    <head>
      <title>Birthday Reminders for August</title>
    </head>
    <body>
      <p>Here are the birthdays upcoming in August!</p>
      <table>
        <tr>
          <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
        </tr>
        <tr>
          <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
        </tr>
        <tr>
          <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
        </tr>
      </table>
    </body>
    </html>
    ';
    
    // To send HTML mail, the Content-type header must be set
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    
    // Additional headers
    $headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
    $headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
    $headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
    $headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
    
    // Mail it
    mail($to, $subject, $message, $headers);
    

    자세한 내용은 PHP 메일 기능을 확인하십시오.

  4. ==============================

    4.

    또한 PEAR 메일 패키지 Pear Mail Page를 살펴보십시오.

    그것은 내장 된 표준 mail () 함수 (표준 함수가 적당하지 않은 경우)보다 조금 더 강건한 것 같습니다.

    다음은이 페이지에서 발췌 한 내용입니다. PEAR Mail send () 사용법

    <?php
        include('Mail.php');
    
        $recipients = 'joe@example.com';
    
        $headers['From']    = 'richard@example.com';
        $headers['To']      = 'joe@example.com';
        $headers['Subject'] = 'Test message';
    
        $body = 'Test message';
    
        $smtpinfo["host"] = "smtp.server.com";
        $smtpinfo["port"] = "25";
        $smtpinfo["auth"] = true;
        $smtpinfo["username"] = "smtp_user";
        $smtpinfo["password"] = "smtp_password";
    
    
        // Create the mail object using the Mail::factory method
        $mail_object =& Mail::factory("smtp", $smtpinfo); 
    
        $mail_object->send($recipients, $headers, $body);
    ?> 
    
  5. ==============================

    5.

    요즘에는 대부분의 프로젝트에서 스위프트 메일러를 사용합니다. Symfony 프레임 워크와 Twig 템플릿 엔진을 제공 한 사람들이 만든 이메일을 보내는 데있어 매우 유연하고 우아한 객체 지향적 접근 방식입니다.

    require 'mail/swift_required.php';
    
    $message = Swift_Message::newInstance()
        // The subject of your email
        ->setSubject('Jane Doe sends you a message')
        // The from address(es)
        ->setFrom(array('jane.doe@gmail.com' => 'Jane Doe'))
        // The to address(es)
        ->setTo(array('frank.stevens@gmail.com' => 'Frank Stevens'))
        // Here, you put the content of your email
        ->setBody('<h3>New message</h3><p>Here goes the rest of my message</p>', 'text/html');
    
    if (Swift_Mailer::newInstance(Swift_MailTransport::newInstance())->send($message)) {
        echo json_encode([
            "status" => "OK",
            "message" => 'Your message has been sent!'
        ], JSON_PRETTY_PRINT);
    } else {
        echo json_encode([
            "status" => "error",
            "message" => 'Oops! Something went wrong!'
        ], JSON_PRETTY_PRINT);
    }
    

    신속 우편물을 사용하는 방법에 대한 자세한 내용은 공식 문서를 참조하십시오.

  6. ==============================

    6.

    이 시도:

    <?php
    $to = "somebody@example.com";
    $subject = "My subject";
    $txt = "Hello world!";
    $headers = "From: webmaster@example.com" . "\r\n" .
    "CC: somebodyelse@example.com";
    
    mail($to,$subject,$txt,$headers);
    ?>
    
  7. ==============================

    7.

    이것은 메일 기능을 사용하여 일반 텍스트 전자 메일을 보내는 아주 기본적인 방법입니다.

    <?php
    $to = 'SomeOtherEmailAddress@Domain.com';
    $subject = 'This is subject';
    $message = 'This is body of email';
    $from = "From: FirstName LastName <SomeEmailAddress@Domain.com>";
    mail($to,$subject,$message,$from);
    
  8. ==============================

    8.

    전체 코드 예제 ..

    한번 해봐 ..

    <?php
    // Multiple recipients
    $to = 'johny@example.com, sally@example.com'; // note the comma
    
    // Subject
    $subject = 'Birthday Reminders for August';
    
    // Message
    $message = '
    <html>
    <head>
      <title>Birthday Reminders for August</title>
    </head>
    <body>
      <p>Here are the birthdays upcoming in August!</p>
      <table>
        <tr>
          <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
        </tr>
        <tr>
          <td>Johny</td><td>10th</td><td>August</td><td>1970</td>
        </tr>
        <tr>
          <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
        </tr>
      </table>
    </body>
    </html>
    ';
    
    // To send HTML mail, the Content-type header must be set
    $headers[] = 'MIME-Version: 1.0';
    $headers[] = 'Content-type: text/html; charset=iso-8859-1';
    
    // Additional headers
    $headers[] = 'To: Mary <mary@example.com>, Kelly <kelly@example.com>';
    $headers[] = 'From: Birthday Reminder <birthday@example.com>';
    $headers[] = 'Cc: birthdayarchive@example.com';
    $headers[] = 'Bcc: birthdaycheck@example.com';
    
    // Mail it
    mail($to, $subject, $message, implode("\r\n", $headers));
    ?>
    
  9. ==============================

    9.

    Postmark, Sendgrid 등과 같은 메일 웹 서비스를 사용할 수 있습니다.

    Sendgrid vs Postmark vs Amazon SES 및 기타 이메일 / SMTP API 공급자

    편집 : 이제 Google Gmail API를 사용합니다. 엄격한 필터로 인해 고용주의 조직에 알림 이메일을 보내는 데 문제가있었습니다. Gmail은 사용자를 스팸하지 않는 한 작동합니다.

  10. ==============================

    10.

    네이티브 PHP 함수 Mail ()이 나를 위해 작동하지 않습니다. 그것은 메시지를 보낸다 :

    그래서 나는 보통 PHPMailer 패키지를 사용한다.

    GitHub에 5.2.23 버전을 다운로드했습니다.

    나는 방금 2 개의 파일을 골라 내 소스에 넣었다. PHP root

    PHP 파일에 추가해야합니다.

    require_once('class.smtp.php');
    require_once('class.phpmailer.php');
    

    이 코드는 단지 코드 일뿐입니다.

    require_once('class.smtp.php');
    require_once('class.phpmailer.php');
    ... 
    //----------------------------------------------
    // Send an e-mail. Returns true if successful 
    //
    //   $to - destination
    //   $nameto - destination name
    //   $subject - e-mail subject
    //   $message - HTML e-mail body
    //   altmess - text alternative for HTML.
    //----------------------------------------------
    function sendmail($to,$nameto,$subject,$message,$altmess)  {
    
      $from  = "yourcontact@yourdomain.com"
      $namefrom = "yourname";
      $mail = new PHPMailer();  
      $mail->CharSet = 'UTF-8';
      $mail->isSMTP();   // by SMTP
      $mail->SMTPAuth   = true;   // user and password
      $mail->Host       = "localhost";
      $mail->Port       = 25;
      $mail->Username   = $from;  
      $mail->Password   = "yourpassword";
      $mail->SMTPSecure = "";    // options: 'ssl', 'tls' , ''  
      $mail->setFrom($from,$namefrom);   // From (origin)
      $mail->addCC($from,$namefrom);      // There is also addBCC
      $mail->Subject  = $subject;
      $mail->AltBody  = $altmess;
      $mail->Body = $message;
      $mail->isHTML();   // Set HTML type
    //$mail->addAttachment("attachment");  
      $mail->addAddress($to, $nameto);
      return $mail->send();
    }
    

    그것은 매력처럼 작동합니다.

  11. ==============================

    11.

    이 스크립트로 이메일을 보냈습니다.

    <h2>Test Mail</h2>
    <?php
    
    if (!isset($_POST["submit"]))
      {
      ?>
      <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
      From: <input type="text" name="from"><br>
      Subject: <input type="text" name="subject"><br>
      Message: <textarea rows="10" cols="40" name="message"></textarea><br>
      <input type="submit" name="submit" value="Click To send mail">
      </form>
      <?php
      }
    
    else
    
      {
    
      if (isset($_POST["from"]))
        {
        $from = $_POST["from"]; // sender
        $subject = $_POST["subject"];
        $message = $_POST["message"];
    
        $message = wordwrap($message, 70);
    
        mail("Test@example.com",$subject,$message,"From: $from\n");
        echo "Thank you for sending an email";
        }
      }
    ?>
    

    이메일 보내기 버튼을 누르면 이메일이 Test@example.com으로 전송됩니다.

  12. ==============================

    12.

    <?php
    include "db_conn.php";//connection file
    require "PHPMailerAutoload.php";// it will be in PHPMailer
    require "class.smtp.php";// it will be in PHPMailer
    require "class.phpmailer.php";// it will be in PHPMailer
    
    
    $response = array();
    $params = json_decode(file_get_contents("php://input"));
    
    if(!empty($params->email_id)){
    
        $email_id = $params->email_id;
        $flag=false;
        echo "something";
        if(!filter_var($email_id, FILTER_VALIDATE_EMAIL))
        {
            $response['ERROR']='EMAIL address format error'; 
            echo json_encode($response,JSON_UNESCAPED_SLASHES);
            return;
        }
        $sql="SELECT * from sales where email_id ='$email_id' ";
    
        $result = mysqli_query($conn,$sql);
        $count = mysqli_num_rows($result);
    
        $to = "demo@gmail.com";
        $subject = "DEMO Subject";
        $messageBody ="demo message .";
    
        if($count ==0){
            $response["valid"] = false;
            $response["message"] = "User is not registered yet";
            echo json_encode($response);
            return;
        }
    
        else {
    
            $mail = new PHPMailer();
            $mail->IsSMTP();
            $mail->SMTPAuth = true; // authentication enabled
            $mail->IsHTML(true); 
            $mail->SMTPSecure = 'ssl';//turn on to send html email
            // $mail->Host = "ssl://smtp.zoho.com";
            $mail->Host = "p3plcpnl0749.prod.phx3.secureserver.net";//you can use gmail 
            $mail->Port = 465;
            $mail->Username = "demousername@example.com";
            $mail->Password = "demopassword";
            $mail->SetFrom("demousername@example.com", "Any demo alert");
            $mail->Subject = $subject;
    
            $mail->Body = $messageBody;
            $mail->AddAddress($to);
            echo "yes";
    
            if(!$mail->send()) {
               echo "Mailer Error: " . $mail->ErrorInfo;
           } 
           else {
               echo "Message has been sent successfully";
          }
        }
    
    }
    else{
        $response["valid"] = false;
        $response["message"] = "Required field(s) missing";
        echo json_encode($response);
    }
    
    
    ?>
    

    위의 코드는 나를 위해 작동합니다.

  13. ==============================

    13.

    간단한 이메일 보내기 :

    <?php
    // the message
    $msg = "First line of text\nSecond line of text";
    
    // use wordwrap() if lines are longer than 70 characters
    $msg = wordwrap($msg,70);
    
    // send email
    mail("someone@example.com","My subject",$msg);
    
    ?>
    

    출처 : https://www.w3schools.com/php/func_mail_mail.asp

    문서 : http://php.net/manual/en/function.mail.php

  14. from https://stackoverflow.com/questions/5335273/how-to-send-an-email-using-php by cc-by-sa and MIT lisence