PHP로 메일에 첨부 파일 보내기

Subodh Poudel 2023년1월30일
  1. PHPMailer를 사용하여 이메일에 첨부 파일 보내기
  2. SwiftMailer로 이메일에 첨부 파일 보내기
PHP로 메일에 첨부 파일 보내기

PHP에서 이메일에 첨부 파일을 보내는 다양한 방법을 소개합니다.

PHPMailer를 사용하여 이메일에 첨부 파일 보내기

PHPMailer 클래스를 사용하여 이메일을 보내 첨부 파일을 보낼 수 있습니다. PHPMailer 클래스 개체를 만들고 해당 메서드와 속성을 사용하여 원하는 수신자에게 이메일을 보낼 수 있습니다. 우리는 이메일을 보내기 위해 Gmail을 사용할 것입니다. 그래서 우리는 SMTP 프로토콜을 사용할 것입니다. 라이브러리에는 첨부 파일을 추가할 수 있는 addAttachment() 메서드가 있습니다. 먼저 GitHub에서 라이브러리를 다운로드해야 합니다.

예를 들어 src 폴더를 만들고 PHPMailer.php, SMTP.phpException.php 파일 세 개를 이 폴더에 복사합니다. 그런 다음 index.php 파일을 만들고 require 문을 사용하여 이 세 파일을 포함합니다. 그런 다음 이 파일의 해당 클래스를 사용하십시오. 다음으로 PHPMailer() 클래스의 $mail 개체를 만듭니다. UsernamePassword 속성으로 보낸 사람의 이메일과 암호를 설정합니다. 제목본문 속성을 사용하여 이메일의 제목과 본문을 설정합니다. addAttachment() 함수를 사용하여 첨부 파일을 추가합니다. 메소드의 매개변수로 첨부 파일의 상대 경로를 지정하십시오. AddAddress() 메소드에 수신자의 이메일을 작성하십시오. 마지막으로 Send() 메서드를 호출하여 이메일을 보냅니다. 다음으로 smtpClose()를 호출하여 SMTP 연결을 닫습니다.

PHPMailer에서 Gmail을 사용하여 이메일을 보내려면 보낸 사람의 이메일을 변경해야 합니다. PHPMailer를 사용하려면 Gmail에서 덜 안전한 앱 액세스 옵션을 켜야 합니다. 그런 다음 다음 스크립트를 실행하면 수신자에게 이메일과 첨부 파일이 전송됩니다.

예제 코드:

<?php
require 'src/PHPMailer.php';
require 'src/SMTP.php';
require 'src/Exception.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = "true";
$mail->SMTPSecure ="tls";
$mail->Port = "587";
$mail->Username = "sendersemail@gmail.com";
$mail->Password = "password";

$mail->SetFrom('sendersemail@gmail.com');
$mail->Subject = 'Message Subject';
$mail->Body = "This is a body text";
$mail->addAttachment('attachments/project.pdf');
$mail->AddAddress( 'receiversmail@gmail.com' );

$mail->Send();
$mail->smtpClose();
?>

SwiftMailer로 이메일에 첨부 파일 보내기

타사 라이브러리 SwiftMailer를 사용하여 첨부 파일이 있는 이메일도 보낼 수 있습니다. 라이브러리는 이메일을 보내는 동안 첨부 파일을 추가하는 attach() 메서드를 제공합니다. 다음 명령을 사용하여 라이브러리를 설치할 수 있습니다.

composer require "swiftmailer/swiftmailer:^6.0"

SwiftMailer와 함께 작동하려면 스크립트에 autoloader.php 파일을 포함해야 합니다. 파일은 다운로드한 파일의 vendor 폴더에 있습니다. Gmail로 이메일을 보내드립니다. Gmail을 사용하려면 SMTP 프로토콜을 사용해야 합니다. 따라서 호스트, 포트 번호 및 프로토콜을 설정하기 위해 Swift_SmtpTransport 클래스로 전송을 생성해야 합니다. 전송을 사용하여 보낸 사람의 이메일과 비밀번호를 설정할 수 있습니다. Swift_Mailer 클래스를 사용하여 전송을 설정하고 Swift_Mailer 클래스를 사용하여 메시지, 수신자 및 첨부 파일을 설정할 수 있습니다.

예를 들어, 작업 파일의 autoload.php 파일은 vendor/autoload.php로 필요합니다. Swift_SmtpTransport 클래스의 $transport 개체를 만들고 호스트를 smtp.gmail.com, 포트 번호를 587, 보안 프로토콜을 tls로 설정합니다. 그런 다음 setUsernamesetPassword 방법을 사용하여 보낸 사람의 이메일과 암호를 설정합니다. 다음으로 Swift_Mailer 클래스의 $mail 개체를 만들고 $transport 개체를 설정합니다. 그런 다음 Swift_Message 클래스의 또 다른 개체 $content를 만들고 주제를 매개변수로 작성합니다. setFrom()setTo() 메서드를 사용하여 보낸 사람의 이메일과 받는 사람의 이메일을 지정합니다. setBody() 메소드에 이메일 본문을 작성하십시오. 그런 다음 attach() 메서드를 사용하여 Swift_Attachment 클래스의 fromPath() 메서드를 사용하여 첨부 파일 경로를 지정합니다. 마지막으로 send() 메소드로 이메일을 보내기 위해 생성한 $mail 객체를 사용합니다. $content 객체를 send() 메소드의 매개변수로 제공하십시오.

이것이 PHP의 SwiftMailer 라이브러리를 사용하여 첨부 파일이 있는 이메일을 보내는 방법입니다.

예제 코드:

require_once 'vendor/autoload.php';

$transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls'))
->setUsername('sendersemail@gmail.com')
->setPassword('password')

$mail = new Swift_Mailer($transport);
$content = (new Swift_Message('Subject'))
->setFrom(['sendersemail@gmail.com' => 'Senders Name'])
->setTo('recieversemail@gmail.com')
->setBody('This is a text')
->attach(Swift_Attachment::fromPath('attachments/project.pdf'));

$result = $mail->send($content);
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn