Program/Php

php email 보내기

soccerda 2020. 6. 5. 10:15
반응형

php에서 이메일을 보낼 수 있는 방법은 가장 대중적인 라이브러리는 'php mailer'이다.

 

물론 php 내장 함수인 mail도 있지만 내부에 메일서버(smtp서버)가 구축되어 있어야 한다.

https://www.php.net/manual/en/function.mail.php

 

PHP: mail - Manual

It is also possible to send HTML email with mail().    Birthday Reminders for August    Here are the birthdays upcoming in August!                                                Person Day Month Ye

www.php.net

PHPMailer

PHPMailer를 통해서 smtp서버가 없더라도 메일 서비스하는 업체(지메일, 다음, 네이버)의 smtp를 사용하여 이메일을 보낼 수 있다.  

https://github.com/PHPMailer/PHPMailer

 

PHPMailer/PHPMailer

The classic email sending library for PHP. Contribute to PHPMailer/PHPMailer development by creating an account on GitHub.

github.com

설치 및 사용방법은 git에 자세히 설명되어 있다.

 

<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

// Load Composer's autoloader
require 'vendor/autoload.php';

// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
    //Server settings
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      // Enable verbose debug output
    $mail->isSMTP();                                            // Send using SMTP
    $mail->Host       = 'smtp1.example.com';                    // Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
    $mail->Username   = 'user@example.com';                     // SMTP username
    $mail->Password   = 'secret';                               // SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
    $mail->Port       = 587;                                    // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above

    //Recipients
    $mail->setFrom('from@example.com', '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');

    // Attachments
    $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name

    // Content
    $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';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

메일서버가 없다면 현재 사용하고 있는 메일 서비스를 활용하면 된다.

 

gmail

https://support.google.com/a/answer/176600?hl=ko

 

프린터, 스캐너, 앱에서 이메일 보내기 - G Suite 관리자 고객센터

도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요

support.google.com

네이버 메일

https://mail.naver.com/option/imap

 

네이버 메일

한눈에 보고 손쉽게 관리하는 스마트메일

mail.naver.com

다음 메일

https://cs.daum.net/faq/43/9234.html#35953

 

Daum 고객센터

서비스 이용에 필요한 도움말을 찾거나 직접 문의하실 수 있습니다.

cs.daum.net

네이버 지메일 다음 모두 사용 port는 465이며 host 정보만 각각 smtp.naver.com,  smtp.gmail.com, smtp.daum.net이다. 

반응형